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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Datos en filas separadas: es necesario crear un índice

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ÓNVentasDevuelveFecha de ventaFecha de regreso
110 5/5/2020
102 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ÓNVentasDevuelveFecha de ventaFecha de regreso¿Devolución?
110 5/5/2020 1
102 5/6/2020
220 5/6/2020
2
3100 5/5/2020 1
3 50 5/7/2020

¿Cómo puedo lograr esto en Power query?

1 ACCEPTED 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"

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

@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"

@Vijay_A_Verma gracias esto funciona perfectamente

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel

Fabric Monthly Update - May 2024

Check out the May 2024 Fabric update to learn about new features.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.