Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
Syndicate_Admin
Administrator
Administrator

Graficar dinámicamente eventos basados en fechas

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ónstart_dateend_datepaístipopúblico
e012021/03/132021/07/19AlemaniaExposición
e022021/05/152021/06/18FranciaMercado
e032021/09/232021/11/20EspañaMercado
e042021/04/222021/08/29ItaliaExposiciónno
e052021/06/192021/09/25EspañaMercado
e062021/09/142021/09/23AlemaniaExposición
e072021/08/182021/10/30AlemaniaComiténo
e082021/08/272021/11/15FranciaExposiciónno
e092021/10/162021/11/17ItaliaComité
e102021/06/202021/08/22FranciaComiténo

Necesito crear un gráfico del número de eventos activos en cada uno de los últimos 12 meses, algo como esto:

dlix_0-1637759341462.png

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

1 ACCEPTED 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

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

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?

Lo pensé un poco más, podría ser mejor separar ambas tablas: la tabla de encabezado de eventos y la tabla de eventos. De esa manera, ahorra en almacenamiento y puede hacer informes más fáciles a nivel de encabezado.

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.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors