DAX-debuggauksen uusi aika Power BI -kontekstissa

Analytiikkakehitys

DAX:n maailmaan on elokuussa 2022 hiipinyt kaikessa hiljaisuudessa kaavojen debuggaukseen käytettävä funktio EVALUATEANDLOG. Funktiota ei ole vielä esitelty kuukausittaisessa uusien Power BI-ominaisuuksien julkaisussa. Myöskään Power BI Desktopin intellisense ei funktiota käyttäjille vielä ehdota. Funktio on kuitenkin olemassa ja kaavoja pääsee debuggaamaan vaikka heti.

Aiemmin DAX:n debuggauksessa on saanut käyttää luovuutta määrittäessään raportoinnin kannalta sopivia virtuaalitauluja ja tilannekohtaisia suodatuksia. Apuna on voinut käyttää esimerkiksi DAXStudiota, joka on kuitenkin ollut verrattain kömpelö työkalu juuri edellä mainituista syistä, kun raportoinnissa käytetyt kaavat eivät ole olleet sellaiseen valmiita testattaviksi. Toinen vaihtoehto on ollut pilkkoa DAX-lausekkeet sopivan pieniin osiin. On voitu esimerkiksi muodostaa omat mittarinsa jakolaskun osoittajalle ja nimittäjälle, jotka on sitten pudotettu visuaalille erikseen. Näin on nähty saavatko osaset odotettuja arvoja suodatinkontekstissa. EVALUATEANDLOG tuo tähän erinomaisen ratkaisun ja tarjoaa mahdollisuuden kirjoittaa debug-logiikan DAX-kaavan sekaan. EVALUATEANDLOG tulostaa sitten määrityksen perusteella välituloksia logiin. DAX-lausekkeen eri osia voidaan näin testata yhdellä kertaa suoraan kaavaeditorilla.

Power BI Desktop ei natiivisti kykene (ainakaan tämän blogikirjoituksen aikaan) esittämään EVALUATEANDLOG:n tuottamia tulosteita DAX-kaavojen arvoista. Vaihtoehtoina esittämisalustaksi on tällä hetkellä tarjolla Microsoftin oma SQL Server Profiler, jota on tavallisesti hyödynnetty Power BI:n kanssa hitaasti vastaavien kyselyiden tunnistamiseen. Toinen vaihtoehto on kolmannen osapuolen DAXDebugOutput -sovellus. Linkit näiden lataamiseen löytyvät kirjoituksen lopusta.

Sitten asiaan!

Miten tätä ihmekaavaa sitten käytetään? Syntaksi on muotoa:

EVALUATEANDLOG(<Table or scalar expression> [, <Label>] [,<max rows>])

Table or scalar expression: Lauseke, joka palauttaa taulukon tai skalaariarvon

Label: Voidaan nimetä kunkin kaavan osan debuggaukseen käytetty EVALUATEANDLOG. Label tulee näkyviin omana sarakkeenaan SQL Server Profilerin tulosteessa.

Max rows: Taulukkoja palauttavan lausekkeen tapauksessa tulostettava rivien maksimimäärä. Oletusarvo on 10 riviä.

Otetaan esimerkiksi yksinkertainen tilanne, jossa summataan tuotteiden myyntiä tuotteittain käyttäen SUMX-funktiota, jonka ympärille EVALUATEANDLOG on nyt kääritty. Huom! Vaikka Intellisense esittää syntaksivirhettä, EVALUATEANDLOG kuitenkin toimii.

Power BI DAX kuva 1

Mittari on pudotettu normaalisti tuotteen nimen kanssa taulukkovisuaaliin.

Power BI DAX kuva 2

Seuraavaksi voimme avata SQL Server Profilerin, jolla luodaan File-valikosta New trace. Valitaan palvelimen tyypiksi Analysis Services, kun tabulaarimalli raportin alla pyörii ja haetaan palvelimen nimeksi portti esimerkiksi DAXStudiolla, liitetään Server Profileriin ja klikataan connect.

Power BI DAX kuva 3
Power BI DAX kuva 4

Voidaan nimetä Trace ja valitaan Event Selection -sivulla ainakin DAX Evaluation Log. Lopuksi klikataan Run ja logien kirjaus käynnistyy.

Power BI DAX kuva 5
Power BI DAX kuva 6

