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
Tengo una tabla que enumera una serie de eventos con las fechas de inicio y finalización correspondientes y otros atributos, por ejemplo:
identificación | start_date | end_date | país | tipo | público |
e01 | 2021/03/13 | 2021/07/19 | Alemania | Exposición | Sí |
e02 | 2021/05/15 | 2021/06/18 | Francia | Mercado | Sí |
e03 | 2021/09/23 | 2021/11/20 | España | Mercado | Sí |
e04 | 2021/04/22 | 2021/08/29 | Italia | Exposición | no |
e05 | 2021/06/19 | 2021/09/25 | España | Mercado | Sí |
e06 | 2021/09/14 | 2021/09/23 | Alemania | Exposición | Sí |
e07 | 2021/08/18 | 2021/10/30 | Alemania | Comité | no |
e08 | 2021/08/27 | 2021/11/15 | Francia | Exposición | no |
e09 | 2021/10/16 | 2021/11/17 | Italia | Comité | Sí |
e10 | 2021/06/20 | 2021/08/22 | Francia | Comité | no |
Necesito crear un gráfico del número de eventos activos en cada uno de los últimos 12 meses, algo como esto:
Estoy luchando por encontrar una forma adecuada de crear el gráfico: no puedo crear una tabla estática intermedia con DAX porque necesito permitir el filtrado de los datos en función de varios atributos y profundizar en los datos reales del evento. Para crear el ejemplo, simplemente duplico cada línea de evento para cada uno de los meses que dura, pero no puedo usar la misma estrategia con los datos reales porque tengo decenas de miles de eventos que abarcan varios meses y con decenas de atributos y realmente no quiero lidiar con medio millón de registros.
¿Existe una manera inteligente de contar los eventos en cada barra de histograma en función de una condición arbitraria? Quiero decir, cada barra básicamente debe contar los eventos donde:
start_date <= end_of_month AND end_date >= start_of_month
pero no puedo encontrar cómo implementarlo. ¿Hay alguna otra forma de resolver este problema?
Gracias de antemano
Solved! Go to Solution.
Gracias, ese es un enfoque interesante. Esto puede minimizar el espacio utilizado para almacenar los datos y mantendría la tabla inicial "limpia" para otros cálculos.
Jugando con las medidas, creo que he encontrado una posible solución utilizando solo los datos originales:
Count of id in month =
VAR __SELECTED = SELECTEDVALUE( 'months'[month])
VAR __MONTH_START = DATE( YEAR( __SELECTED), MONTH( __SELECTED), 1)
VAR __MONTH_END = EOMONTH( __SELECTED, 0)
RETURN
CALCULATE( COUNTA( 'events'[id]),
'events'[start_date] <= __MONTH_END, 'events'[end_date] >= __MONTH_START
)
Necesita una tabla de "meses" con una lista de los nonths que se representaron en el gráfico:
mes
2021/03/01 |
2021/04/01 |
2021/05/01 |
(etc...) |
Esto parece bastante rápido y flexible, ya que puedo crear fácilmente diferentes medidas para diferentes vistas (por ejemplo, eventos que comienzan y terminan en el mismo mes, nuevos eventos para el mes, etc.), pero no estoy seguro de si es lo suficientemente sólido o si traerá algún problema mientras procedo con la implementación.
Un problema que mi solución ha comparado con su propuesta es que devuelve un solo valor para cada punto de datos, por lo que no puedo usar el menú "mostrar punto de datos como tabla" ni navegar por los datos.
Probablemente intentaré implementar ambos en los datos reales y ver cuál se adapta mejor a los objetivos de presentación de informes.
Muchas gracias
Estás en el camino correcto. Necesita generar tablas intermedias, pero debe hacerlo dentro de su medida. Para cada mes del valor del eje x, debe calcular si el evento estuvo activo en ese mes. Esto requiere una tabla desconectada para el valor del eje x. El problema con este enfoque es que tiene que codificar la medida para los valores de cada atributo.
"pero no puedo usar la misma estrategia con los datos reales porque tengo decenas de miles de eventos que abarcan varios meses y con decenas de atributos y realmente no quiero lidiar con medio millón de registros".
El número de atributos no afectará al número de filas, solo ampliará la tabla. Si tienes decenas de miles de eventos y abarcan más de diez meses cada uno, entonces solo terminas con cien mil filas. Incluso 500K filas sigue siendo un número razonablemente pequeño. Además, en este escenario puede realizar todo el trabajo de preparación en Power Query, por lo que solo tiene que hacerlo una vez por actualización.
¿Es eso suficiente para ponerte en marcha o te gustaría ver una implementación de muestra?
Gracias, ese es un enfoque interesante. Esto puede minimizar el espacio utilizado para almacenar los datos y mantendría la tabla inicial "limpia" para otros cálculos.
Jugando con las medidas, creo que he encontrado una posible solución utilizando solo los datos originales:
Count of id in month =
VAR __SELECTED = SELECTEDVALUE( 'months'[month])
VAR __MONTH_START = DATE( YEAR( __SELECTED), MONTH( __SELECTED), 1)
VAR __MONTH_END = EOMONTH( __SELECTED, 0)
RETURN
CALCULATE( COUNTA( 'events'[id]),
'events'[start_date] <= __MONTH_END, 'events'[end_date] >= __MONTH_START
)
Necesita una tabla de "meses" con una lista de los nonths que se representaron en el gráfico:
mes
2021/03/01 |
2021/04/01 |
2021/05/01 |
(etc...) |
Esto parece bastante rápido y flexible, ya que puedo crear fácilmente diferentes medidas para diferentes vistas (por ejemplo, eventos que comienzan y terminan en el mismo mes, nuevos eventos para el mes, etc.), pero no estoy seguro de si es lo suficientemente sólido o si traerá algún problema mientras procedo con la implementación.
Un problema que mi solución ha comparado con su propuesta es que devuelve un solo valor para cada punto de datos, por lo que no puedo usar el menú "mostrar punto de datos como tabla" ni navegar por los datos.
Probablemente intentaré implementar ambos en los datos reales y ver cuál se adapta mejor a los objetivos de presentación de informes.
Muchas gracias
Otro problema con el enfoque de medida es que se recaluta innecesariamente todo el tiempo. Sus datos son inmutables y no necesitan recalenque.
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 |