Obtenga el estado actual basado en la última fecha y agrupe por identificación

Un usuario Pregunto ✅

Anónimo

Hola, equipo,

Necesito crear una columna personalizada que contenga el estado actual de una identificación basada en la última fecha y agrupar por identificación. por favor encuentre la siguiente tabla

Escenario estado identificación Por semana Estado actual
Ejecutar Ámbar 1 20/02/2017 Ámbar
Ejecutar verde 1 19/01/2017 Ámbar
Definir rojo 2 23/02/2017 rojo
Ejecutar ámbar 2 02/09/2017 rojo
Ejecutar verde 2 02/08/2017 rojo
Definir ámbar 3 17/02/2017 Ámbar

entonces el resultado final debería ser así

Escenario estado identificación Por semana Estado actual
Ejecutar Ámbar 1 20/02/2017 Ámbar
Definir rojo 2 23/02/2017 rojo
Definir ámbar 3 17/02/2017 Ámbar

por favor ayúdame con esta funcionalidad.

Saludos,

Sivaaprataap

MarcelBeug

Con sus datos copiados a Excel, creé el siguiente código en Power Query Excel.

Se puede usar en Power BI Query Editor con fuente ajustada.

El paso «SelectLatest» es una función que se utiliza en el siguiente paso para filtrar las tablas anidadas (en AllData, desde el paso «Grouped Rows»). El código en «SelectLatest» se basa en el código que se genera cuando filtra una columna de fecha en «Es más temprano» (menú desplegable en el encabezado de la columna – Filtros de fecha – Es más temprano)

De lo contrario, los pasos son todos los pasos estándar de la interfaz de usuario.

Para «https://community.powerbi.com/t5/Desktop/Get-Current-status-based-on-the-latest-date-and-group-by-id/mp/#» Changed Type1 «, seleccioné todo columnas y usó «Detectar tipo de datos» en la pestaña «Transformar», y luego ajustó el tipo para «ForWeek» hasta la fecha.

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Stage", type text}, {"status ", type text}, {"id", Int64.Type}, {"ForWeek", type datetime}, {"Currrent Status", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"id"}, {{"AllData", each _, type table}}),
    SelectLatest = (Group as table) as table => Table.SelectRows(Group, let latest = List.Max(Group[ForWeek]) in each [ForWeek] = latest),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "LatestData", each SelectLatest([AllData])),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"AllData"}),
    #"Expanded LatestData" = Table.ExpandTableColumn(#"Removed Columns", "LatestData", {"Stage", "status ", "ForWeek", "Currrent Status"}, {"Stage", "status ", "ForWeek", "Currrent Status"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Expanded LatestData",{"Stage", "status ", "id", "ForWeek", "Currrent Status"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Reordered Columns",{{"Stage", type text}, {"status ", type text}, {"id", Int64.Type}, {"ForWeek", type date}, {"Currrent Status", type text}})
in
    #"Changed Type1"

Aquí hay una solución basada en DAX. Supuse que su tabla se llama ‘Estado’ y el código a continuación se puede usar para crear una nueva tabla desde la pestaña de modelado


New Table = VAR MaxDates = SELECTCOLUMNS( SUMMARIZE('Status','Status'[id] , "Max Date" , MAX('Status'[ForWeek])), "ID2",[id], "Max Date",[Max Date]) VAR r = FILTER( CROSSJOIN('Status',MaxDates),[ID2]=[id] && [Max Date] = [ForWeek]) RETURN SELECTCOLUMNS( r, "Stage",[Stage], "Status",[status], "id",[id], "ForWeek",[ForWeek], "Current Status",[Currrent Status] )

Aquí hay una solución basada en DAX. Supuse que su tabla se llama ‘Estado’ y el código a continuación se puede usar para crear una nueva tabla desde la pestaña de modelado


New Table = VAR MaxDates = SELECTCOLUMNS( SUMMARIZE('Status','Status'[id] , "Max Date" , MAX('Status'[ForWeek])), "ID2",[id], "Max Date",[Max Date]) VAR r = FILTER( CROSSJOIN('Status',MaxDates),[ID2]=[id] && [Max Date] = [ForWeek]) RETURN SELECTCOLUMNS( r, "Stage",[Stage], "Status",[status], "id",[id], "ForWeek",[ForWeek], "Current Status",[Currrent Status] )

MarcelBeug

Con sus datos copiados a Excel, creé el siguiente código en Power Query Excel.

Se puede usar en Power BI Query Editor con fuente ajustada.

El paso «SelectLatest» es una función que se utiliza en el siguiente paso para filtrar las tablas anidadas (en AllData, desde el paso «Grouped Rows»). El código en «SelectLatest» se basa en el código que se genera cuando filtra una columna de fecha en «Es más temprano» (menú desplegable en el encabezado de la columna – Filtros de fecha – Es más temprano)

De lo contrario, los pasos son todos pasos estándar de la interfaz de usuario.

Para «https://community.powerbi.com/t5/Desktop/Get-Current-status-based-on-the-latest-date-and-group-by-id/mp/#» Changed Type1 «, seleccioné todo columnas y usó «Detectar tipo de datos» en la pestaña «Transformar», y luego ajustó el tipo para «ForWeek» hasta la fecha.

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Stage", type text}, {"status ", type text}, {"id", Int64.Type}, {"ForWeek", type datetime}, {"Currrent Status", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"id"}, {{"AllData", each _, type table}}),
    SelectLatest = (Group as table) as table => Table.SelectRows(Group, let latest = List.Max(Group[ForWeek]) in each [ForWeek] = latest),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "LatestData", each SelectLatest([AllData])),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"AllData"}),
    #"Expanded LatestData" = Table.ExpandTableColumn(#"Removed Columns", "LatestData", {"Stage", "status ", "ForWeek", "Currrent Status"}, {"Stage", "status ", "ForWeek", "Currrent Status"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Expanded LatestData",{"Stage", "status ", "id", "ForWeek", "Currrent Status"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Reordered Columns",{{"Stage", type text}, {"status ", type text}, {"id", Int64.Type}, {"ForWeek", type date}, {"Currrent Status", type text}})
in
    #"Changed Type1"

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *