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 arvon 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 Tyhjäarvot salliva -ominaisuus pois käytöstä, jolloin tietoja ei voida päivittää, jos tyhjiä kohtia on. Jos tämä virhe ilmenee, onnistuneen päivityksen tuloksena ladatut tiedot säilyvät taulukoissa.

  • IF-funktion käyttö: 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ö: Jotkin DAX-funktiot testaavat ja kompensoivat virhe-ehtoja. Näiden funktioiden avulla voit antaa vaihtoehtoisen tuloksen, joka palautetaan sen sijaan. DIVIDE-funktio on esimerkki tästä. Lisätietoja tästä funktiosta on artikkelissa DAX: DIVIDE-funktion ja jako-operaattorin (/) vertailu.

Esimerkki

Seuraava mittarilauseke testaa virheiden esiintymistä. Se palauttaa tyhjän arvon tässä esiintymässä (kuten silloin, kun et anna IF-funktiolle arvo jos epätosi -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])