Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredGet Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now
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í:
| Equipo | Fecha | Lectura | Valor |
| EQP 1 | 10/01/25 | 0 | 0 |
| EQP 5 | 10/03/25 | 0 | 0 |
| EQP 1 | 10/02/25 | 30 | 30 |
| EQP 8 | 10/05/25 | 0 | 0 |
| EQP 5 | 10/04/25 | 6 | 6 |
| EQP 5 | 10/05/25 | 11 | 5 |
| EQP 1 | 10/06/25 | 42 | 12 |
| EQP 8 | 10/06/25 | 15 | 15 |
| EQP 8 | 10/07/25 | 18 | 3 |
Editar: Olvidé mencionar que mis fuentes de datos son listas de SharePoint.
¡Muchas gracias de antemano!
Solved! Go to 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
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:
| Equipo | Fecha | Lectura | Valor |
| EQP 1 | 10/01/2025 | 0 | 0 |
| EQP 5 | 10/03/2025 | 0 | 0 |
| EQP 1 | 10/02/2025 | 30 | 30 |
| EQP 8 | 10/05/2025 | 0 | 0 |
| EQP 5 | 10/04/2025 | 6 | 6 |
| EQP 5 | 10/05/2025 | 11 | 5 |
| EQP 1 | 10/06/2025 | 42 | 12 |
| EQP 8 | 10/06/2025 | 15 | 15 |
| EQP 8 | 10/07/2025 | 18 | 3 |
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!
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:
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!
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:
Con la medida:
¡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
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
Check out the October 2025 Power BI update to learn about new features.