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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Syndicate_Admin
Administrator
Administrator

Ejecución de la suma total con una columna de indicador de hora actual

aaronzheng_0-1634063284499.png

Hola tengo una tabla llamada FLA con aplicaciones por estado con columnas de fecha y hora. También hay una columna current_hour_flag que muestra 1 si la hora es la hora actual. Por ejemplo, la última fila tiene un valor de indicador de hora actual de 1 porque 10:00 am era la hora actual.

Esta es mi medida de runningtotal que resume todo el recuento de aplicaciones desde el día anterior hasta cada hora.

RT2 = CALCULATE(
    SUM('FLA'[ApplicationCount])
    ,FILTER(
            ALLSELECTED(FLA),
             FLA[Time] <= MAX(FLA[Time])
              && FLA[Date] = MAX(FLA[Date])
          )
     )


Mi problema es que con la columna de indicador de hora actual, solo devuelve el recuento de aplicaciones a esa hora, en lugar de la suma de los recuentos de aplicaciones del día hasta esa hora. Por ejemplo, la medida devuelve 141 en lugar de 768 (Suma de 12:00 am a 10:00 am, consulte la primera captura de pantalla)

aaronzheng_1-1634063652419.png

141 en lugar de 768 previsto.

Gracias de antemano.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hay @aaronzheng

Probé mi teoría esta mañana y, si entiendo lo que quieres, que es mostrar todas las banderas de hora actuales de los últimos n días, todo lo que necesitas hacer es crear una columna calculada que diga devolver la fecha y hora actuales si es igual a la bandera de hora actual.

col_Current_Hour_Flag = IF ( Tabla1[Current_Hour_Flag] = 1 , Tabla1[ApplicationHourEST] , BLANK() )

La salida le da la hora actual y, cuando se agrega a la imagen con la medida que creé en la publicación anterior siendo mea_Cumulative_Day,le da el total acumulado a la hora actual para la "Bandera de hora actual". La nueva columna utiliza ApplicationHourEST y solo presenta una fecha/hora si el indicador de hora actual es true y se utiliza esta nueva columna como eje X. Importante, asegúrese de convertir la salida a Data/Type = Date/Time y, a continuación, cuando la arrastre como el eje X en el objeto visual, cámbielo de Jerarquía de fechas a Fecha/Hora estándar.

Noté una cosa en mi medida de mea_Cumulative_Day anterior en que no agregó ApplicationCount entre las 00:00 y la 01:00 o el ApplicationCount en el parámetro 09:00. La razón de las 09:00 es porque incluye todos los recuentos > las 09:00 y < las 10:00. Pero, para obtener el conteo 503, he modificado mi medida anterior a la siguiente:

mea_Cumulative_Day = 

VAR _CurTime = MAX ( 'Table1'[ApplicationHourEST] ) RETURN IF ( 
        TIMEVALUE ( _CurTime ) <> TIME ( 0 , 0 , 0 ) ,
            CALCULATE ( SUM (
                Table1[ApplicationCount] ),
                FILTER (
                    ALLSELECTED ( Table1 ),
                    AND ( Table1[ApplicationHourEST] >= DATEVALUE ( _CurTime ) , 'Table1'[ApplicationHourEST] <= _CurTime )
                ) ) , CALCULATE ( SUM (
                Table1[ApplicationCount] ) + 0 ,
                FILTER (
                    ALLSELECTED ( Table1 ) ,
                    DATEVALUE ( Tabla1[ApplicationHourEST] ) = DATEVALUE ( _CurTime ) - 1 )
                )
            )

TheoC_0-1634588416616.png

TheoC_1-1634588416618.png

En el caso de que su "Indicador de hora actual" sea una medida, simplemente convierta la columna calculada en una medida. En mis datos, he configurado el indicador de hora actual como una columna, por lo tanto, he utilizado esto como la razón para crear una columna calculada en este ejemplo a continuación.

Por favor, acepte esto como una solución si es lo que busca.

Gracias

Seguir

View solution in original post

