May 17, 2021
Zadnji štirje kvartali v Power BI
V članku je uporabljen Power BI Desktop verzije 2.76.5678.782 (December 2019).
Pri poslovnih poročilih nas pogosto zanimajo rezultati v zadnjem kvartalu, zadnjih dveh kvartalih in podobno. V ta namen lahko ustvarimo razčlenjevalnik, ki nam v izbiro ponudbo zadnje kvartale. Oglejmo si, kako ustvarimo tako tabelo v Power Query.
Začnimo z opozorilom, da v naši koledarski tabeli Calendar potrebujemo stolpec YM sort, ki vsebuje število dni za določen datum.
Če stolpca YM sort še nimate v tabeli Calendar, ga lahko enostavno dodate z Add Column > Custom Column.
V urejevalnik vnesete formulo [Year]*12 + [Month] in potrdite z OK.
Zdaj lahko začnemo našo poizvedbo za zadnje 4 kvartale. Sledimo naslednjim korakom.
Začnemo z referenco na tabelo Calendar.
Odstranimo vse stolpce razen Date, Year, Quarter in YM sort z desnim klikom, Remove Other Columns.
Odstranimo duplikate z desnim klikom, Remove Duplicates.
Preberemo zadnji dve števili iz stolpca Year. Izberemo Transform > Extract Last Characters in vnesemo 2.
Stolpec YM sort sortiramo padajoče.
Združimo stolpca z izbiro Quarter in Year (v tem vrstnem redu) in z desnim klikom izberemo Merge Columns.
Filtriramo stolpec Date na datume, ki so starejši od trenutnega datuma. Z desnim klikom izberemo Date > Date Filters > Before.
Izberemo is before in Today.
Datumi se zdaj filtrirajo.
Izberemo še Keep Rows > Keep Top Rows.
Vnesemo 4. Končna tabela je zdaj taka.
Zdaj lahko tabelo naložimo v model, in s pomočjo razčlenjevalnika hitro raziščemo podatke v zadnjih kvartalih.
Bližnjica: uporabi kodo
Namesto ročnega urejanja lahko uporabimo tudi kodo, ki jo lahko vnesemo v Advanced Editor in dobimo enak rezultat.
let
Source = Calendar,
#”Removed Other Columns” = Table.SelectColumns(Source,{“Date”,”Year”, “Quarter”, “YM sort”}),
#”Removed Duplicates” = Table.Distinct(#”Removed Other Columns”, {“Year”, “Quarter”}),
#”Extracted Last Characters” = Table.TransformColumns(#”Removed Duplicates”, {{“Year”, each Text.End(Text.From(_, “sl-SI”), 2), type text}}),
#”Sorted Rows” = Table.Sort(#”Extracted Last Characters”,{{“YM sort”, Order.Descending}}),
#”Merged Columns” = Table.CombineColumns(#”Sorted Rows”,{“Quarter”, “Year”},Combiner.CombineTextByDelimiter(“-“, QuoteStyle.None),”Quarter.1”),
#”Renamed Columns” = Table.RenameColumns(#”Merged Columns”,{{“Quarter.1”, “Quarter”}}),
#”Filtered Rows” = Table.SelectRows(#”Renamed Columns”, each [Date] < Date.From(DateTime.LocalNow())),
Custom1 = #”Filtered Rows”,
#”Kept First Rows” = Table.FirstN(Custom1,4)
in
#”Kept First Rows”