Vhodné použití chybových funkcí

Když jako modelátor dat napíšete výraz DAX, který může vyvolat chybu v době vyhodnocení, můžete zvážit použití dvou užitečných funkcí DAX.

  • Funkce ISERROR , která přebírá jeden výraz a vrátí hodnotu TRUE, pokud tento výraz způsobí chybu.
  • Funkce IFERROR , která přebírá dva výrazy. Pokud první výraz způsobí chybu, vrátí se hodnota druhého výrazu. Ve skutečnosti je optimalizovanější implementací vnoření funkce ISERROR uvnitř funkce KDYŽ .

I když ale tyto funkce můžou být užitečné a můžou přispět k psaní snadno srozumitelných výrazů, mohou také výrazně snížit výkon výpočtů. K tomu může dojít, protože tyto funkce zvyšují požadovaný počet kontrol modulu úložiště.

Většina chyb při vyhodnocování je způsobená neočekávanými hodnotami BLAN nebo nulovými hodnotami nebo neplatným převodem datového typu.

Doporučení

Je lepší se vyhnout použití funkcí ISERROR a IFERROR. Místo toho při vývoji modelu a psaní výrazů použijte obranné strategie. Mezi strategie patří:

  • Zajištění načtení kvalitních dat do modelu: Pomocí transformací Power Query odeberte nebo nahraďte neplatné nebo chybějící hodnoty a nastavte správné datové typy. Transformace Power Query se dá použít také k filtrování řádků, když dojde k chybám, jako je neplatný převod dat.

    Kvalitu dat lze také řídit nastavením vlastnosti Sloupec modelu je Nullable na Hodnotu Vypnuto, což selže při aktualizaci dat, pokud by měly být zjištěny prázdné hodnoty. Pokud k tomuto selhání dojde, data načtená v důsledku úspěšné aktualizace zůstanou v tabulkách.

  • Použití funkce KDYŽ: Logický testovací výraz funkce KDYŽ může určit, jestli by došlo k chybě. Všimněte si, že podobně jako funkce ISERROR a IFERROR může tato funkce vést k dalším kontrolám modulu úložiště, ale pravděpodobně bude fungovat lépe, protože není potřeba vyvolat žádnou chybu.

  • Použití funkcí odolných proti chybám: Některé funkce DAX testují a kompenzují chybové stavy. Tyto funkce umožňují zadat alternativní výsledek, který by se místo toho vrátil. Jedním z takových příkladů je funkce DIVIDE . Další pokyny k této funkci najdete v článku DAX: FUNKCE DIVIDE vs. operátor dělení (/).

Příklad

Následující výraz míry testuje, zda by byla vyvolána chyba. Vrátí hodnotu BLANK v této instanci (což je případ, kdy funkci KDYŽ nezadáte výrazem value-if-false).

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

Tato další verze výrazu míry byla vylepšena pomocí funkce IFERROR místo funkcí IF a ISERROR.

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

Tato konečná verze výrazu míry však dosahuje stejného výsledku, ale efektivněji a elegantněji.

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