Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and a 50 percent discount on exams.
Get startedEarn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola a todos
Tengo algunos datos de ventas y datos de devolución que provienen de la misma fuente, pero es casi como si los datos estuvieran unidos, por lo que están en diferentes filas. los datos se ven así:
IDENTIFICACIÓN | Ventas | Devuelve | Fecha de venta | Fecha de regreso |
1 | 10 | 5/5/2020 | ||
1 | 0 | 2 | 5/6/2020 |
En PQ me gustaría crear un "flag" que volverá a la fila de ventas si hay un retorno para el ID. el resultado se vería así:
IDENTIFICACIÓN | Ventas | Devuelve | Fecha de venta | Fecha de regreso | ¿Devolución? |
1 | 10 | 5/5/2020 | 1 | ||
1 | 0 | 2 | 5/6/2020 | ||
2 | 20 | 5/6/2020 | |||
2 | |||||
3 | 100 | 5/5/2020 | 1 | ||
3 | 50 | 5/7/2020 |
¿Cómo puedo lograr esto en Power query?
Solved! Go to Solution.
Vea el trabajo aquí - Abrir una consulta en blanco - Inicio - Editor avanzado - Elimine todo desde allí y pegue el siguiente código para probar (más adelante, cuando use la consulta en su conjunto de datos, tendrá que cambiar la fuente adecuadamente. Si tiene columnas distintas de estas, elimine el paso Tipo modificado y vuelva a realizar un tipo modificado para completar la tabla de la interfaz de usuario)
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTI0ABJAZKpvqm9kYATmxepA5EAcI5i0GUQaJAcSMzJAk4Dqg6qHIpCIMdgWHNYYQ4Xh0uZQa2IB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Sales = _t, Returns = _t, #"Sales Date" = _t, #"Return Date" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Sales", Int64.Type}, {"Returns", Int64.Type}, {"Sales Date", type date}, {"Return Date", type date}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"Temp", each _, type table [ID=nullable number, Sales=nullable number, Returns=nullable number, Sales Date=nullable date, Return Date=nullable date]}}),
//Function Start
fxProcess = (Tbl)=>
let
#"Added Index" = Table.AddIndexColumn(Tbl, "Index", 0, 1, Int64.Type),
#"Added Custom" = Table.AddColumn(#"Added Index", "Return?", each if not List.IsEmpty(List.RemoveNulls(#"Added Index"[Return Date])) and [Index]=0 then 1 else null)
in
#"Added Custom",
//Function End
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each fxProcess([Temp])),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Temp"}),
#"Expanded Custom" = Table.ExpandTableColumn(#"Removed Columns", "Custom", {"Sales", "Returns", "Sales Date", "Return Date", "Return?"}, {"Sales", "Returns", "Sales Date", "Return Date", "Return?"})
in
#"Expanded Custom"
@Vind1989 ¿Qué hay de simplemente hacer un grupo por ID y combinar las filas juntas?
@Greg_Deckler mi conjunto de datos es bastante grande / complejo, por lo que prefiero crear una bandera, ya que el informe ya está construido teniendo en cuenta las diferentes filas.
Vea el trabajo aquí - Abrir una consulta en blanco - Inicio - Editor avanzado - Elimine todo desde allí y pegue el siguiente código para probar (más adelante, cuando use la consulta en su conjunto de datos, tendrá que cambiar la fuente adecuadamente. Si tiene columnas distintas de estas, elimine el paso Tipo modificado y vuelva a realizar un tipo modificado para completar la tabla de la interfaz de usuario)
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTI0ABJAZKpvqm9kYATmxepA5EAcI5i0GUQaJAcSMzJAk4Dqg6qHIpCIMdgWHNYYQ4Xh0uZQa2IB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Sales = _t, Returns = _t, #"Sales Date" = _t, #"Return Date" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Sales", Int64.Type}, {"Returns", Int64.Type}, {"Sales Date", type date}, {"Return Date", type date}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"Temp", each _, type table [ID=nullable number, Sales=nullable number, Returns=nullable number, Sales Date=nullable date, Return Date=nullable date]}}),
//Function Start
fxProcess = (Tbl)=>
let
#"Added Index" = Table.AddIndexColumn(Tbl, "Index", 0, 1, Int64.Type),
#"Added Custom" = Table.AddColumn(#"Added Index", "Return?", each if not List.IsEmpty(List.RemoveNulls(#"Added Index"[Return Date])) and [Index]=0 then 1 else null)
in
#"Added Custom",
//Function End
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each fxProcess([Temp])),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Temp"}),
#"Expanded Custom" = Table.ExpandTableColumn(#"Removed Columns", "Custom", {"Sales", "Returns", "Sales Date", "Return Date", "Return?"}, {"Sales", "Returns", "Sales Date", "Return Date", "Return?"})
in
#"Expanded Custom"