Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
Estoy totalmente perplejo con esto.
Tengo tres tablas en juego aquí: DimTimes, DimDates y Facts, donde Facts es un montón de cosas que ocurrieron en un momento específico, y las otras dos se explican por sí mismas.
Facts se conecta a DimTimes en TimeKey y a DimDates en Date.
Tiempos oscuros
Hora HoraCubo Media HoraCubo 15MinCubo HoraClave Hora Minuto IsDaytimeShift
12:00 a.m. | 12:00 a.m. | 12:00 a.m. | 12:00 a.m. | 0 | 0 | 0 | N |
12:01 a.m. | 12:00 a.m. | 12:00 a.m. | 12:00 a.m. | 0 | 0 | 1 | N |
... | |||||||
12:16 a.m. | 12:00 a.m. | 12:00 a.m. | 12:15 a.m. | 0 | 0 | 16 | N |
... | |||||||
13:47 | 13:00 | 13:30 | 13:45 | 827 | 13 | 47 | Y |
Hechos
Id DateTime Date TimeKey OtherColumns
1200 | 01/08/2021 09:49 | 8/1/2021 | 589 | |
1200 | 01/08/2021 17:17 | 8/1/2021 | 1037 | |
1200 | 04/08/2021 06:01 | 8/4/2021 | 361 | |
1200 | 04/08/2021 15:29 | 8/4/2021 | 929 | |
1200 | 05/08/2021 06:03 | 8/4/2021 | 363 | |
1200 | 05/08/2021 15:32 | 8/4/2021 | 932 |
Mi objetivo es tener un gráfico de barras con el eje x como DimTimes[HalfHourBucket] y el eje y como el recuento de fechas en las que la marca de tiempo mínima en esa fecha cae en el intervalo de media hora (por ejemplo, la línea roja).
Entonces, para la tabla de hechos de ejemplo, con cubos de media hora desde la medianoche hasta las 11:30 p.m., tendríamos:
Recuento de cubos de media hora
6:00 a.m. | 2 |
9:30 a.m. | 1 |
y todo lo demás 0.
No puedo conseguir que el DAX coopere. O bien rellena el gráfico de barras con el valor mínimo de cada cubo, como
Recuento de cubos de media hora
6:00 a.m. | 2 |
9:30 a.m. | 1 |
15:00 | 1 |
15:30 | 1 |
17:00 | 1 |
y todo lo demás 0,
o simplemente devuelve un recuento de 1 en cada cubo de media hora porque hay 1 valor mínimo (6:01 a.m.).
Si creo una tabla en Power Query en la que cada fila es un identificador y una fecha, con la hora mínima para esa fecha en una tercera columna y la media hora de inicio asociada en una cuarta, Power BI cuenta las fechas según lo esperado con esta medida:
CALCULATE( COUNT(GroupedTable[StartHalfHour]) )
Buscando solo la fecha mínima (y sin intentar contarla todavía), si la fecha está incluida en el objeto visual, esto funciona:
VAR vMinByDate = CALCULATE( MINX( DimDates , MIN(Facts[Time]) ) , REMOVEFILTERS(DimTimes) )
pero tan pronto como quito la fecha del objeto visual, esto devuelve el tiempo mínimo en todo el conjunto de datos, punto.
Lo he probado con ADDCOLUMNS, funciones de iterador solas, SUMMARIZE, GROUPBY y otras combinaciones en el mismo, junto con mover los REMOVEFILTERS(DimTimes) a diferentes ubicaciones en las fórmulas, y usar DimTimes o DimTimes[HalfHourBucket] en REMOVEFILTERS().
El siguiente código casi funciona, pero devuelve aleatoriamente valores incorrectos de los que no puedo sacar cara o cruz:
dev_StartHalfHourCount = // count the number of dates where the half hour bucket was the minimum time /* VAR vMinByDate = // this works in table of date, time, value CALCULATE( MINX( DimDates , MIN(Facts[Time]) ) , REMOVEFILTERS(DimTimes) ) */ VAR x = // this works most of the time, but returns wonky values randomly // doesn't work to define vMinByDate outside of the iterator SUMX( VALUES(DimDates[Date]) , VAR vMinByDateInternal = CALCULATE( MINX( VALUES(Facts[Date]) , MIN(Facts[Time]) ) , REMOVEFILTERS(DimTimes) ) RETURN IF( (not ISBLANK(vMinByDateInternal)) && SELECTEDVALUE(DimTimes[Half Hour Bucket]) <= vMinByDateInternal && vMinByDateInternal < SELECTEDVALUE(DimTimes[Half Hour Bucket]) + TIME(0, 30, 0) , 1 , BLANK() ) ) RETURN x
Por ejemplo, para un identificador específico, el valor de 3:30PM debe ser 56, pero devuelve 62. (El número de fechas distintas en ese intervalo de tiempo para esa identificación es 136, y el número de horas distintas combinadas con una de las otras columnas es 111, por lo que no tengo idea de dónde provienen las 6 adicionales).
Solved! Go to Solution.
Sin crear la relación, el código sugerido devuelve un total acumulado que comienza desde el último cubo de media hora hasta el primero.
Solo busco cuántas veces un cubo de media hora en particular abarcó la marca de tiempo más temprana en una fecha determinada. Por lo tanto, Joe Schmoe puede haber trabajado un turno de 9 a.m. a 3 p.m. cinco días en una semana, pero el cubo de las 10:00 a.m. sería la hora de inicio 0 veces en esa semana, a pesar de que trabajó durante el cubo de las 10:00 a.m. los cinco días.
Un colega acaba de resolverlo, con la relación intacta:
Cree una columna auxiliar en la tabla Hechos:
Hola @otis_pc ,
Siga los pasos a continuación para obtenerlo:
1. No cree ninguna relación entre DimTimes y la tabla Facts
2. Cree una medida como se muestra a continuación
Measure =
VAR _time =
SELECTEDVALUE ( 'DimTimes'[HalfHourBucket] )
RETURN
CALCULATE (
COUNT ( 'Facts'[Id] ),
FILTER (
'Facts',
TIMEVALUE ( 'Facts'[DateTime] ) >= _time
&& TIMEVALUE ( 'Facts'[DateTime] )
<= TIMEVALUE ( 'Facts'[DateTime] ) + TIME ( 0, 30, 0 )
)
)
3. Cree un gráfico de barras (eje X: DimTimes[HalfHourBucket] Eje Y: [Medir])
Si el anterior no puede ayudarlo a obtener el resultado esperado, proporcione algunos datos brutos En las tablas (Excluir datos confidenciales) con Mensaje de texto formato y el resultado esperado con ejemplos especiales y capturas de pantalla. Sería útil encontrar la solución. YPuede consultar el siguiente enlace para compartir la información requerida:
Proporcionar datos de ejemplo en el foro de Power BI
Y es mejor si puede compartir un archivo pbix simplificado. Puede consultar el siguiente enlace para subir el archivo a la comunidad. Gracias.
Saludos
Sin crear la relación, el código sugerido devuelve un total acumulado que comienza desde el último cubo de media hora hasta el primero.
Solo busco cuántas veces un cubo de media hora en particular abarcó la marca de tiempo más temprana en una fecha determinada. Por lo tanto, Joe Schmoe puede haber trabajado un turno de 9 a.m. a 3 p.m. cinco días en una semana, pero el cubo de las 10:00 a.m. sería la hora de inicio 0 veces en esa semana, a pesar de que trabajó durante el cubo de las 10:00 a.m. los cinco días.
Un colega acaba de resolverlo, con la relación intacta:
Cree una columna auxiliar en la tabla Hechos:
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |