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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Informe similar a "Máquina del tiempo" para la tabla de hechos versionada

Estoy buscando visualizar el estado de ciertos artículos con el tiempo. Cada elemento tiene su estado registrado en una especie de registro de cambios (ejemplo):

ItemIdActualizadoestado
cuervo12.04.2021abrir
cuervo18.04.2021cerrado
Boogie19.04.2021resuelto
cuervo20.04.2021resuelto
cuervo23.04.2021cerrado

El objetivo es poder producir un conjunto similar de informes basados en medidas sobre estos datos de ejemplo:

fechaRecuento totalConde de "Cerrado"Recuento de "Resuelto"
18.04.2021110
19.04.2021211
20.04.2021202
21.04.2021202
22.04.2021202
23.04.2021211
24.04.2021211
25.04.2021211


Tenga en cuenta que incluso si el historial de versiones no tiene datos para 21 y 22.04.2021, el informe resultante contiene filas correspondientes con valores correctos. La medida debe producir resultado por cualquier punto de granularidad dado (ya sea día o hora o cualquier cosa en general); esto significa que para un informe similar a una tabla con granularidad diaria utilizada en el ejemplo, debe haber filas para cada día.

En general, quiero elegir un punto de tiempo y calcular los agregados requeridos (count() por estado en este ejemplo) sobre los datos tal como existían en este momento. Esto parece ser una tarea bastante común, pero desafortunadamente, no pude encontrar ningún ejemplo.

EDITAR: Datos de ejemplo modificados para incluir el escenario cuando el elemento cambia su estado de ida y vuelta.
EDIT2: Recalcó que no debe haber lagunas en el informe (la medida debe calcularse para cada día consecutivo si usamos la granularidad diaria, para cada hora si usamos por hora y así sucesivamente)

1 ACCEPTED SOLUTION

hola

Puede descargar mi archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png

View solution in original post

11 REPLIES 11
Syndicate_Admin
Administrator
Administrator

No @DmitriiK,

Estos son los pasos que puede seguir:

1. Cree una tabla calculada.

Date = SELECTCOLUMNS('Table',"Date",'Table'[Updated])

2. La relación entre la conexión de dos tablas

3. Cree una columna calculada.

Count of "Closed" =
var _1=CALCULATE(COUNT('Table'[Status]),FILTER(ALL('Table'),'Table'[Status]="Closed"&&'Table'[Updated]=MAX('Date'[Date])))
return
IF(_1=BLANK(),0,_1)
Count of "Resolved" =
var _1=CALCULATE(COUNT('Table'[Status]),FILTER(ALL('Table'),'Table'[Status]="Resolved"&&'Table'[Updated]=MAX('Date'[Date])))
return
IF(_1=BLANK(),0,_1)
Total count = 'Table'[Count of "Closed"]+'Table'[Count of "Resolved"]

resultado:

v-yangliu-msft_0-1619688530228.png

Si los datos se agrupan por horas, he cambiado la presentación de datos sin cambiar la función Dax:

2021.4.291.png

resultado
Los datos se agrupan por número de horas

v-yangliu-msft_2-1619688530237.png

¿Este resultado satisface sus expectativas.

Saludos

Liu Yang

Si este post ayuda, entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola Liu!..

No veo cómo la tabla calculada de este tipo cambia nada - es básicamente lo mismo que la tabla de historial de versiones. En el ejemplo actualizado, el resultado sigue contiene lagunas:

DmitriiK_0-1619692615603.png

El objetivo es obtener el recuento de elementos que tenían un estado específico en un momento específico con la granularidad dada - basado en un registro de "historial de versiones" que no tiene ninguna granularidad específica.

P.S. Por alguna razón no puedo publicar el ejemplo completo aquí; plantea un error sobre el mensaje que contiene caracteres HTML no válidos - que es enfurecedor ya que el mensaje fue totalmente compuesto por el editor incorporado...

Syndicate_Admin
Administrator
Administrator

No @DmitriiK,

Según su descripción, creo algunos datos:

v-yangliu-msft_0-1619591562674.png

Estos son los pasos que puede seguir:

1. Cree la medida.

Count of "Closed" =
var _1=CALCULATE(COUNT('Table'[Status]),FILTER(ALL('Table'),'Table'[Status]="Closed"&&'Table'[Updated]=MAX('Table'[Updated])))
return
IF(_1=BLANK(),0,_1)
Count of "Resolve" =
var _1=CALCULATE(COUNT('Table'[Status]),FILTER('Table','Table'[Status]="Resolved"&&'Table'[Updated]=MAX('Table'[Updated])))
return
IF(_1=BLANK(),0,_1)
Total count =
'Table'[Count of "Closed"]+'Table'[Count of "Resolve"]

2. Resultado.

v-yangliu-msft_1-1619591562677.png

Saludos

Liu Yang

Si este post ayuda, entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola.

Desafortunadamente, esto no funcionará con una tabla de versiones. Una tabla de versiones es una tabla en la que solo se registran los cambios en el estado del elemento: si el elemento no tiene cambios de estado durante un determinado período de tiempo, no hay filas correspondientes.

En los datos de origen de ejemplo contiene filas redundantes: hay una fila para cada elemento y todos los días, incluso si el estado no cambió. Por ejemplo, la 2ª fila aquí es redundante y no estaría presente en una tabla de versiones:

DmitriiK_0-1619604317836.png


Esto podría ser una solución si Power BI permitió combinar una tabla CALENDARAUTO() con una tabla de versiones, pero no es así, la tabla de fechas ni siquiera aparece en la lista de tablas para la operación de combinación.

Por otra parte, ¿qué pasa si necesitamos granularidad antes de la hora en lugar de por día? ¿Por minuto?

Syndicate_Admin
Administrator
Administrator

¿Alguna idea aquí?

Syndicate_Admin
Administrator
Administrator

Hola Ashish. Gracias por el archivo de ejemplo. Traté de entender la lógica de las medidas, sin embargo, parece que hay varios problemas con la solución propuesta:


1. Los datos originales pueden abarcar varios años hasta que DATESYTD no se aplique aquí. Traté de cambiarlo a DATESBETWEEN y el resultado fue inmediatamente incorrecto.

2. El elemento podría cambiar su estado de un lado a otro. Podría estar en el mismo estado más de una vez en un período dado. Si modifica los datos de origen para incluir este caso, los resultados vuelven a ser incorrectos (por ejemplo, valores negativos)

hola

Puede descargar mi archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png

Hola Ashish.

Esto solo funcionaría si la tabla de historial de versiones contiene exactamente una fila por período de fecha que necesita en el informe. En el ejemplo, hay exactamente una fila por día por elemento.

Este no es el caso de los conjuntos de datos reales donde el cambio de estado del elemento no se registra diariamente (por hora, etc.), sino que solo se registra cuando cambia el estado del elemento.

hola

Eso es exactamente lo que hace mi solución. Por favor, estudie los pasos de transformación en el Editor de consultas con mucho cuidado. He transformado sus datos para que aparezcan como una fila por fecha.

Bueno, marcé esto como solución, ya que parecía ser la única, pero me equivoqué. Esta solución solo se aplica cuando cierta suposición sobre los datos de changelog es válida. Por ejemplo, obtendría un error de conversión de tipos si alguna de las fechas del registro de cambios es diferente de 0:00:00 de una fecha determinada (por ejemplo, contiene parte de tiempo):

DmitriiK_0-1620389175097.png

Además, el resultado sería incorrecto si changelog contiene más de un registro para un período de día determinado , debido a la forma en que la transformación analiza los datos.

Esto es muy importante que no se puedan hacer suposiciones con respecto a los datos de origen (changelog). Contiene el historial de versiones en formato de timestamp-item-new status, pero eso es todo. No se garantiza que tenga un solo registro por día, o por hora, o por minuto.

Syndicate_Admin
Administrator
Administrator

hola

Puede descargar mi archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

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.