21 REPLIES 21
Syndicate_Admin
Administrator
Administrator

Hay @aaronzheng

Probé mi teoría esta mañana y, si entiendo lo que quieres, que es mostrar todas las banderas de hora actuales de los últimos n días, todo lo que necesitas hacer es crear una columna calculada que diga devolver la fecha y hora actuales si es igual a la bandera de hora actual.

col_Current_Hour_Flag = IF ( Tabla1[Current_Hour_Flag] = 1 , Tabla1[ApplicationHourEST] , BLANK() )

La salida le da la hora actual y, cuando se agrega a la imagen con la medida que creé en la publicación anterior siendo mea_Cumulative_Day,le da el total acumulado a la hora actual para la "Bandera de hora actual". La nueva columna utiliza ApplicationHourEST y solo presenta una fecha/hora si el indicador de hora actual es true y se utiliza esta nueva columna como eje X. Importante, asegúrese de convertir la salida a Data/Type = Date/Time y, a continuación, cuando la arrastre como el eje X en el objeto visual, cámbielo de Jerarquía de fechas a Fecha/Hora estándar.

Noté una cosa en mi medida de mea_Cumulative_Day anterior en que no agregó ApplicationCount entre las 00:00 y la 01:00 o el ApplicationCount en el parámetro 09:00. La razón de las 09:00 es porque incluye todos los recuentos > las 09:00 y < las 10:00. Pero, para obtener el conteo 503, he modificado mi medida anterior a la siguiente:

mea_Cumulative_Day = 

VAR _CurTime = MAX ( 'Table1'[ApplicationHourEST] ) RETURN IF ( 
        TIMEVALUE ( _CurTime ) <> TIME ( 0 , 0 , 0 ) ,
            CALCULATE ( SUM (
                Table1[ApplicationCount] ),
                FILTER (
                    ALLSELECTED ( Table1 ),
                    AND ( Table1[ApplicationHourEST] >= DATEVALUE ( _CurTime ) , 'Table1'[ApplicationHourEST] <= _CurTime )
                ) ) , CALCULATE ( SUM (
                Table1[ApplicationCount] ) + 0 ,
                FILTER (
                    ALLSELECTED ( Table1 ) ,
                    DATEVALUE ( Tabla1[ApplicationHourEST] ) = DATEVALUE ( _CurTime ) - 1 )
                )
            )

TheoC_0-1634588416616.png

TheoC_1-1634588416618.png

En el caso de que su "Indicador de hora actual" sea una medida, simplemente convierta la columna calculada en una medida. En mis datos, he configurado el indicador de hora actual como una columna, por lo tanto, he utilizado esto como la razón para crear una columna calculada en este ejemplo a continuación.

Por favor, acepte esto como una solución si es lo que busca.

Gracias

Seguir

Syndicate_Admin
Administrator
Administrator

Allí, @aaronzheng



Mi problema es que con la columna de indicador de hora actual, solo devuelve el recuento de aplicaciones a esa hora, en lugar de la suma de los recuentos de aplicaciones del día hasta esa hora. Por ejemplo, la medida devuelve 141 en lugar de 768 (Suma de 12:00 am a 10:00 am, consulte la primera captura de pantalla)

aaronzheng_1-1634063652419.png

141 en lugar de 768 previsto.


No creo que necesite hacer ningún cambio en sus medidas.

Si entiendo sus requisitos correctamente, debe calcular el total de ejecución del recuento de aplicaciones del día hasta una hora determinada.
Tus medidas son exactamente lo que quieres. No hice ningún cambio en su medida, y obtuve los resultados que satisfacen plenamente sus necesidades.

La captura de pantalla anterior también muestra 49 como el recuento de aplicaciones para CA el 10/9/2021 a las 9:00 am, pero quiero que muestre 510 ya que la suma de la aplicación cuenta el 10/9/2021 hasta las 9:00 am. 510 es la suma de los recuentos de aplicaciones (3ª columna) que se muestra a continuación en esta captura de pantalla:

1)--->768

2)--->510

