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.
Hola
Tengo un medidor de potencia conectado a la red con 2 entradas. A intervalos regulares carga sus lecturas en la base de datos, que incluye una lectura de "energía consumida desde encendido" (Energía en la tabla). Hay 2 sockets de lectura, por lo que cada día me cargan 2 lecturas. El problema es que si hay un corte de energía el medidor comienza a partir de 0 de nuevo, pero actualiza un "SessionId" para decir que ha tenido un restablecimiento.
Lo que quiero hacer por cada entrada es acumular energía con el tiempo, manejar los cortes de energía y saber cuánta energía se consume por día. Tenga en cuenta, en la tabla de abajo hay una lectura por día, en la práctica obtengo 1000, 1 cada pocos segundos.
Datetime | SocketID | SessionID | Energía | Accuml Energy | |
01-Enero-20 | 1 | 1 | 1 | 1 | |
01-Enero-20 | 2 | 1 | 10 | 10 | |
02-Enero-20 | 1 | 1 | 2 | 2 | |
02-Enero-20 | 2 | 1 | 11 | 11 | |
03-Enero-20 | 1 | 1 | 3 | 3 | |
03-Enero-20 | 2 | 1 | 12 | 12 | |
04-Enero-20 | 1 | 1 | 4 | 4 | |
04-Enero-20 | 2 | 1 | 13 | 13 | |
05-Enero-20 | 1 | 2 | 1 | 5 | |
05-Enero-20 | 2 | 2 | 1 | 14 | |
06-Enero-20 | 1 | 2 | 2 | 6 | |
06-Enero-20 | 2 | 2 | 2 | 15 | |
07-Enero-20 | 1 | 2 | 3 | 7 | |
07-Enero-20 | 2 | 2 | 3 | 16 | |
08-Enero-20 | 1 | 3 | 1 | 8 | |
08-Enero-20 | 2 | 3 | 1 | 17 | |
09-Enero-20 | 1 | 3 | 2 | 9 | |
09-Enero-20 | 2 | 3 | 2 | 18 | |
10-Enero-20 | 1 | 3 | 3 | 10 | |
10-Enero-20 | 2 | 3 | 3 | 19 |
En términos psuedo, el algoritmo es
Para cada SocketID
si el SessionId no ha cambiado desde las últimas lecturas, entonces 'Accuml Energy' (Energía-Energía de lectura anterior) + último valor de 'Accuml Energy'
Más
Accuml Energy - Energía + último valor de 'Accuml Energy'
Puede haber otros algoritmos que funcionen...
Creo que puedo ser capaz de utilizar EARLIER de alguna manera, pero aún no lo resolví
Gracias por tu ayuda
Solved! Go to Solution.
Hola @waynewoodhead ,
Prueba esto:
Accuml Energy column =
VAR t =
FILTER (
'Table',
'Table'[SocketID] = EARLIER ( 'Table'[SocketID] )
&& 'Table'[DateTime] <= EARLIER ( 'Table'[DateTime] )
)
RETURN
CALCULATE (
SUM ( 'Table'[Energy] ),
t
)
- CALCULATE (
SUM ( 'Table'[Energy] ),
FILTER (
t,
VAR nextdt =
CALCULATE (
Min ( 'Table'[DateTime] ),
FILTER ( t, 'Table'[DateTime] > EARLIER ( 'Table'[DateTime] ) )
)
RETURN
'Table'[SessionID]
= CALCULATE (
MAX ( 'Table'[SessionID] ),
FILTER ( t, 'Table'[DateTime] = nextdt )
)
)
)
Saludos
Icey
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @waynewoodhead ,
Prueba esto:
Accuml Energy column =
VAR t =
FILTER (
'Table',
'Table'[SocketID] = EARLIER ( 'Table'[SocketID] )
&& 'Table'[DateTime] <= EARLIER ( 'Table'[DateTime] )
)
RETURN
CALCULATE (
SUM ( 'Table'[Energy] ),
t
)
- CALCULATE (
SUM ( 'Table'[Energy] ),
FILTER (
t,
VAR nextdt =
CALCULATE (
Min ( 'Table'[DateTime] ),
FILTER ( t, 'Table'[DateTime] > EARLIER ( 'Table'[DateTime] ) )
)
RETURN
'Table'[SessionID]
= CALCULATE (
MAX ( 'Table'[SessionID] ),
FILTER ( t, 'Table'[DateTime] = nextdt )
)
)
)
Saludos
Icey
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola
Gracias por la ayuda. El código parece funcionar, pero a medida que el conjunto de datos se hace más grande me quedo rápidamente sin memoria - demasiadas iteraciones para completar creo.
Estoy trabajando en otra ruta para corregir en la entrada de la base de datos, en lugar de leer, que debería ser más rápido.
¡Gracias por llegar hasta aquí!
Hola @waynewoodhead ,
Esto implica bucles, que estoy investigando. Llevará mucho tiempo. Le responderé en cuanto lo investigue.
Saludos
Icey
Icey
Gracias. Si ypu necesita más información sobre el problema hágamelo saber
Wayne
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |