Contact us

Pošlji
povpraševanje

Zakladnica znanja

  • Predzanje

  • Kategorije

May 15, 2020

Dinamični koledar v Power Query

Avtor: Branka Trifunović

V članku je uporabljen Power BI Desktop verzije 2.76.5678.782 (januar 2020).

Koledarska tabela je najpomembnejša tabela v podatkovnem modelu Power BI. Omogoča nam, da se povezujemo na velike podatkovne tabele in agregiramo ter filtriramo podatke. Omogoča nam tudi uporabo časovnih funkcij kot so TOTALYTD(),TOTALMTD(), DATESBETWEEN() in podobnih, ki delujejo samo na kontinuiranem zaporedju datumov. Več o koledarski tabeli lahko preberemo v članku Koledar v Power BI.

Ob uvozu podatkov Power BI generira skrite koledarske tabele za vsako datumsko polje v tabeli. Za tri datumska polja, npr. Datum prodaje, Rok plačila in Datum plačila, bi nastale tri različne datumske tabele, ki bi upočasnjevale podatkovni model. Dobra praksa je, da to nastavitev izklopimo in koledarsko tabelo izdelamo sami. Nastavitev najdemo na File > Options and settings > Options > Data Load > Global > Auto date/time for new files.

Kako izdelamo dinamičen koledar v Power Query

Oglejmo si izdelavo dinamičnega koledarja na primeru. V Power Query smo uvozili naslednje tabele s poslovnimi podatki.

Podatkovna tabela s poljem Date.

Združimo poizvedbe

Datume vsebujeta samo stolpca v poizvedbi Actual in Plan. Obema poizvedbama naredimo referenco tako, da nanju kliknemo z desnim gumbom in izberemo Reference. Novi referenci smo poimenovali Koledar in hKoledar. V Koledar nato izberemo stolpec Date in z desnim klikom Remove Other Columns. Enako naredimo v hKoledar. V obeh tabelah tako ostane samo stolpec Date. Nato tabeli združimo oz. pripnemo eno pod drugo: kliknemo na poizvedbo Koledar, Append Queries in izberemo tabelo za pripenjanje hKoledar.

Tabelo hKoledar pripnemo tabeli Koledar.

Zdaj imamo vse datume v našem modelu zbrane v enem stolpcu v tabeli Koledar.

Poiščemo začetni in končni datum

Med vsemi zbranimi datumi v resnici potrebujemo le dva: prvi dan v letu začetnega datuma in zadnji dan v letu končnega datuma. Primer: če sta začetni in končni datum v našem podatkovnem modelu 3.7.2010 in 15.10.2019, želimo da nam naša poizvedba vrne 1.1.2010 in 31.12.2019.

Najprej na našem stolpcu datumov poračunamo prvi dan v letu: z desnim klikom izberemo Transform > Year > StartOfYear. Ukaz nam vsak datum spremeni na prvi dan ustreznega leta. Nato odstranimo dvojnike z desnim klikom, Remove Duplicates. Ostanejo nam samo enolični začetki let. Ta korak ni potreben, nam pa pohitri delovanje pri vseh naslednjih korakih. Stolpec nato podvojimo z desnim klikom, Duplicate Column. V novem stolpcu z desnim klikom izberemo Transform > Year > EndOfYear. Zdaj imamo stolpca začetkov in koncev posameznih let.

Začetni in končni datum vseh let, ki se pojavijo v modelu.

Obema stolpcema spremenimo podatkovni tip v število. Vsi datumi v Power BI so namreč število, ki predstavlja število dni od 1.1.1900. Če na primer število 5 spremenimo v datum, dobimo 5.1.1900.

Datume spremenimo v števila in jih razvrstimo: v prvi koloni poiščemo najmanjšo vrednost, v drugi največjo .

Najstarejši in najnovejši datum sta torej zgolj največje in najmanjše število. Najmanjšo vrednost poiščemo tako, da za prvi stolpec izberemo opcije Transform > Statistics > Minimum (glej sliko zgoraj). Dobili smo korak, ki izpiše na najstarejši datum v modelu. Korak v oknu Applied Steps preimenujemo v MinDate. Nato poiščemo še najnovejši datum: korak MinDate podvojimo in dvojnik preimenujemo v MaxDate. Korak izberemo in formulo popravimo iz Min na Max.

Korak MinDate podvojimo, dvojnik preimenujemo v MaxDate in popravimo formulo na Max.

Začetni in končni datum imamo tako zapisana v dveh korakih, ki ju bomo uporabili za generiranje seznama datumov.

Ustvarimo seznam

S pomočjo začetnega in končnega datuma ustvarimo seznam zaporedja datumov. Kliknemo na znak za formulo fx, s čimer se odpre okno za vstavljanje koraka Insert Step. Opcijo potrdimo z Insert . V vnosno vrstico za formulo vnesemo = {MinDate..MaxDate}.

Z vnosom formule ustvarimo seznam datumov med vrednostima MinDate in MaxDate .

Formula nam generira seznam števil med datumoma. Seznam pretvorimo v tabelo z desnim klikom na kolono List, To Table. Podatkovni tip v tabeli nato spremenimo v datum. Dobili smo tabelo vseh datumov, ki jih potrebujemo za naš podatkovni model.

Uporaba M funkcije

Vse korake, ki smo jih izvedli pri izdelavi koledarja, si je Power Query zapisal. Vidimo jih lahko v delu Applied Steps, na desni strani delovnega okna. Koraki so zapisani v jeziku M in si jih lahko ogledamo v vrstici za formulo (glej sliko zgoraj), ko na korak kliknemo.

Vse korake lahko združimo v eno funkcijo, ki jo uporabimo vsakič, ko želimo izdelati nov dinamični koledar. Kakšna je ta funkcija in kako jo uporabimo, si bomo ogledali v članku Dinamični koledar v Power Query z M funkcijo.

Kazalo