vangzhengmsft_0-1634636682153.pngvangzhengmsft_1-1634636695478.png

vangzhengmsft_2-1634636702061.png

Tal vez cometió un error en algunas operaciones, pero su medida es completamente correcta.

Consulte el archivo adjunto a continuación para obtener más detalles. Espero que esto ayude.

Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng


Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Hola, tenías razón en que mi medida era correcta. La columna de la hora actual de Theo hizo el truco y resolvió mi problema.

@v-angzheng-msft, si lee algunas de las otras publicaciones, la solución solo requiere que se muestre la cantidad a la hora actual. He preparado lo siguiente que se ajusta a los requisitos:

_______

Hay @aaronzheng

Probé mi teoría esta mañana y, si entiendo lo que quieres, que es mostrar todas las banderas de hora actuales de los últimos n días, todo lo que necesitas hacer es crear una columna calculada que diga devolver la fecha y hora actuales si es igual a la bandera de hora actual.

col_Current_Hour_Flag = IF ( Tabla1[Current_Hour_Flag] = 1 , Tabla1[ApplicationHourEST] , BLANK() )

La salida le da la hora actual y, cuando se agrega a la imagen con la medida que creé en la publicación anterior siendo mea_Cumulative_Day,le da el total acumulado a la hora actual para la "Bandera de hora actual". La nueva columna utiliza ApplicationHourEST y solo presenta una fecha/hora si el indicador de hora actual es true y se utiliza esta nueva columna como eje X. Importante, asegúrese de convertir la salida a Data/Type = Date/Time y, a continuación, cuando la arrastre como el eje X en el objeto visual, cámbielo de Jerarquía de fechas a Fecha/Hora estándar.

Noté una cosa en mi medida de mea_Cumulative_Day anterior en que no agregó ApplicationCount entre las 00:00 y la 01:00 o el ApplicationCount en el parámetro 09:00. La razón de las 09:00 es porque incluye todos los recuentos > las 09:00 y < las 10:00. Pero, para obtener el conteo 503, he modificado mi medida anterior a la siguiente:

mea_Cumulative_Day = 

VAR _CurTime = MAX ( 'Table1'[ApplicationHourEST] ) RETURN IF ( 
        TIMEVALUE ( _CurTime ) <> TIME ( 0 , 0 , 0 ) ,
            CALCULATE ( SUM (
                Table1[ApplicationCount] ),
                FILTER (
                    ALLSELECTED ( Table1 ),
                    AND ( Table1[ApplicationHourEST] >= DATEVALUE ( _CurTime ) , 'Table1'[ApplicationHourEST] <= _CurTime )
                ) ) , CALCULATE ( SUM (
                Table1[ApplicationCount] ) + 0 ,
                FILTER (
                    ALLSELECTED ( Table1 ) ,
                    DATEVALUE ( Tabla1[ApplicationHourEST] ) = DATEVALUE ( _CurTime ) - 1 )
                )
            )

TheoC_0-1634588416616.png

TheoC_1-1634588416618.png

En el caso de que su "Indicador de hora actual" sea una medida, simplemente convierta la columna calculada en una medida. En mis datos, he configurado el indicador de hora actual como una columna, por lo tanto, he utilizado esto como la razón para crear una columna calculada en este ejemplo a continuación.

Por favor, acepte esto como una solución si es lo que busca.

Gracias

Seguir

Syndicate_Admin
Administrator
Administrator

Hay @aaronzheng

Probé mi teoría esta mañana y, si entiendo lo que quieres, que es mostrar todas las banderas de hora actuales de los últimos n días, todo lo que necesitas hacer es crear una columna calculada que diga devolver la fecha y hora actuales si es igual a la bandera de hora actual.

col_Current_Hour_Flag = IF ( Tabla1[Current_Hour_Flag] = 1 , Tabla1[ApplicationHourEST] , BLANK() )

