cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
avillarroelk250
Frequent Visitor

Filtrar LastDate PowerQUery

Saludos...

espero puedan ayudarme con esta peticion. Tengo 2 tablas, ambas con un identificador USUARIO.
tabla 1 : 1 usuario puede tener muchas ordenes, cada orden tiene su fecha. necesito la ultima fecha de cada orden, obvio con el resto de as columnas que detallan esa orden.
tabla 2 : 1 usuario puede tener muchas ventas, cada venta tiene su fecha. necesito la ultima venta de ese usuario, obvio con el resto de las columnas que detallan esa venta.

 

luego obtener una tercera tabla en merge con esas 2 anteriores.

Objetivo tener una tabla :
usuario --- LastOrderDate --- Details order -- LastSellDate -- Detail sell

A traves de Dax, columnas ytablas calculadas pude lograr las 2 primeras tablas con la ultima fecha de orden y venta, pero aunque las relacione no puedo unirlas en 1 solo paginado. 
Lo que me lleva a querer hacer esto en PowerQuery, pero no lo domino.
Dato adicional: con cosas similares pero tengo muchas tablas que necesito relacionar "muchos a muchos" y PowerBI no es muy docil para esta transformacion, entonces resolver este caso me ayudaria con los otros.

Gracias de ante mano.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hola @avillarroelk250 , parece que quieres encontrar y guardar los detalles para el último Pedido y Venta para cada cliente. En Power Query, puede lograr esto mediante los pasos siguientes:

  1. Ordene las tablas individuales por Cliente y Fecha.
  2. Agregar columna de columna índice: esto encontrará el identificador máximo si hay más ventas o pedidos en la última fecha.
  3. Agregue una columna booleana (true/false) que indique si la fila es el identificador máximo para la personalizada. Esta es la parte compleja.
  4. Filtre las tablas por True.
  5. Combine las tablas en función del ID de cliente.

Pruebe el siguiente ejemplo en Power Query:

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTIw1AciIwMjIyAnMSc7JU0pVidayQlTKqU4LSsHLOmMKVmckpZlDZaEGWoElyxOyYHpBBtrjCyZlpKTnYUw1QRVLgsmiWlqYkpaDopTjRH6crKBvogFAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Customer = _t, #"Sale Date" = _t, #"Sale Detail" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Sale Date", type date}}),
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"Customer", Order.Ascending}, {"Sale Date", Order.Ascending}}),
#"Added Index" = Table.AddIndexColumn(#"Sorted Rows", "ID", 0, 1, Int64.Type),
#"Added Custom" = Table.AddColumn(#"Added Index", "IsMax",
each let
x = [Customer]
, filter = Table.SelectRows( #"Added Index" , each [Customer] = x )
, result = List.Max( filter[ID] )
in
result = [ID]
, type logical
),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([IsMax] = true)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"ID", "IsMax"})
in
#"Removed Columns"

View solution in original post

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Hola @avillarroelk250 , parece que quieres encontrar y guardar los detalles para el último Pedido y Venta para cada cliente. En Power Query, puede lograr esto mediante los pasos siguientes:

  1. Ordene las tablas individuales por Cliente y Fecha.
  2. Agregar columna de columna índice: esto encontrará el identificador máximo si hay más ventas o pedidos en la última fecha.
  3. Agregue una columna booleana (true/false) que indique si la fila es el identificador máximo para la personalizada. Esta es la parte compleja.
  4. Filtre las tablas por True.
  5. Combine las tablas en función del ID de cliente.

Pruebe el siguiente ejemplo en Power Query:

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTIw1AciIwMjIyAnMSc7JU0pVidayQlTKqU4LSsHLOmMKVmckpZlDZaEGWoElyxOyYHpBBtrjCyZlpKTnYUw1QRVLgsmiWlqYkpaDopTjRH6crKBvogFAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Customer = _t, #"Sale Date" = _t, #"Sale Detail" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Sale Date", type date}}),
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"Customer", Order.Ascending}, {"Sale Date", Order.Ascending}}),
#"Added Index" = Table.AddIndexColumn(#"Sorted Rows", "ID", 0, 1, Int64.Type),
#"Added Custom" = Table.AddColumn(#"Added Index", "IsMax",
each let
x = [Customer]
, filter = Table.SelectRows( #"Added Index" , each [Customer] = x )
, result = List.Max( filter[ID] )
in
result = [ID]
, type logical
),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([IsMax] = true)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"ID", "IsMax"})
in
#"Removed Columns"

Gracias. Voy a probar esta solucion. al tener un feedback te dejo saber.

Helpful resources

Announcements
August 2022 update 768x460.jpg

Check it Out!

Click here to learn more about the August 2022 updates!

August 1 episode 9_no_dates 768x460.jpg

The Power BI Community Show

Watch the playback when Priya Sathy and Charles Webb discuss Datamarts! Kelly also shares Power BI Community updates.

Power Platform Conf 2022 768x460.jpg

Join us for Microsoft Power Platform Conference

The first Microsoft-sponsored Power Platform Conference is coming in September. 100+ speakers, 150+ sessions, and what's new and next for Power Platform.

Top Solution Authors