Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola a todos
Tengo 2 tablas de hechos que almacenan información abierta y enviada. Usando estas tablas, puedo mostrar cuántos mensajes se enviaron/abrieron en una fecha específica.
También hay una tabla de dimensiones separada que almacena información de fecha. La dimensión de fecha se une a las 2 tablas de hechos en los campos de fecha. Utilizo el campo de fecha de la tabla de dimensiones como segmentación para filtrar y/o mostrar los datos a lo largo del tiempo.
fact_Sent
Fecha | CountSent (Conteo enviado) | Message_id |
01/01/2023 | 100 | A |
01/01/2023 | 200 | B |
fact_Open
Fecha | CountOpen (en inglés) | Message_id |
01/01/2023 | 50 | A |
02/01/2023 | 20 | A |
01/01/2023 | 40 | B |
Puedo construir una simple muestra visual:
Message_id | Fecha | CountSent (Conteo enviado) | CountOpen (en inglés) |
A | 01/01/2023 | 100 | 50 |
A | 02/01/2023 | NULO | 20 |
B | 01/01/2023 | 200 | 40 |
Según la tabla anterior, un mensaje se envía en un día específico, pero la apertura puede ocurrir durante varios días.
Ahora quería calcular la tasa de apertura ( CountOpen/CountSent ) pero obtengo valores INFINITY para los días en los que CountSent es NULL.
Entiendo que debería poder crear una medida para calcular la tasa de apertura, pero estoy luchando por construir su lógica. Esencialmente, la lógica debe ser 'en la fecha X, divida 'CountOpen de la fecha X) por CountSent'.
Los resultados que estoy tratando de obtener son:
Message_id | Fecha | CountSent (Conteo enviado) | CountOpen (en inglés) | Tasa de apertura |
A | 01/01/2023 | 100 | 50 | 50% |
A | 02/01/2023 | NULO | 20 | 20% |
B | 01/01/2023 | 200 | 40 | 20% |
¿Alguna sugerencia?
Gracias.
Puede consultar la siguiente solución.
1.Cree una tabla de tipos de message_id
2.Crear la relación entre las tablas
3.Cree las siguientes medidas:
Sum_open = SUM(fact_Open[CountOpen])
Sum_sent = SUM(fact_Sent[CountSent])
Divide_ =
VAR _predate =
IF (
OR ( [Sum_open] <> BLANK (), [Sum_sent] <> BLANK () ),
MAXX (
FILTER (
ALLSELECTED ( fact_Sent ),
[Message_id]
IN VALUES ( 'Type'[Message_id] )
&& [Date] < SELECTEDVALUE ( 'Date'[Date] )
&& [CountSent] <> BLANK ()
),
[Date]
)
)
VAR b =
MAXX (
FILTER (
ALLSELECTED ( fact_Sent ),
[Message_id]
IN VALUES ( 'Type'[Message_id] )
&& [Date] = _predate
),
[CountSent]
)
RETURN
IF (
[Sum_sent] <> BLANK (),
DIVIDE ( [Sum_open], [Sum_sent] ),
DIVIDE ( [Sum_open], b )
)
Salida
¡Saludos!
Yolo Zhu
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Para su referencia.
Paso 1: Agrego una relación.
Paso 2: Hago una medida.
% de apertura = DIVIDE(SUM('fact_Open'[CountOpen]),SUM('fact_Sent'[CountSent]))
Paso 3: Hago una imagen de 'Tabla'.