Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago

Columnas unpivot

Hola

Estoy intentando despivotear las columnas B a M, pero no puedo obtener el resultado deseado en el editor de consultas. Puedo obtener los resultados deseados en Microsoft Access escribiendo la consulta y usando Union All. ¿Es posible hacer esto en power Query Editor? He intentado agregar una columna indexada para poder ordenar los números numéricos después de unpivot coumns B a M, pero eso no ayudó ya que al despivotar las columnas B a M también cambia los números de índice.

Datos:

PowerBI3861_2-1654737550665.png

Resultado deseado:

Pedidos realesPeriodoImporte
532910 Prf Svcs Rev1-60000.00
laboratorio 690296: Externo18.22
692025 Overhead: Miscelánea (laboratorio)11.73
5610901 KTI-PTO - Fibra de VIDRIO1-16377.47
605509 Contratos-Otros Svcs1833.57
645200 SI Transferencias de gastos1200.00
laboratorio 690296: Externo10.06
692025 Overhead: Miscelánea (laboratorio)13305.90
95142290 TIS-A/N- salesforce120081.83
532910 Prf Svcs Rev2-60000.00
laboratorio 690296: Externo28.22
692025 Overhead: Miscelánea (laboratorio)24.38
5610901 KTI-PTO - Fibra de VIDRIO2-11331.24
605509 Contratos-Otros Svcs24962.10
645200 SI Transferencias de gastos21000.00
laboratorio 690296: Externo20.89
692025 Overhead: Miscelánea (laboratorio)23929.57
95142290 TIS-A/N- salesforce228603.93
532910 Prf Svcs Rev30.00
laboratorio 690296: Externo30.00
692025 Overhead: Miscelánea (laboratorio)30.00
5610901 KTI-PTO - Fibra de VIDRIO30.00
605509 Contratos-Otros Svcs30.00
645200 SI Transferencias de gastos30.00
laboratorio 690296: Externo30.00
692025 Overhead: Miscelánea (laboratorio)30.00
95142290 TIS-A/N- salesforce30.00

7 Replies

  • ¿O ha probado Unpivot Other Columns en su lugar seleccionando solo la/s columna/s que desea que permanezcan pivotadas?

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola

      Necesita más que Unpivoting para su caso de uso. Pruebe el M-Script a continuación.

      let
          Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("vZJBa8MwDIX/ishpg8az5diJeytjG2XdUprcQg9u6tJCSIcdyn7+5JYx2NnU8FmCKLzk6XVdtnF2gNrvnQ/ZLBMEEpIoCEVooiQqwsQZHq84KTDbzrpMSTSCA6z9AZpLH2DjLvQ015wO4/xfn6JEWW04Gg2wsrs5vHxPzo92iN/JEP9KOjXkqADqi/NHZ/dz+DiFHh4Gu3uMVrDy6hmTVUJRpQU3XAC8t8t83daQw+tp5zy8rRZNE30VWpYlK8prL6QUDIuUf82V4gbg+TxO3vZTyOvpSPpxzdFjKZmK2oXRyETS7RYKOYWqWdJuv9wYHLTejuFwCyr+pkncLVc0oK+lMvfLlZRcMRPfkAbNzexU0kaJAtGQye2yyRdPnzlAsIMLh7Pv3c3kSrAqBhsrzSUzMpX89gc=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t, Column5 = _t, Column6 = _t, Column7 = _t, Column8 = _t, Column9 = _t, Column10 = _t, Column11 = _t, Column12 = _t, Column13 = _t]),
          #"Transposed Table" = Table.Transpose(Source),
          #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Transposed Table", {"Column1"}, "Attribute", "Value"),
          #"Changed Type" = Table.TransformColumnTypes(#"Unpivoted Other Columns",{{"Value", type text}}),
          RealOrdersName = Table.SelectRows(#"Changed Type", each ([Column1] = "Real Orders")),
          Custom1 = #"Unpivoted Other Columns",
          #"Filtered Rows1" = Table.SelectRows(Custom1, each [Column1] <> "Real Orders"),
          #"Merged Queries" = Table.NestedJoin(#"Filtered Rows1", {"Attribute"}, RealOrdersName, {"Attribute"}, "ColumnName", JoinKind.LeftOuter),
          #"Expanded ColumnName" = Table.ExpandTableColumn(#"Merged Queries", "ColumnName", {"Value"}, {"Real Orders"}),
          #"Renamed Columns" = Table.RenameColumns(#"Expanded ColumnName",{{"Column1", "Period"}, {"Value", "Amount"}}),
          #"Removed Other Columns" = Table.SelectColumns(#"Renamed Columns",{"Real Orders", "Amount", "Period"}),
          #"Changed Type1" = Table.TransformColumnTypes(#"Removed Other Columns",{{"Amount", type number}, {"Period", Int64.Type}}),
          #"Sorted Rows" = Table.Sort(#"Changed Type1",{{"Period", Order.Ascending}})
      in
          #"Sorted Rows"

      Aquí hay una captura de pantalla del resultado:

      danextian_0-1654745042785.png

      Ejemplo pbIX - https://drive.google.com/file/d/1TD1fOdwaxP2pVDPp2goKprXVIno9rkch/view?usp=sharing

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        Gracias por trabajar en esto y perdón por la respuesta tardía. ¿Sería posible tener los datos de resultado deseados en el mismo orden de clasificación (columna Orden real) que los datos originales?