Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola equipo de Power BI,
Estoy construyendo la lógica para entender cómo los diferentes eventos influyen en las actitudes del cliente.
Tengo la tabla de eventos donde veo la fecha de cada evento y la puntuación que pone cada cliente. El objetivo es calcular la puntuación media antes de la "sustitución" y la puntuación media después de "reemplazo". Así que sé qué tipo de impacto tiene ese evento en la experiencia del cliente. Los eventos pueden variar por lo que será bueno tener un filtro en el que pueda hacer clic después.
Le agradeceré mucho cualquier ayuda.
Solved! Go to Solution.
Pruebe estas medidas:
Avg Score before Event =
VAR vEvent = ALLSELECTED ( Event[Touchpoint] )
VAR vPerson =
MAX ( Event[Person ID] )
VAR vEventRow =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Touchpoint] = vEvent
)
VAR vEventDate =
MAXX ( vEventRow, Event[Date] )
VAR vPreEventRows =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Date] < vEventDate
)
VAR vAverage =
AVERAGEX ( vPreEventRows, Event[Score] )
RETURN
vAverage
Avg Score after Event =
VAR vEvent = ALLSELECTED ( Event[Touchpoint] )
VAR vPerson =
MAX ( Event[Person ID] )
VAR vEventRow =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Touchpoint] = vEvent
)
VAR vEventDate =
MAXX ( vEventRow, Event[Date] )
VAR vPostEventRows =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Date] > vEventDate
)
VAR vAverage =
AVERAGEX ( vPostEventRows, Event[Score] )
RETURN
vAverage
Cree una segmentación de datos para Touchpoint:
Proud to be a Super User!
Pruebe estas medidas:
Avg Score before Event =
VAR vEvent = ALLSELECTED ( Event[Touchpoint] )
VAR vPerson =
MAX ( Event[Person ID] )
VAR vEventRow =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Touchpoint] = vEvent
)
VAR vEventDate =
MAXX ( vEventRow, Event[Date] )
VAR vPreEventRows =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Date] < vEventDate
)
VAR vAverage =
AVERAGEX ( vPreEventRows, Event[Score] )
RETURN
vAverage
Avg Score after Event =
VAR vEvent = ALLSELECTED ( Event[Touchpoint] )
VAR vPerson =
MAX ( Event[Person ID] )
VAR vEventRow =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Touchpoint] = vEvent
)
VAR vEventDate =
MAXX ( vEventRow, Event[Date] )
VAR vPostEventRows =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Date] > vEventDate
)
VAR vAverage =
AVERAGEX ( vPostEventRows, Event[Score] )
RETURN
vAverage
Cree una segmentación de datos para Touchpoint:
Proud to be a Super User!
Estimado @DataInsights
Muchas gracias por la solución. Funciona como magia.
Pero hay algo que no funciona para mí. No da ningún total. Si elimino PERSON ID de la tabla, todos los cálculos desaparecen. Necesito mostrar los datos resumidos antes y después de los eventos como un gráfico de columnas.
¿Necesito otro cálculo para que funcione? Porque no recuerdo nada que pueda hacer un total de una medida.
Muchas gracias de nuevo y lo siento por su tiempo
¿Confirmaría cómo se debe calcular el total? Supongo que es la suma de todas las puntuaciones (para filas relevantes) divididas por el número de filas relevantes. Por ejemplo, la puntuación Promedio total antes de Reemplazo se calcularía de la siguiente manera:
(6 + 3 + 4 + 9 + 😎 / 5 x 6
Proud to be a Super User!
Vamos a probar eso sin el emoji automático:
( 6 + 3 + 4 + 9 + 8 ) / 5 = 6
Proud to be a Super User!
Prueba estas medidas. Deberá crear una tabla Person (una fila por ID de persona) y unirla a la tabla de datos.
Avg Score before Event =
VAR vEvent = ALLSELECTED ( Event[Touchpoint] )
VAR vAverage =
AVERAGEX ( Person,
VAR vPerson = Person[Person ID]
VAR vEventRow =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Touchpoint] = vEvent
)
VAR vEventDate =
MAXX ( vEventRow, Event[Date] )
VAR vPreEventRows =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Date] < vEventDate
)
RETURN
AVERAGEX ( vPreEventRows, Event[Score] )
)
RETURN
vAverage
Avg Score after Event =
VAR vEvent = ALLSELECTED ( Event[Touchpoint] )
VAR vAverage =
AVERAGEX ( Person,
VAR vPerson = Person[Person ID]
VAR vEventRow =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Touchpoint] = vEvent
)
VAR vEventDate =
MAXX ( vEventRow, Event[Date] )
VAR vPostEventRows =
FILTER (
ALL ( Event ),
Event[Person ID] = vPerson
&& Event[Date] > vEventDate
)
RETURN
AVERAGEX ( vPostEventRows, Event[Score] )
)
RETURN
vAverage
Proud to be a Super User!
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |