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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Syndicate_Admin
Administrator
Administrator

Power Query: Filtrar a la fila de fecha más reciente

Hola a todos

¿Cómo puedo filtrar para mostrar solo la fila con la fecha más reciente para cada externalid a continuación?

Así que solo la fila con 07/05/2022 para 3929 se mostraría ya que es la última fecha.

HenryJS_0-1644325414344.png

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

@HenryJS ,

Datos base:

vluwangmsft_0-1646211144154.png

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjazNFDSUXLNLcjJr0wtUvDJTEzKzMksqVTwzCsuLUrMS04FShsZGBnpm+obGivF6gD1WBpZAgUDivLTUouLM/PzEnOAqlNSc/Nw6DNH1obXBuJUGkJUxgIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [externalid = _t, doctype = _t, Expiry = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"externalid", Int64.Type}, {"doctype", type text}, {"Expiry", type date}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"externalid"}, {{"allrows",each Table.AddIndexColumn(
        Table.Sort(_,{{"Expiry", 
        Order.Ascending}}), "Row Rank",1,1),  each _, type table [externalid=nullable number, doctype=nullable text, Expiry=nullable date]}}),
    #"Expanded allrows" = Table.ExpandTableColumn(#"Grouped Rows", "allrows", {"externalid", "doctype", "Expiry", "Row Rank"}, {"allrows.externalid", "allrows.doctype", "allrows.Expiry", "allrows.Row Rank"}),
    #"Filtered Rows" = Table.SelectRows(#"Expanded allrows", each ([allrows.Row Rank] = 1))
in
    #"Filtered Rows"

Resultado final:

vluwangmsft_1-1646211198517.png

recomienda:

https://data-witches.com/2020/10/21/adding-a-row-rank-based-on-a-different-column-with-power-query/

Saludos
Lucien

View solution in original post

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

La solución aceptada actualmente depende de modificar el código M en el editor avanzado. Esto no es necesario. La forma de hacerlo es agrupar en doctype y agregar en el Máximo de caducidad, agregar un nivel agregado llamado expansión y seleccionar todas las filas. El siguiente paso es expandir y agregar una columna condicional con el nombre "Latest?". Compare la columna Expiry con la columna Max of Expiry, y si es igual, ingrese "latest", de lo contrario "null". Filtrar la columna "¿Más reciente?" en "más reciente". Si es necesario, puede eliminar las columnas "Max of Expiry" y "¿Último?", y listo.

Syndicate_Admin
Administrator
Administrator

@HenryJS ,

Datos base:

vluwangmsft_0-1646211144154.png

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjazNFDSUXLNLcjJr0wtUvDJTEzKzMksqVTwzCsuLUrMS04FShsZGBnpm+obGivF6gD1WBpZAgUDivLTUouLM/PzEnOAqlNSc/Nw6DNH1obXBuJUGkJUxgIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [externalid = _t, doctype = _t, Expiry = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"externalid", Int64.Type}, {"doctype", type text}, {"Expiry", type date}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"externalid"}, {{"allrows",each Table.AddIndexColumn(
        Table.Sort(_,{{"Expiry", 
        Order.Ascending}}), "Row Rank",1,1),  each _, type table [externalid=nullable number, doctype=nullable text, Expiry=nullable date]}}),
    #"Expanded allrows" = Table.ExpandTableColumn(#"Grouped Rows", "allrows", {"externalid", "doctype", "Expiry", "Row Rank"}, {"allrows.externalid", "allrows.doctype", "allrows.Expiry", "allrows.Row Rank"}),
    #"Filtered Rows" = Table.SelectRows(#"Expanded allrows", each ([allrows.Row Rank] = 1))
in
    #"Filtered Rows"

Resultado final:

vluwangmsft_1-1646211198517.png

recomienda:

https://data-witches.com/2020/10/21/adding-a-row-rank-based-on-a-different-column-with-power-query/

Saludos
Lucien

Syndicate_Admin
Administrator
Administrator

en la tabla del documento, cree un nuevo colum.

donde escribe la línea pr True/false si esta es la fecha más reciente para este ID externo.

Nuevo colum:

Max_date_by_esternal_ID =

SI(

calculate(Max(Document[Date], filter(document, Document[ExternalID], Earlier([Document[ExternalID])))=Document[Date] ,

Verdadero(),

Falso()

)

El EARLIER tomará el ID externo de la línea en la que se encuentra actualmente y lo usará como filtro para obtener la fecha máxima

AHORA tienes una columna TRUE / False que puedes usar como filtro

Los míos se ven así y funcionan

2022-02-08 16_09_59-#Master - Power BI Desktop.png

así que obtendrías 3 líneas verdaderas

Dado que el identificador externo 3929 tiene 2 fechas de caducidad que son la fecha más reciente disponible para ese identificador

Syndicate_Admin
Administrator
Administrator

Hola

si desea filtrar en power query:

serpiva64_0-1644327933382.png

y ya está.

Si esta publicación es útil para ayudarlo a resolver su problema, considere darle a la publicación un pulgar hacia arriba y aceptarla como una solución.

Arrepentido

No entendí tu pregunta.

Si eres capaz de publicar algunos datos de muestra (para ello puedes seleccionar los colums y con el botón derecho seleccionar copiar y luego pegar aquí) creo que es posible

@serpiva64 esto sólo devuelve la fecha más reciente para la columna DocType

No devuelve el documento más reciente para cada ExternalID

¿Cómo puedo hacer esto en Power Query?

Syndicate_Admin
Administrator
Administrator

Prueba algo similar

CALCULATE (
    MAX ( calendertable[Date] ),
    FILTER (
        ALL ( calendertable[Date] ),
        salestable[TotalSales]>0
    )
))

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

Find out what's new and trending in the Fabric community.

July PBI25 Carousel

Power BI Monthly Update - July 2025

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

Top Solution Authors
Top Kudoed Authors