Excel MVP-ovi napadaju problem čišćenja podataka u Power Queryju - Excel savjeti

Sadržaj

Bilješka

Ovo je jedan od niza članaka koji detaljno opisuju rješenja poslana za izazov Podcast 2316.

Excel MVP Oz Du Soleil iz programa Excel on Fire na YouTubeu spomenuo je brazilskog jahača bikova Kaique Pachecho. Oz je prva osoba koja je primijetila da sam krenuo polaganim putem dodajući četiri četvrtine.

Ozov video je:
https://www.youtube.com/watch?v=OluZlF44PNI

Njegov kod je:

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"

Još jedno rješenje, ovo od Excela MVP-a John MacDougall.

  • John je prvi rekao da brisanjem dva dodatna koraka dodana Power Query uklanjate neparne sufikse na duplikatima Q1 Q2 Q3 Q4.
  • John je rano upotrijebio indeksni stupac koji će se koristiti na kraju za sortiranje. Ali - John je povezao svoj indeksni stupac nakon opisa kategorije. Koristio je okomiti znak cijevi | kako bi kasnije mogao razbiti podatke.
  • John je svoj uvjetni stupac utipkao kao Prilagođeni stupac umjesto da koristi sučelje uvjetnog stupca.
Uvjetni stupac kao prilagođeni stupac

Pogledajte Johnov video ovdje:
https://www.youtube.com/watch?v=Dqmb6SEJDXI

Excel MVP Ken Puls, koautor knjige M is for (Data) Monkey poslana je u tri rješenja. Njegova je uvjetna kolona vjerojatno najkraća.

Ali Kenovo preferirano rješenje ignorira izvorno pitanje. Umjesto da kreira tablicu u Power Queryju, on kreira zakretni skup podataka u Power Queryju, a zatim završava s izvedenom tablicom.

Posljednji pregled Kena u Power Queryju izgleda ovako:

Zakretni skup podataka

Evo Kenova koda:

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"

Nakon izrade ovog upita samo kao veze, on zatim koristi zaokretnu tablicu za izradu konačnog izvješća.

Završno izvješće sa zaokretnom tablicom

Rješenja iz drugih MVP-a:

  • Wyn Hopkins kod je ovdje: Power Query: Suočavanje s više identičnih zaglavlja.
  • Kod Mikea Girvina ovdje je: Power Query: Izvlačenje lijevih 2 znaka iz stupca.
  • Rješenje formule Rogera Goviera je ovdje: Formula Solutions.

Povratak na glavnu stranicu za izazov Podcast 2316.

Pročitajte sljedeći članak iz ove serije: Power Query: Iznad korisničkog sučelja: Table.Split i više.

Zanimljivi članci...