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”