La salida le da la hora actual y, cuando se agrega a la imagen con la medida que creé en la publicación anterior siendo mea_Cumulative_Day,le da el total acumulado a la hora actual para la "Bandera de hora actual". La nueva columna utiliza ApplicationHourEST y solo presenta una fecha/hora si el indicador de hora actual es true y se utiliza esta nueva columna como eje X. Importante, asegúrese de convertir la salida a Data/Type = Date/Time y, a continuación, cuando la arrastre como el eje X en el objeto visual, cámbielo de Jerarquía de fechas a Fecha/Hora estándar.

Noté una cosa en mi medida de mea_Cumulative_Day anterior en que no agregó ApplicationCount entre las 00:00 y la 01:00 o el ApplicationCount en el parámetro 09:00. La razón de las 09:00 es porque incluye todos los recuentos > las 09:00 y < las 10:00. Pero, para obtener el conteo 503, he modificado mi medida anterior a la siguiente:

mea_Cumulative_Day = 

VAR _CurTime = MAX ( 'Table1'[ApplicationHourEST] ) RETURN IF ( 
        TIMEVALUE ( _CurTime ) <> TIME ( 0 , 0 , 0 ) ,
            CALCULATE ( SUM (
                Table1[ApplicationCount] ),
                FILTER (
                    ALLSELECTED ( Table1 ),
                    AND ( Table1[ApplicationHourEST] >= DATEVALUE ( _CurTime ) , 'Table1'[ApplicationHourEST] <= _CurTime )
                ) ) , CALCULATE ( SUM (
                Table1[ApplicationCount] ) + 0 ,
                FILTER (
                    ALLSELECTED ( Table1 ) ,
                    DATEVALUE ( Tabla1[ApplicationHourEST] ) = DATEVALUE ( _CurTime ) - 1 )
                )
            )

TheoC_0-1634588416616.png

TheoC_1-1634588416618.png

En el caso de que su "Indicador de hora actual" sea una medida, simplemente convierta la columna calculada en una medida. En mis datos, he configurado el indicador de hora actual como una columna, por lo tanto, he utilizado esto como la razón para crear una columna calculada en este ejemplo a continuación.

Por favor, acepte esto como una solución si es lo que busca.

Gracias

Seguir

Hola Theo, tu columna de bandera de hora calculada resolvió mi problema y pude usar mi medida anterior. Sin embargo, ¿sabrías cómo ajustarlo para que pudiera tener una cortadora de tiempo que cambiaría la hora actual a mi selección?

aaronzheng_0-1634826211441.png

En otras palabras, muestre la suma del recuento de aplicaciones de los últimos 30 días a la hora que seleccione.





@aaronzheng genial escuchar que funcionó, compañero! ¡Probablemente fue uno de los más complejos en los que tengo que trabajar aquí en la Comunidad! Siempre es divertido aprender cosas nuevas, ¡así que gracias por publicar!

No conozco una forma de vincular los dos debido a que la Bandera de hora actual dicta la forma en que funciona la medida para devolverlos (es decir, es progresivo de acuerdo con la hora actual).

Sin embargo, creo que puede haber una forma en la que pueda crear una medida dinámica basada en los valores seleccionados de Slicers. Entonces, la forma en que desea establecer la medida con una lógica que puede aplicar lo siguiente:

Medida dinámica = SI un usuario ha seleccionado una opción de la segmentación de datos de horas, presente [Medida de hora actual] o presente [Medida de hora]...

En realidad, acabo de encontrar esta publicación aquí que está muy alineada con lo anterior jajaja: https://community.powerbi.com/t5/Desktop/Dynamic-Measure-Values-Based-on-Slicer-Selection-with-Optio...

De todos modos, si está satisfecho con la solución en relación con esta publicación, asegúrese de marcarla como resuelta y muchas gracias por publicar su tema. ¡Ha sido divertido!

Syndicate_Admin
Administrator
Administrator

@aaronzheng sí, debería funcionar, ya que está ejecutando una lógica muy similar a su enfoque actual.

Si no funciona, comparta un conjunto de datos. Puede hacer clic con el botón derecho en la tabla en la vista tabular y presionar Copiar tabla y pegar en Excel, desidentifíquela y cargarla si no funciona 🙂

