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 a todos
Soy relativamente nuevo en Power BI (solo se ha estado usando durante 5 meses).
Estoy tratando con datos relacionados con encuestas del sitio, y a cada encuesta se le asigna una puntuación basada en su calidad.
Se me ha pedido que rastree la puntuación media a lo largo del tiempo, que era lo suficientemente simple como para hacerlo usando la siguiente medida:
LocationID | 2015 | 2016 | 2017 | 2018 | 2019 |
1 | 14/04/2016 | 15/03/2017 | 15/03/2017 | 01/04/2019 | |
2 | 01/06/2015 | 01/06/2015 | 29/05/2017 | 03/06/2018 | 03/06/2018 |
3 | 11/11/2017 | 11/11/2017 | 14/10/2019 |
Como puedes ver haciendo exactamente lo que quiero, en cada año regresando la fecha de la encuesta más reciente para cada loaction hasta ese año. Lo que tengo que hacer ahora es devolver las puntuaciones de la encuesta para esas encuestas para que pueda promediarlas. Aquí es donde me he quedado completamente atascado. El objetivo final es trazar la puntuación media de la encuesta a lo largo del tiempo en un gráfico de líneas, pero solo cada uno utilizando la encuesta más reciente realizada.
He intentado calcular el promedio de la puntuación en la que la fecha del evento es la medida anterior, pero simplemente no devuelve ningún dato.
Lo sentimos, esto fue bastante largo viento y si no me he explicado muy bien por favor hágamelo saber y voy a proporcionar cualquier información adicional requerida.
Gracias de antemano
Solved! Go to Solution.
Hola @AlB ,
Después de ajustar su medida variar ligeramente lo conseguí para trabajar!
AT SURVEY ACC_3 =
CALCULATE (
AVERAGEX (
FILTER (
CalcTableSiteVisitsWithRatings,
VAR currentYear_ =
CALCULATE(
MAX ( 'Date'[Date] ),
ALLSELECTED('Date')
)
VAR latestInYear_ =
CALCULATE (
MAX ( CalcTableSiteVisitsWithRatings[EventDate] ),
CalcTableSiteVisitsWithRatings[EventDate] <= currentYear_,
ALLEXCEPT (
CalcTableSiteVisitsWithRatings,
CalcTableSiteVisitsWithRatings[LocationID]
)
)
RETURN
IF (
CalcTableSiteVisitsWithRatings[EventDate] = latestInYear_,
TRUE (),
FALSE ()
)
),
CalcTableSiteVisitsWithRatings[AtSurveyRiskRatingReverseRank]
),
FILTER ( ALL ( 'Date' ), 'Date'[Date] <= MAX ( 'Date'[Date] ) )
)
Cambié currentYear_ para resolver la última fecha del año desde la tabla Date en lugar de usar el eventdate, luego cambié latestInYear a MAX las fechas hasta e incluyendo currentYear_
Ahora estoy obteniendo el resultado deseado. Muchas gracias por su ayuda, estuviste increíblemente cerca teniendo en cuenta mi descripción menos que ideal del problema 🙂 también he aprendido mucho de jugar con su medida.
Hola @ElChambre20
Una opción sería crear una versión filtrada de la tabla original, seleccionando solo las filas que tienen la última encuesta para cada año (para cada identificador de ubicación, si lo entiendo correctamente). A continuación, ejecute un AVERAGEX en esa tabla. Algo en la línea de:
Measure =
CALCULATE (
AVERAGEX (
FILTER (
CalcTableSiteVisitsWithRatings,
VAR currentYear_ =
YEAR ( CalcTableSiteVisitsWithRatings[EventDate] )
VAR latestInYear_ =
CALCULATE (
MAX ( CalcTableSiteVisitsWithRatings[EventDate] ),
YEAR ( CalcTableSiteVisitsWithRatings[EventDate] ) = currentYear_,
ALLEXCEPT (
CalcTableSiteVisitsWithRatings,
CalcTableSiteVisitsWithRatings[LocationID]
)
)
RETURN
IF (
CalcTableSiteVisitsWithRatings[EventDate] = latestInYear_,
TRUE (),
FALSE ()
)
),
CalcTableSiteVisitsWithRatings[AtSurveyRiskRatingReverseRank]
),
FILTER ( ALL ( 'Date' ), 'Date'[Date] <= MAX ( 'Date'[Date] ) )
)
que sigue la lógica de la primera medida, pero agregando el filtrado en la tabla base para el AVERAGEX para seleccionar solo las últimas encuestas por año. Necesitaría datos para realizar una prueba rápida. Puede ajustarlo usted mismo según sea necesario.
Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.
Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
Gracias @AlB ,
Gracias por la medida que escribiste, ciertamente aprendí una cosa o 2 sobre filtrar la tabla antes de calcular el promedio por lo que ha sido realmente útil.
Desafortunadamente, he estado jugando con la medida que usted proporcionó durante unas horas y por desgracia todavía está devolviendo el promedio de todas las encuestas hasta e incluyendo el año actual, no sólo la última encuesta:
Si ves, en la segunda fila, la encuesta de 2017 tenía una puntuación de 4, así que me gustaría que mostrara 4 aquí, pero está mostrando 3.5 ya que es el promedio de las encuestas 2016 (Puntuación 3) y 2017 (Puntuación 4).
He intentado ajustar su medida yo mismo, pero tengo miedo de que realmente no he llegado a ninguna parte con ella. Traté de ajustarlo a en lugar de resolver el promedio, simplemente devolver un "1" donde la fecha del evento era la última fecha (Usando un SUMX en lugar de AVERAGEX) y luego usarlo como un filtro, pero tampoco funcionó.
Cualquier otra ayuda que pueda proporcionar sería muy apreciada.
Gracias
Necesitaría algunos datos de muestra para probar la medida en ese entonces. Y una explicación clara de cuál es el resultado esperado en los datos de la muestra y por qué. No estoy seguro de haber entendido completamente los requisitos.
Proporcione sus datos de ejemplo en formato text-tabular además de (o en lugar de) las capturas de pantalla para que se puedan copiar fácilmente.
Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.
Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
Hola @AlB ,
Después de ajustar su medida variar ligeramente lo conseguí para trabajar!
AT SURVEY ACC_3 =
CALCULATE (
AVERAGEX (
FILTER (
CalcTableSiteVisitsWithRatings,
VAR currentYear_ =
CALCULATE(
MAX ( 'Date'[Date] ),
ALLSELECTED('Date')
)
VAR latestInYear_ =
CALCULATE (
MAX ( CalcTableSiteVisitsWithRatings[EventDate] ),
CalcTableSiteVisitsWithRatings[EventDate] <= currentYear_,
ALLEXCEPT (
CalcTableSiteVisitsWithRatings,
CalcTableSiteVisitsWithRatings[LocationID]
)
)
RETURN
IF (
CalcTableSiteVisitsWithRatings[EventDate] = latestInYear_,
TRUE (),
FALSE ()
)
),
CalcTableSiteVisitsWithRatings[AtSurveyRiskRatingReverseRank]
),
FILTER ( ALL ( 'Date' ), 'Date'[Date] <= MAX ( 'Date'[Date] ) )
)
Cambié currentYear_ para resolver la última fecha del año desde la tabla Date en lugar de usar el eventdate, luego cambié latestInYear a MAX las fechas hasta e incluyendo currentYear_
Ahora estoy obteniendo el resultado deseado. Muchas gracias por su ayuda, estuviste increíblemente cerca teniendo en cuenta mi descripción menos que ideal del problema 🙂 también he aprendido mucho de jugar con su medida.
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 |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |