Jaa


Virhefunktioiden asianmukainen käyttö

Kun kirjoitat tietomallintajana DAX lauseketta, joka saattaa aiheuttaa arviointiaikavirheen, voit harkita kahden hyödyllisen DAX funktion käyttämistä.

  • ISERROR-funktio palauttaa yksittäiselle lausekkeelle TRUE, jos lauseke aiheuttaa virheen.
  • IFERROR-funktiota käytetään kahdessa lausekkeessa. Jos ensimmäisen lausekkeen tulos on virhe, palautetaan toisen lausekkeen arvo. Se toimii itse asiassa optimoituna ISERROR-funktion upotuksena IF-funktioon.

Vaikka näistä funktioista voi olla hyötyä ja ne voivat auttaa kirjoittamaan helposti ymmärrettäviä lausekkeita, ne voivat myös heikentää laskutoimitusten suoritustehoa merkittävästi. Näin voi käydä, koska nämä funktiot lisäävät tarvittavien säilömoduulitarkistusten määrää.

Useimmat arviointiaikavirheet johtuvat odottamattomista tyhjistä arvoista tai nolla-arvoista tai virheellisestä tietotyyppimuunnoksesta.

Suosituksia

On parempi välttää ISERROR- ja IFERROR-funktioiden käyttöä. Käytä sen sijaan puolustusstrategioita kehittäessäsi mallia ja kirjoitettaessa lausekkeita. Strategioita voivat olla esimerkiksi seuraavat:

  • Varmista, että malliin ladatut tiedot ovat korkealaatuisia: Power Query -muunnosten avulla voit poistaa tai korvata virheellisiä tai puuttuvia arvoja sekä määrittää oikeita tietotyyppejä. Power Query -muunnosta voidaan käyttää myös rivien suodattamiseen, kun virheet, kuten virheellinen tietojen muuntaminen, tapahtuvat.

    Tietojen laatua voidaan myös hallita asettamalla mallisarakkeen Is Nullable -ominaisuuden arvoksi Off, jolloin tietojen päivittäminen epäonnistuu, jos siinä on tyhjiä kohtia. Jos tämä virhe ilmenee, onnistuneen päivityksen tuloksena ladatut tiedot säilyvät taulukoissa.

  • IF funktion käyttäminen:IF funktion loogisen testin lausekkeella voidaan selvittää virhetuloksen esiintyminen. Huomaa, että ISERROR- ja IFERROR-funktioiden tavoin tämä funktio voi aiheuttaa lisää säilömoduulitarkistuksia, mutta se todennäköisesti toimii niitä paremmin, koska se ei vaadi virheilmoitusta.

  • Virhesietoisten funktioiden käyttäminen: Jotkin DAX funktiot testaavat ja kompensoivat virhe-ehtoja. Näiden funktioiden avulla voit antaa vaihtoehtoisen tuloksen, joka palautetaan sen sijaan. DIVIDE on yksi tällainen esimerkki. Lisäohjeita tästä funktiosta on artikkelissa DAX: DIVIDE funktion ja jako-operaattorin (/) vertailu.

Esimerkki

Seuraava mittarilauseke testaa virheiden esiintymistä. Se palauttaa tässä esiintymässä BLANK (kuten silloin, kun et anna IF-funktiolle value-if-false-lauseketta).

Profit Margin
= IF(ISERROR([Profit] / [Sales]))

Tätä mittarilausekkeen seuraavaa versiota on parannettu käyttämällä IFERROR-funktiota IF- ja ISERROR-funktioiden sijasta.

Profit Margin
= IFERROR([Profit] / [Sales], BLANK())

Tämä mittarilausekkeen lopullinen versio saavuttaa saman tuloksen, mutta tehokkaammin ja tyylikkäämmin.

Profit Margin
= DIVIDE([Profit], [Sales])