DAX časovna inteligenca – kaj se zares dogaja?

30.03.2021

Avtor prispevka: Klemen Vončina, MCT

DAX časovna inteligenca – kaj se zares dogaja?

Ko v Power Pivotu govorimo o časovni inteligenci, večina ljudi pomisli na DAX funkcije, ki nam znajo povedati več o obnašanju naših podatkov skozi čas. Te funkcije so na primer TOTALYTD, TOTALMTD, SAMEPERIODLASTYEAR, PARALLELPERIOD in tako naprej. Tovrstne funkcije so zelo lepa bližnjica, oziroma tako imenovani »syntax sugar«, saj namesto nas spreminjajo nekaj, čemur se v DAX-u reče kontekst filtra.

Vendar bomo, če se bomo zanašali le na te funkcije, slej ko prej naleteli na oviro pri analiziranju podatkov iz preteklih obdobij. Kaj če na primer v podjetju uporabljamo nek nestandarden koledar? V tem primeru bomo morali datumske kalkulacije upravljati z bolj splošnimi DAX funkcijami, kot so ALL, FILTER, CALCULATE in podobno.

Oglejmo si enostaven primer, kako bi lahko z datumi upravljali tudi, če v DAX-u ne bi obstajala nobena datumska funkcija. V ta namen vzemimo funkcijo TOTALYTD, ki nam izračuna kumulativo nekih vrednosti do določenega datumu v nekem letu.

Ta funkcija bo vzela mero [Prodaja skupaj], ki je le vsota stolpca iz naše namišljene baze, ki vključuje rezultate prodaj, ter spremenila kontekst filtra tako, da bodo v vsaki vrstici poročila vključeni vsi rezultati prodaje do tistega datuma v tekočem letu.

Če funkcija TOTALYTD v DAX-u ne bi obstajala, bi lahko tovrstno kalkulacijo dosegli tudi s pomočjo bolj splošnih DAX funkcij. S pomočjo funkcije CALCULATE bi Power Pivotu povedali, katero mero želimo računati, v nadaljevanju pa bi s pomočjo funkcije FILTER spremenili kontekst filtriranja, ki ga bo funckija CALCULATE uporabljala pri preračunavanju naše mere. Funkcija bi izgledala takole:

V prevodu to pomeni nekaj takšnega:

  • Vzemi mero [Prodaja skupaj].
  • Njene rezultate spremeni tako (FILTER), da boš v vsaki vrstici poročila (oziroma vrtilne tabele) ignoriral trenutni kontekst filtra (ALL).
  • Uporabi kontekst filtra, kjer hkrati (AND) velja, da so datumi, zajeti v kalkulaciji, manjši ali enaki datumu iz trenutne vrstice v poročilu (Koledar[Datum] <= MAX(Koledar[Datum])), ter da so upoštevane le prodaje iz leta, ki se prikazuje v trenutni vrstici poročila.

Kot rečeno, funkcije za časovno inteligenco so samo vnaprej pripravljena bližnjica, teh bližnjic pa je v DAX-u omejeno število. Če želimo opravljati časovne kalkulacije, kakršnih Microsoft ni predvidel, je potrebno dobro razumevanje konteksta filtiranja in poznavanje funkcij, ki znajo ta kontekst spreminjati. Če to poznamo, lahko spišemo poljubno funkcijo za časovno inteligenco.

Avtor prispevka: Klemen Vončina, predavatelj

e-pošta: klemen.voncina@kompas-xnet.si


Potrebuješ pomoč?
Potrebuješ pomoč?