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

Diferencia entre el último valor de una fecha y el último valor de la fecha siguiente o la fecha actual

¡Hola!

Tengo un conjunto de datos (a través de Direct Query) de una Base de datos SQL de Azure que almacena los valores acumulados de un dispositivo. El ejemplo es el siguiente:

Valor (litros)Timestamp

276

2022-05-29 19:08:03.000

276

2022-05-29 18:53:03.000

275

2022-05-29 18:48:01.000

274

2022-05-29 18:33:01.000

274

2022-05-29 18:18:01.000

274

2022-05-29 18:03:01.000
2742022-05-29 17:48:01.000
2742022-05-29 17:43:00.000
........
2602022-05-28 23:43:00.000

Si utilizo los valores anteriores en un gráfico de columnas, tengo una representación acumulada. Necesito tener el valor por día. Aparentemente tengo que restar el último valor del día anterior (fuente roja) del valor "actual" (en fuente verde).

Para ser más específicos, el proyecto tiene que ver con la producción de agua a partir de una máquina de gestión de residuos, por lo que necesito monitorear el volumen diario del agua producida y ponerlo en la tabla.

Hágame saber si necesita más datos para ayudarme,

Gracias de antemano

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Siendo más bien un novato, no puedo entender el significado de "columna de ayudante". ¿Dónde debo poner las líneas de código sugeridas?

Syndicate_Admin
Administrator
Administrator

Hola @teokarts
Para este caso de uso, crearía varias columnas auxiliares (esto se puede hacer con solo una o dos, pero es mejor ver el proceso).

Date = 
INT('Table'[Timestamp])
//get the first date component of the timestamp, to be formatted as a date
Value of Max Time =
VAR _dailymaxtime =
    CALCULATE ( MAX ( 'Table'[Timestamp] ), ALLEXCEPT ( 'Table', 'Table'[Date] ) ) //get the max timestamp of each date
RETURN
    IF ( 'Table'[Timestamp] = _dailymaxtime, 'Table'[Value (litres)] )
//returns the volume only if timestamp is max for the day
Daily Volume = 
IF (
    NOT ( ISBLANK ( 'Table'[Value of Max Time] ) ),
    'Table'[Value of Max Time]
        - CALCULATE (
            SUM ( 'Table'[Value of Max Time] ),
            FILTER ( 'Table', 'Table'[Date] < EARLIER ( 'Table'[Date] ) )
        )
)

Este es el resultado:

danextian_0-1653865538603.png

Aquí está el pbix de muestra: https://drive.google.com/file/d/1zMnfkqjg-p0Z7VK0Bttl4gYLFsWpYakB/view?usp=sharing

Creo que la solución que me propones es la que necesito pero -es mi error- que todos los datos se deriven a través de DirectQuery desde una Base de Datos Sql de Azure.

Así que tengo el siguiente mensaje:

"La función 'CALCULATE' no está permitida como parte de las expresiones DAX de columna calculadas en los modelos de DirectQuery".

¿Hay algún otro enfoque?

Gracias de nuevo....

¿Es necesario utilizar Direct Query en lugar de realizar una importación?

@danextian

Desafortunadamente, es necesario. El informe es generado por una Base de datos SQL de Azure que se rellena con datos "activos" de dispositivos conectados al centro de IoT de Azure.

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.