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 DAX funkcí.
- Funkce ISERROR, která přebírá jeden výraz a vrací 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 jde o optimalizovanější realizaci vnoření funkce ISERROR do funkce IF.
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žívání 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í dat kvality 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 je také možné řídit nastavením vlastnosti sloupce modelu Prázdné je povoleno na Vypnuto, což způsobí selhání aktualizace dat, pokud budou objeveny 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 IF: logický testovací výraz funkce IF může určit, jestli dojde 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. Příkladem je DIVIDE funkce. Další pokyny k této funkci najdete v článku DAX: DIVIDE funkce vs. operátor dělení (/).
Příklad
Následující výraz pro měření testuje, zda by byla vyvolána chyba. Vrátí BLANK v této instanci (což je případ, kdy nezadáte funkci IF 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])
Související obsah
- Studijní cesta: Použití DAX v Power BI Desktopu
- Otázky? Zkuste se zeptat komunity Power BI
- Návrhy? Přispějte nápady ke zlepšení Power BI