Hola Theo, no entiendo cómo implementar tu método. Creé la columna current_day_flag, pero ¿cómo la usaría para ajustar mi medida dax?

Aquí hay un enlace a mis datos de muestra (no me permitió adjuntar un archivo de Excel), la hora actual a esta hora era a las 9:00 am.

https://docs.google.com/spreadsheets/d/1Ddmx0vcP7t4J1W3l4YgnxYAlXK7ZtRDJ/edit?usp=sharing&ouid=10423...

Hay @aaronzheng

Está bien, así que finalmente llegué a esto. Disculpas por el retraso y requirió un poco más de esfuerzo de lo que pensaba... La medida "m1" es representativa de la suya y la "mea_Cumulative2" es la nueva medida. He tratado de mantener los nombres de las columnas lo más alineados posible.

mea_Cumulative2 = 

VAR _CurTime = MAX ( 'Table1'[ApplicationHourEST] )

RETURN

    IF ( 
        TIMEVALUE ( _CurTime ) <> TIME ( 0 , 0 , 0 ) ,
            CALCULATE (
                SUM ( Table1[ApplicationCount] ),
                FILTER (
                    ALLSELECTED ( Table1 ),
                    AND ( Table1[ApplicationHourEST] >= DATEVALUE ( _CurTime ) , 'Table1'[ApplicationHourEST] < _CurTime )
                )
            ) , 
            CALCULATE (
                SUM ( Table1[ApplicationCount] ) + 0 ,
                FILTER (
                    ALLSELECTED ( Table1 ) ,
                    DATEVALUE ( Table1[ApplicationHourEST] ) = DATEVALUE ( _CurTime ) - 1 )
                )
            )

¡Espero que esto sea lo que querías! 🙂

TheoC_0-1634260895139.png

Hola Theo, realmente aprecio el esfuerzo que pones en esto. Sin embargo, esto no es exactamente lo que quería. Olvidé mencionar que hay una cortadora de banderas de hora actual que afecta la visualización. Cuando la segmentación de datos se establece en 1, el gráfico de líneas solo traza el recuento de aplicaciones a la hora actual (en este caso a las 9:00 am) durante los últimos 30 días. En otras palabras, muestra el recuento de aplicaciones a las 9:00 am durante los últimos 30 días.

aaronzheng_0-1634308115944.png

En esta captura de pantalla se filtra en CA (estado) y muestra el recuento de aplicaciones a la hora actual (9:00 am). Estoy trabajando en ajustar su medida de mea_Cumulative2 para incorporar la hora actual porque actualmente no funciona con la cortadora de current_hour_flag. (No aparece en el visual)

La captura de pantalla anterior también muestra 49 como el recuento de aplicaciones para CA el 10/9/2021 a las 9:00 am, pero quiero que muestre 510 ya que la suma de la aplicación cuenta el 10/9/2021 hasta las 9:00 am. 510 es la suma de los recuentos de aplicaciones (3ª columna) que se muestra a continuación en esta captura de pantalla:

aaronzheng_0-1634308553191.png




Gracias, Aarón.



Hola @aaronzheng,solo para confirmar, todo lo que quieres es devolver el máximo de mi medida en la Bandera de Hora Actual? Si eso es correcto, debería poder agregar una segunda medida que abarque mi medida existente para devolver el valor máximo cuando el indicador de hora actual sea igual a la hora actual de ApplicationHourEST.

Pruéndolo, no estaré frente a la computadora hasta el lunes. Pero asegúrate de hacerme saber cómo va.

No creo que su medida dé la suma correcta, pero lo probaré.

Hay @aaronzheng

Probé mi teoría esta mañana y, si entiendo lo que quieres, que es mostrar todas las banderas de hora actuales de los últimos n días, todo lo que necesitas hacer es crear una columna calculada que diga devolver la fecha y hora actuales si es igual a la bandera de hora actual.