Kokeillaan tiputtaa mittari uudelleen taulukkovisuaaliin Power BI Desktopissa ja seurataan logeja profilerista. Profilerin puolelle on syntynyt kaksi log-eventiä, joiden Label-sarakkeessa näkyy antamamme nimi.

Power BI DAX kuva 7

Klikkaamalla log-eventiä nähdään alaikkunassa EVALUATEANDLOG:n palauttama json-muotoinen vastaus DAX-kyselyn vaiheista. Tässä tapauksessa ”input”-kenttä näyttää voimassa olevan suodatuksen ja ”output”-kenttä mittarin arvon kyseisessä kontekstissa. Näemme samat arvot alkuperäisessä taulukossa.

Power BI DAX kuva 8

Muutetaan tilannetta nyt niin, että lisätään taulukkovisuaaliin myös tuotteen kategoria ja alakategoria. Huomataan, että päivitykset raportilla tuottavat log-eventejä. Sekä kategoria, että alakategoria näkyvät nyt tuotteen rinnalla suodattimena ”input”-kentässä.

Power BI DAX kuva 9

Näissä yksinkertaisissa tilanteissa nähdään toki vastaavat tiedot suoraan taulukosta Power BI Desktopilla, mutta entä jos DAX-kaavassa olisi enemmän elementtejä, joiden arvoja meidän tulisi seurata eri suodatuksilla?

Muodostetaan seuraavanlainen DAX-kaava, joka laskee myynnin muutosprosentin edelliseen vuoteen verrattuna ja kääritään lausekkeen sisältämiä DAX-muuttujia EVALUATEANDLOG:n sisään.

Power BI DAX kuva 10

Kukin osio tulee nyt logattua labelilla nimettynä

Power BI DAX kuva 11

Jos tarkastellaan suodatusta [Clothing, Jerseys, Long-Sleeve Logo Jersey, S], jonka Muutos-% on n. 127%, näemme logeista kyseisellä suodatuksella mittarin muuttujien arvot:

Power BI DAX kuva 12

MyyntiVV

Power BI DAX kuva 13

MyyntiEV

Power BI DAX kuva 14

Muutos

Power BI DAX kuva 15

Muutos%

Power BI DAX kuva 16

Uskon että EVALUATEANDLOG tulee viemään DAX-kaavojen debuggauksen uudelle tasolle, kun työkalut logien tulostamiseen kehittyvät. Lievästä kankeudesta huolimatta SQL Server Profilerilla saa pienten alkuvalmisteluiden jälkeen verrattain helposti kaavojen osien tuloksia tulostettuna kehittäjän nähtäville. DAXDebugOutput on huomattavasti kevyempi vaihtoehto erityisesti EVALUATEANDLOG:n logien esittämiseen ja ehdottomasti kokeilemisen arvoinen työkalu. Toivottavasti Power BI:hin kehitetään lähitulevaisuudessa valmiudet esittää natiivisti EVALUATEANDLOG:n tuottamia tulosteita. Kehittäjäystävällisyys lisääntyisi ja työskentelyflow parantuisi roimasti.

Linkit työkaluihin:

SQL Server Profiler toimitetaan esimerkiksi SQL Server Management studion mukana

https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16

DAXDebugOutput

https://github.com/pbidax/DAXDebugOutput/releases/tag/v0.1.0-beta

Lisää ajankohtaisia julkaisuja:

Mitä on Unit Economics -analyysi?
Tiedät liikevaihtosi, katteesi ja tuloksesi — mutta tiedätkö, tuottaako yksittäinen asiakkuus enemmän arvoa kuin sen hankkiminen ja palveleminen maksaa? Unit economics vastaa juuri tähän kysymykseen. Tämä artikkeli avaa, mitä unit economics tarkoittaa, mistä komponenteista se rakentuu ja miten sitä sovelletaan käytännössä — esimerkkinä sopimusperusteinen B2C-liiketoiminta, jossa asiakas voi pitää yhtä aikaa useita voimassaolevia sopimuksia.
Tutustu tarinaan
Millainen on data-alustan kehittämisprojekti?
Organisaation data-alustan rakentaminen tai modernisointi ei ole perinteinen IT-projekti. Se on kehityshanke, jossa teknologia, liiketoiminnan ymmärrys ja tiedonhallinta kietoutuvat yhteen — ja jossa todellinen työ alkaa vasta kun oikea data kohtaa oikean maailman haasteet. Tässä blogissa pureudumme data-alustaprojektin luonteeseen, vaiheisiin, riskeihin ja parhaisiin käytäntöihin. Käymme läpi, miksi data-alustaprojekti on enemmän tutkimusmatka kuin kartta, ja miten tekoäly muuttaa tätä kokonaisuutta.
Tutustu tarinaan
Mitä on henkilöstöanalytiikka
Jokainen organisaatio tekee jatkuvasti päätöksiä ihmisistä — rekrytoinneista, palkankorotuksista, osaamisen kehittämisestä, työvoimasuunnittelusta. Mutta kuinka moni näistä päätöksistä perustuu dataan? Tämä artikkeli avaa, mitä henkilöstöanalytiikka käytännössä tarkoittaa, mitä hyötyjä se tuo ja miten hajallaan oleva HR-data muutetaan päätöksentekoa ohjaavaksi kokonaisuudeksi.
Tutustu tarinaan
Datasopimus käytännössä — miten data-alustan luotettavuus rakennetaan
Datatiimit käyttävät jopa 40–60 % ajastaan virheiden selvittämiseen, joiden syy on muualla. Sarake vaihtaa nimeä, tyyppi muuttuu, kenttä alkaa tulla tyhjänä — ja loppupään raportit hajoavat ääneti. Datasopimus estää tämän tekemällä odotukset näkyviksi ja valvottaviksi.
Tutustu tarinaan
Mitä on tekoälyavustettu sovelluskehitys?
Lisää tuottavuutta ohjelmistokehitykseen agenttisella kehityksellä.
Tutustu tarinaan

Lisää ajankohtaisia julkaisuja:

Mitä on Unit Economics -analyysi?
Tiedät liikevaihtosi, katteesi ja tuloksesi — mutta tiedätkö, tuottaako yksittäinen asiakkuus enemmän arvoa kuin sen hankkiminen ja palveleminen maksaa? Unit economics vastaa juuri tähän kysymykseen. Tämä artikkeli avaa, mitä unit economics tarkoittaa, mistä komponenteista se rakentuu ja miten sitä sovelletaan käytännössä — esimerkkinä sopimusperusteinen B2C-liiketoiminta, jossa asiakas voi pitää yhtä aikaa useita voimassaolevia sopimuksia.
Tutustu tarinaan
Millainen on data-alustan kehittämisprojekti?
Organisaation data-alustan rakentaminen tai modernisointi ei ole perinteinen IT-projekti. Se on kehityshanke, jossa teknologia, liiketoiminnan ymmärrys ja tiedonhallinta kietoutuvat yhteen — ja jossa todellinen työ alkaa vasta kun oikea data kohtaa oikean maailman haasteet. Tässä blogissa pureudumme data-alustaprojektin luonteeseen, vaiheisiin, riskeihin ja parhaisiin käytäntöihin. Käymme läpi, miksi data-alustaprojekti on enemmän tutkimusmatka kuin kartta, ja miten tekoäly muuttaa tätä kokonaisuutta.
Tutustu tarinaan
Mitä on henkilöstöanalytiikka
Jokainen organisaatio tekee jatkuvasti päätöksiä ihmisistä — rekrytoinneista, palkankorotuksista, osaamisen kehittämisestä, työvoimasuunnittelusta. Mutta kuinka moni näistä päätöksistä perustuu dataan? Tämä artikkeli avaa, mitä henkilöstöanalytiikka käytännössä tarkoittaa, mitä hyötyjä se tuo ja miten hajallaan oleva HR-data muutetaan päätöksentekoa ohjaavaksi kokonaisuudeksi.
Tutustu tarinaan
Datasopimus käytännössä — miten data-alustan luotettavuus rakennetaan
Datatiimit käyttävät jopa 40–60 % ajastaan virheiden selvittämiseen, joiden syy on muualla. Sarake vaihtaa nimeä, tyyppi muuttuu, kenttä alkaa tulla tyhjänä — ja loppupään raportit hajoavat ääneti. Datasopimus estää tämän tekemällä odotukset näkyviksi ja valvottaviksi.
Tutustu tarinaan
Mitä on tekoälyavustettu sovelluskehitys?
Lisää tuottavuutta ohjelmistokehitykseen agenttisella kehityksellä.
Tutustu tarinaan