Exceli MVP-d ründavad Power Queryis andmete puhastamise probleemi - Exceli näpunäited

Lang L: none (table-of-contents)

Märge

See on üks artiklite seeria, mis kirjeldab üksikasjalikult Podcast 2316 väljakutsele saadetud lahendusi.

Exceli MVP Oz Du Soleil Excelis on Fire'i kanalil YouTube'is mainis Brasiilia härjasõitjat Kaique Pachechot. Oz oli esimene inimene, kes märkas, et läksin nelja kvartali lisamiseks aeglaselt.

Ozi video on:
https://www.youtube.com/watch?v=OluZlF44PNI

Tema kood on:

let Source = Excel.CurrentWorkbook()((Name="UglyData"))(Content), #"Removed Columns" = Table.RemoveColumns(Source,("Column2", "Column3", "Column4", "Column5", "Column6")), #"Transposed Table" = Table.Transpose(#"Removed Columns"), #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", (PromoteAllScalars=true)), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",(("Category Description", type text), ("Administrative", type number), ("Holiday", Int64.Type), ("PTO/LOA/Jury Duty", Int64.Type), ("Project A", type number), ("Project B", type number), ("Project C", type number))), #"Added Conditional Column" = Table.AddColumn(#"Changed Type", "Custom", each if (Category Description) = "Q1" then null else if (Category Description) = "Q2" then null else if (Category Description) = "Q3" then null else if (Category Description) = "Q4" then null else (Category Description)), #"Filled Down" = Table.FillDown(#"Added Conditional Column",("Custom")), #"Renamed Columns" = Table.RenameColumns(#"Filled Down",(("Custom", "Names"))), #"Filtered Rows" = Table.SelectRows(#"Renamed Columns", each (Category Description) = "Q1" or (Category Description) = "Q2" or (Category Description) = "Q3" or (Category Description) = "Q4"), #"Reordered Columns" = Table.ReorderColumns(#"Filtered Rows",("Names", "Category Description", "Administrative", "Holiday", "PTO/LOA/Jury Duty", "Project A", "Project B", "Project C")), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Reordered Columns", ("Names", "Category Description"), "Attribute", "Value"), #"Pivoted Column" = Table.Pivot(#"Unpivoted Other Columns", List.Distinct(#"Unpivoted Other Columns"(#"Category Description")), "Category Description", "Value", List.Sum), #"Inserted Sum" = Table.AddColumn(#"Pivoted Column", "Addition", each List.Sum(((Q1), (Q2), (Q3), (Q4))), type number), #"Renamed Columns1" = Table.RenameColumns(#"Inserted Sum",(("Addition", "TOTAL"))) in #"Renamed Columns1"

Teine lahendus, see Exceli MVP John MacDougalli.

  • John ütles esimesena, et kustutades kaks täiendavat sammu, mis lisati Power Query, välistate Q1 Q2 Q3 Q4 duplikaatide pealkirjade paaritu järelliited.
  • John kasutas varakult veergu Indeks, mida kasutati lõpuks sortimiseks. Aga - John liitis oma registriveeru kategooria kirjelduse järele. Ta kasutas vertikaalset torutegelast | et ta saaks andmed hiljem välja murda.
  • John kirjutas oma tingimusliku veeru kohandatud veeruks, selle asemel et kasutada tingimusliku veeru liidest.
Tingimuslik veerg kohandatud veeruna

Vaadake Johni videot siit:
https://www.youtube.com/watch?v=Dqmb6SEJDXI

Exceli MVP Ken Puls, M-i kaasautor, on (Data) Ahvi raamatule saadetud kolmes lahenduses. Tema tinglik veerg on ilmselt kõige lühem.

Kuid Keni eelistatud lahendus eirab algset küsimust. Selle asemel, et luua tabel Power Query's, loob ta Power Query's pööratava andmekomplekti ja lõpetab seejärel pöördtabeliga.

Keni viimane eelvaade Power Query'is näeb välja selline:

Pööratav andmekogum

Siin on Keni kood:

let Source = Excel.CurrentWorkbook()((Name="UglyData"))(Content), #"Promoted Headers" = Table.PromoteHeaders(Source, (PromoteAllScalars=true)), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",(("Category Description", type text), ("Dept. Total", type number), ("Q1", type number), ("Q2", type number), ("Q3", type number), ("Q4", Int64.Type), ("Employee 1", type number), ("Q1_1", type number), ("Q2_2", type number), ("Q3_3", Int64.Type), ("Q4_4", Int64.Type), ("Employee 2", Int64.Type), ("Q1_5", Int64.Type), ("Q2_6", Int64.Type), ("Q3_7", Int64.Type), ("Q4_8", Int64.Type), ("Employee 3", Int64.Type), ("Q1_9", Int64.Type), ("Q2_10", Int64.Type), ("Q3_11", Int64.Type), ("Q4_12", Int64.Type), ("Employee 4", type number), ("Q1_13", type number), ("Q2_14", type number), ("Q3_15", type number), ("Q4_16", Int64.Type))), #"Removed Columns" = Table.RemoveColumns(#"Changed Type",("Dept. Total", "Q1", "Q2", "Q3", "Q4")), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Removed Columns", ("Category Description"), "Attribute", "Value"), #"Added Conditional Column" = Table.AddColumn(#"Unpivoted Other Columns", "Employee", each if Text.Contains((Attribute), "_") then null else (Attribute)), #"Filled Down" = Table.FillDown(#"Added Conditional Column",("Employee")), #"Split Column by Delimiter" = Table.SplitColumn(#"Filled Down", "Attribute", Splitter.SplitTextByEachDelimiter(("_"), QuoteStyle.Csv, false), ("Attribute.1", "Attribute.2")), #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",(("Attribute.1", type text), ("Attribute.2", Int64.Type))), #"Filtered Rows" = Table.SelectRows(#"Changed Type1", each ((Attribute.2) null)), #"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows",("Attribute.2")), #"Renamed Columns" = Table.RenameColumns(#"Removed Columns1",(("Attribute.1", "Quarter"), ("Value", "Amount"))), #"Changed Type2" = Table.TransformColumnTypes(#"Renamed Columns",(("Category Description", type text), ("Quarter", type text), ("Amount", type number), ("Employee", type text))) in #"Changed Type2"

Pärast selle päringu loomist ainult ühendusena kasutab ta lõpliku aruande loomiseks pöördtabelit.

Lõpparuanne koos pöördtabeliga

Muude MVP-de lahendused:

  • Wyn Hopkinsi kood on siin: Power Query: mitme identse päisega tegelemine.
  • Mike Girvini kood on siin: Power Query: 2 vasakpoolse märgi eraldamine veerust.
  • Roger Govieri valemilahendus on siin: Vormelilahendused.

Naaske Podcast 2316 väljakutse avalehele.

Lugege selle seeria järgmist artiklit: Power Query: kasutajaliidese taga: Table.Split ja palju muud.

Huvitavad Artiklid...