col_Current_Hour_Flag = IF ( Tabla1[Current_Hour_Flag] = 1 , Tabla1[ApplicationHourEST] , BLANK() )

La salida le da la hora actual y, cuando se agrega al visual con la medida que creé en la publicación anterior siendo mea_Cumulative_Day,le da el total acumulado a la hora actual para la "Bandera de hora actual". La nueva columna utiliza ApplicationHourEST y solo presenta una fecha/hora si el indicador de hora actual es true y se utiliza esta nueva columna como eje X. Importante, asegúrese de convertir la salida a Data/Type = Date/Time y, a continuación, cuando la arrastre como el eje X en el objeto visual, cámbielo de Jerarquía de fechas a Fecha/Hora estándar.

Noté una cosa en mi medida de mea_Cumulative_Day anterior en el que no agregó applicationCount entre las 00:00 y la 01:00 o el applicationCount en el parámetro 09:00. La razón de las 09:00 es porque incluye todos los recuentos > las 09:00 y < las 10:00. Pero, para obtener el conteo 503, he modificado mi medida anterior a la siguiente:

mea_Cumulative_Day = 

VAR _CurTime = MAX ( 'Table1'[ApplicationHourEST] )

RETURN

    IF ( 
        TIMEVALUE ( _CurTime ) <> TIME ( 0 , 0 , 0 ) ,
            CALCULATE (
                SUM ( Table1[ApplicationCount] ),
                FILTER (
                    ALLSELECTED ( Table1 ),
                    AND ( Table1[ApplicationHourEST] >= DATEVALUE ( _CurTime ) , 'Table1'[ApplicationHourEST] <= _CurTime )
                )
            ) , 
            CALCULATE (
                SUM ( Table1[ApplicationCount] ) + 0 ,
                FILTER (
                    ALLSELECTED ( Table1 ) ,
                    DATEVALUE ( Table1[ApplicationHourEST] ) = DATEVALUE ( _CurTime ) - 1 )
                )
            )

TheoC_2-1634506094315.png

TheoC_3-1634506114253.png

En el caso de que su "Indicador de hora actual" sea una medida, simplemente convierta la columna calculada en una medida. En mis datos, he configurado el indicador de hora actual como una columna, por lo tanto, he utilizado esto como la razón para crear una columna calculada en este ejemplo a continuación.

Por favor, acepte esto como una solución si es lo que busca.

Gracias

Seguir

@aaronzheng es lo anterior lo que estabas queriendo?

@aaronzheng,te sugiero que lo pruebes antes de hacer comentarios sobre si algo funciona o no.

En ese sentido, todo lo mejor con sus desafíos. No podré ayudar más en esta publicación.

Syndicate_Admin
Administrator
Administrator

Hay @aaronzheng,

¿Puede compartir los detalles de sus ejes Y y X en el gráfico de líneas?

Gracias
Seguir

Hola Theo,

El eje Y es mi medida RT2 (mostrada arriba) y el eje X es ApplicationHourEST, que es una fecha y hora.

@aaronzheng,gracias por eso. ¿Puede agregar una columna calculada que le brinde una marca de día actual (es decir, replicar su columna de marca de hora actual pero para la fecha respectiva)? Eso debería proporcionarle un valor de 1 para el día respectivo y alinearse con las Horas para el día que comienza a las 00:00. A partir de ahí, modifique su medida para SUMAR los valores de ApplicationCount utilizando el indicador de día actual que es igual a 1 en lugar del indicador de hora actual que es 1.

El indicador de fecha actual debe ser algo tan simple como "Current_Day_Flag = IF ( Table[ApplicationHourEST] = TODAY ( ) , 1 , 0 )".

¿Espero que tenga sentido?

Gracias Theo, voy a darle una oportunidad a esto. ¿Funcionaría esto durante varios días? Se supone que mi visualización muestra la suma de las aplicaciones durante 30 días a la hora actual. Por ejemplo, en la captura de pantalla de mi publicación original, muestra el recuento de aplicaciones de los últimos 30 días a las 10:00 am cada día.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors