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

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
Syndicate_Admin
Administrator
Administrator

Calcule las lecturas diarias de múltiples equipos

Hola.

Tengo que controlar las lecturas diarias (a veces, las lecturas se pueden omitir) de múltiples equipos (medidores de agua, más precisamente) de manera que tenga una columna con las lecturas de fecha menos sus lecturas de fecha inmediatamente anteriores (o posteriores), para cada equipo. Así:

EquipoFechaLecturaValor
EQP 110/01/2500
EQP 510/03/2500
EQP 110/02/253030
EQP 810/05/2500
EQP 510/04/2566
EQP 510/05/25115
EQP 110/06/254212
EQP 810/06/251515
EQP 810/07/25183

Editar: Olvidé mencionar que mis fuentes de datos son listas de SharePoint.

¡Muchas gracias de antemano!

1 ACCEPTED SOLUTION

Hola @WilliamAzevedo,

Tiene razón, debe ser una columna calculada y no medir, ya que debe calcularse en el contexto de fila.

Pruebe por debajo de DAX

Volume :=
VAR CurrReading = fMacromedidor_Leituras[Leitura]
VAR CurrDate = fMacromedidor_Leituras[Data]
VAR CurrEquip = fMacromedidor_Leituras[Macromedidor]

Lectura previa del VAR =
CALCULAR(
MAX(fMacromedidor_Leituras[Leitura]),
FILTRO(
fMacromedidor_Leituras,
fMacromedidor_Leituras[Macromedidor] = CurrEquip &&
fMacromedidor_Leituras[Datos] < CurrDate
)
)

DEVOLUCIÓN
IF(ISBLANK(PrevReading), CurrReading, CurrReading - PrevReading)

Cuando agregue esto a la vista de tabla, ordene la columna Fecha

Aquí está el ejemplo de .pbix adjuntos

View solution in original post

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

Hola @WilliamAzevedo

Dados los datos de su muestra, ¿cuál es su resultado esperado?

Hola, Dane, lo siento si no fui claro en el ejemplo. Si puedo ayudar a otros (para ayudarme), aquí está la tabla en un formato más claro:

EquipoFechaLecturaValor
EQP 110/01/202500
EQP 510/03/202500
EQP 110/02/20253030
EQP 810/05/202500
EQP 510/04/202566
EQP 510/05/2025115
EQP 110/06/20254212
EQP 810/06/20251515
EQP 810/07/2025183

El resultado que espero es la columna "Valor" que muestra la resta de la lectura en una fecha determinada de su lectura inmediatamente posterior a cada equipo en la columna "Equipar".

¡Gracias!

Syndicate_Admin
Administrator
Administrator

dejar
Origen = YourTableName,
Asegúrese de que la columna de fecha esté en el formato de fecha adecuado
ChangedType = Table.TransformColumnTypes(Source,{{"Date", type date}}),

Ordenar por equipo y fecha
Ordenado = Tabla.Ordenar(CambiadoTipo,{{"Equip", Orden.Ascendente}, {"Fecha", Orden.Ascendente}}),

Agregar índice por equipo
Agrupado = Tabla.Grupo(Ordenado, {"Equipar"}, {
{"AllRows", cada Table.AddIndexColumn(_, "Index", 0, 1, Int64.Type)}
}),
Expandido = Tabla.Combinar(Agrupado[TodasFilas]),

Agregar lectura anterior
AddedPrev = Table.AddColumn(Expanded, "PrevReading", cada try Record.Field(Expanded{[Index]-1}, "Reading") de lo contrario nulo),

Calcular valor
AddedValue = Table.AddColumn(AddedPrev, "Value", each if [PrevReading] = null then 0 else [Reading] - [PrevReading])
en
Valor añadido

¡ @Shahid12523!

Un equipo está tomando la lectura del otro como inicio y cuando cuenta como se espera en el mes siguiente:

WilliamAzevedo_0-1760374434642.png

WilliamAzevedo_1-1760374537948.png

Aquí está el código:

let
    Fonte = SharePoint.Tables("X", [Implementation="2.0", ViewMode="Default"]),
    #"X" = Fonte{[Id="X"]}[Items],
    #"Macromedidor Expandido" = Table.ExpandListColumn(#"X", "Macromedidor"),
    #"Macromedidor Expandido1" = Table.ExpandRecordColumn(#"Macromedidor Expandido", "Macromedidor", {"lookupValue"}, {"Macromedidor.lookupValue"}),
    #"Colunas Renomeadas" = Table.RenameColumns(#"Macromedidor Expandido1",{{"Macromedidor.lookupValue", "Macromedidor"}}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Colunas Renomeadas",{{"Data", type date}, {"Leitura", Int64.Type}}),
    #"Coluna Mesclada Inserida" = Table.AddColumn(#"Tipo Alterado", "Mesclado", each Text.Combine({[Hora], [Minuto]})),
    #"Colunas Renomeadas1" = Table.RenameColumns(#"Coluna Mesclada Inserida",{{"Mesclado", "Hora da Leitura"}}),
    #"Tipo Alterado1" = Table.TransformColumnTypes(#"Colunas Renomeadas1",{{"Hora da Leitura", type time}}),
    #"Colunas Reordenadas" = Table.ReorderColumns(#"Tipo Alterado1",{"Macromedidor", "Macromedidor: Vazão (m³/h)", "Data", "Hora", "Minuto", "Hora da Leitura", "Leitura", "Horas Op.", "Situação do Macromedidor", "ID"}),
    #"Tipo Alterado2" = Table.TransformColumnTypes(#"Colunas Reordenadas",{{"Macromedidor: Vazão (m³/h)", type number}, {"Macromedidor", type text}}),
    #"Mac. e Data Classificados" = Table.Sort(#"Tipo Alterado2",{{"Macromedidor", Order.Ascending}, {"Data", Order.Ascending}}),
    #"MacIndex" = Table.Group(#"Mac. e Data Classificados", {"Macromedidor"}, {{"TodasAsLinhas", each Table.AddIndexColumn(_, "Index", 0, 1, Int64.Type)}}),
    #"Expandido" = Table.Combine(#"MacIndex"[TodasAsLinhas]),
    #"AdLeitAnterior" = Table.AddColumn(#"Expandido", "Leitura Anterior", each try Record.Field(Expandido{[Index]-1}, "Leitura") otherwise null),
    #"CalVolume" = Table.AddColumn(#"AdLeitAnterior", "VolumePQy", each if [Leitura Anterior] = null then 0 else [Leitura] - [Leitura Anterior])
in
    CalVolume

¡Gracias!

Syndicate_Admin
Administrator
Administrator

Hola @WilliamAzevedo,

Pruebe por debajo de DAX

Valor :=
Lectura previa del VAR =
CALCULAR(
MAX('Tabla'[Lectura]),
FILTRO(
'Tabla',
'Mesa'[Equipar] = MAX('Mesa'[Equipar]) &&
'Tabla'[Fecha] =
MAXX(
FILTRO(
'Tabla',
'Mesa'[Equipar] = MAX('Mesa'[Equipar]) &&
'Tabla'[Fecha] < MAX('Tabla'[Fecha])
),
'Table'[Fecha]
)
)
)
DEVOLUCIÓN
IF(ISBLANK(PrevReading), 0, MAX('Table'[Reading]) - PrevReading)

🌟 ¡Espero que esta solución te ayude a desbloquear tu potencial de Power BI! Si te ha resultado útil, haz clic en "Marcar como solución" para guiar a otros hacia las respuestas que necesitan.
💡 ¿Te encanta el esfuerzo? ¡Deja los elogios! Su aprecio alimenta el espíritu comunitario y la innovación.
🎖 Como orgulloso superusuario y socio de Microsoft, estamos aquí para potenciar su recorrido de datos y la comunidad de Power BI en general.
🔗 ¿Tienes curiosidad por explorar más? [Descúbrelo aquí].
¡Sigamos construyendo juntos soluciones más inteligentes!

¡Hola, @grazitti_sapna!

Supongo que debería ser una medida. Aquí está el código con los nombres de mis tablas y columnas:

Volume = 
VAR LeitAnterior =
CALCULATE(
    MAX(fMacromedidor_Leituras[Leitura]),
    FILTER(
        fMacromedidor_Leituras,
        fMacromedidor_Leituras[Macromedidor] = MAX(fMacromedidor_Leituras[Macromedidor]) &&
        fMacromedidor_Leituras[Data] =
        MAXX(
            FILTER(
                fMacromedidor_Leituras,
                fMacromedidor_Leituras[Macromedidor] = MAX(fMacromedidor_Leituras[Macromedidor]) &&
                fMacromedidor_Leituras[Data] < MAX(fMacromedidor_Leituras[Data])
            ),
            fMacromedidor_Leituras[Data]
        )
    )
)
RETURN
IF(ISBLANK(LeitAnterior), 0, MAX(fMacromedidor_Leituras[Leitura]) - LeitAnterior)

El resultado en todas las filas fue 0 y tomó las lecturas de un equipo y las dio a todos los equipos, incluidos los que no tienen lecturas registradas.

Datos reales sin la medida:

WilliamAzevedo_0-1760367090771.png

WilliamAzevedo_5-1760367242820.png

WilliamAzevedo_1-1760367120000.png

Con la medida:

WilliamAzevedo_2-1760367177233.png

WilliamAzevedo_3-1760367193624.png

WilliamAzevedo_4-1760367217435.png

¡Gracias!

Hola @WilliamAzevedo,

Tiene razón, debe ser una columna calculada y no medir, ya que debe calcularse en el contexto de fila.

Pruebe por debajo de DAX

Volume :=
VAR CurrReading = fMacromedidor_Leituras[Leitura]
VAR CurrDate = fMacromedidor_Leituras[Data]
VAR CurrEquip = fMacromedidor_Leituras[Macromedidor]

Lectura previa del VAR =
CALCULAR(
MAX(fMacromedidor_Leituras[Leitura]),
FILTRO(
fMacromedidor_Leituras,
fMacromedidor_Leituras[Macromedidor] = CurrEquip &&
fMacromedidor_Leituras[Datos] < CurrDate
)
)

DEVOLUCIÓN
IF(ISBLANK(PrevReading), CurrReading, CurrReading - PrevReading)

Cuando agregue esto a la vista de tabla, ordene la columna Fecha

Aquí está el ejemplo de .pbix adjuntos

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.