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 conjunto de datos que captura una marca de tiempo cada vez que 5 ciertos campos cambian.
Lo que quiero saber es cuándo cambia un campo (costo de reemplazo), y cuál fue la fecha en que cambia, sin embargo su amungst un rango de otros datos también, además a veces hay más de un cambio, pero sólo necesito saber el cambio más reciente.
Necesito saber esto para cada activo, en otra tabla de resumen.
¿Algún sggetions?
tabla debe terminar mostrando - id de activo 1 a 1/1/19, y id de activo 2 a 1/1/17
Id. de activo | Coste de reemplazo | Marca de tiempo | Condición | Cantidad |
1 | 2000 | 1/01/2015 | 1 | 1 |
1 | 2000 | 1/01/2016 | 2 | 1 |
1 | 3000 | 1/01/2017 | 2 | 1 |
1 | 3000 | 1/01/2018 | 2 | 2 |
2 | 1000 | 1/01/2015 | 1 | 1 |
2 | 1000 | 1/01/2016 | 2 | 1 |
2 | 4000 | 1/01/2017 | 2 | 1 |
2 | 4000 | 1/01/2018 | 2 | 2 |
1 | 4000 | 1/01/2019 | 2 | 2 |
Pruebe lo siguiente en Power Query. Devuelve esta tabla. Ha dicho que debería devolver los datos de 2017, pero ese no fue el más reciente para el ID 2. Si realmente debería ser 2017, ¿cuál es la otra critera?
EDITAR: Para las sonrisas, he agregado una expresión DAX en la parte inferior de esta publicación para hacer lo mismo, aunque Power Query es realmente donde esto pertenece la mayor parte del tiempo.
1) En Power Query, seleccione Nuevo origen y, a continuación, Consulta en blanco
2) En la cinta inicio, seleccione el botón "Editor avanzado"
3) Retire todo lo que ve, luego pegue el código M que le he dado en ese cuadro.
4) Pulse Hecho
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTIyMDAAUob6Bob6RgaGpiA2GMfqYFVgBhJCUWCMqsCckAILqAIjsAKwUnxuwKIA1Q0glgk+N2BRgOoGQ0wFlggFsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Asset id" = _t, #"Replacement cost" = _t, #"Time stamp" = _t, condition = _t, Quantity = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Asset id", Int64.Type}, {"Replacement cost", Int64.Type}, {"Time stamp", type date}, {"condition", Int64.Type}, {"Quantity", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Asset id"}, {{"All Rows", each _, type table [Asset id=number, Replacement cost=number, Time stamp=date, condition=number, Quantity=number]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "New Data", each Table.Max([All Rows], "Time stamp")),
#"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"New Data"}),
#"Expanded New Data" = Table.ExpandRecordColumn(#"Removed Other Columns", "New Data", {"Asset id", "Replacement cost", "Time stamp", "condition", "Quantity"}, {"Asset id", "Replacement cost", "Time stamp", "condition", "Quantity"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Expanded New Data",{{"Asset id", Int64.Type}, {"Replacement cost", Int64.Type}, {"Time stamp", type date}, {"condition", Int64.Type}, {"Quantity", Int64.Type}})
in
#"Changed Type1"
Aquí está la expresión DAX para crear una tabla. Por supuesto, podría utilizar esta tabla dentro de una medida y no crear un calculado real capaz, pero esto le permitirá visualizar lo que esto está haciendo.
Summary Table =
VAR MaxDatePerID =
ADDCOLUMNS(
'Sample Table',
"MAX Date", CALCULATE(
MAXX(
'Sample Table',
'Sample Table'[Time stamp]
),ALLEXCEPT('Sample Table','Sample Table'[Asset id])
)
)
VAR JustMaxRecords =
FILTER(
MaxDatePerID,
[Time stamp] = [MAX Date]
)
RETURN
JustMaxRecords
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingHola
Sin embargo, el costo de reemplazo de ID 2 no cambió en los otros años.
Sólo quiero que la fecha regrese cuando cambie el costo de reemplazo. si no cambia, entonces no debería devolver nada.
También debe mostrar la fecha más reciente, para cada activo cada vez que cambia el valor de coste de reemplazo - y devolver la marca de tiempo. Si hay más de un cambio, sólo quiero saber el cambio más reciente.
¿eso ayuda
De acuerdo. Pruebe este código M:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTIyMDAAUob6Bob6RgaGpiA2GMfqYFVgBhJCUWCMqsCckAILqAIjsAKwUnxuwKIA1Q0glgk+N2BRgOoGQ0wFlggFsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Asset id" = _t, #"Replacement cost" = _t, #"Time stamp" = _t, condition = _t, Quantity = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Asset id", Int64.Type}, {"Replacement cost", Int64.Type}, {"Time stamp", type date}, {"condition", Int64.Type}, {"Quantity", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Asset id"}, {{"All Rows", each _, type table [Asset id=number, Replacement cost=number, Time stamp=date, condition=number, Quantity=number]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each
let
varReplacementCost = Table.Max([All Rows], "Time stamp")[Replacement cost]
in
Table.Min(
Table.SelectRows(
[All Rows],
each [Replacement cost] = varReplacementCost
),
"Time stamp"
)
),
#"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"Custom"}),
#"Expanded Custom" = Table.ExpandRecordColumn(#"Removed Other Columns", "Custom", {"Asset id", "Replacement cost", "Time stamp", "condition", "Quantity"}, {"Asset id", "Replacement cost", "Time stamp", "condition", "Quantity"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Expanded Custom",{{"Asset id", Int64.Type}, {"Replacement cost", Int64.Type}, {"Time stamp", type date}, {"condition", Int64.Type}, {"Quantity", Int64.Type}})
in
#"Changed Type1"
1) En Power Query, seleccione Nuevo origen y, a continuación, Consulta en blanco
2) En la cinta inicio, seleccione el botón "Editor avanzado"
3) Retire todo lo que ve, luego pegue el código M que le he dado en ese cuadro.
4) Pulse Hecho
Se convierte en esto:
en esto:
Esta es la magia:
let
varReplacementCost = Table.Max([All Rows], "Time stamp")[Replacement cost]
in
Table.Min(
Table.SelectRows(
[All Rows],
each [Replacement cost] = varReplacementCost
),
"Time stamp"
)
)
Obtiene el costo de reemplazo para la fecha máxima para cada ID - eso es lo que hice la primera vez.
A continuación, devuelve la fecha mínima para esos costos de reemplazo, ya que todo después de eso sería un costo de reemplazo no cambiante.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingGracias - que parece funcionar...... ahora voy a tratar de conseguir que esto funciona en mi conjunto de datos real - parece ir adelante!
Gran @db1983 - post e-back con cualquier problema adaptándose a su necesidad específica.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingCovering 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 | |
2 | |
2 | |
2 | |
1 |