Zpracování chyb

Podobně jako má Excel a jazyk IFERROR DAX funkci, má Power Query vlastní syntaxi pro testování a zachycení chyb.

Jak je uvedeno v článku o řešení chyb v Power Query, můžou se chyby zobrazovat na úrovni kroku nebo buňky. Tento článek se zaměří na to, jak můžete zachytit a spravovat chyby na základě vlastní konkrétní logiky.

Poznámka:

Abyste si tento koncept ukázali, použije tento článek jako zdroj dat excelový sešit. Zde uvedené koncepty platí pro všechny hodnoty v Power Query, nejen pro ty, které pocházejí z excelového sešitu.

Ukázkový zdroj dat pro tuto ukázku je excelový sešit s následující tabulkou.

Ukázková data z Excelu

Tato tabulka z excelového sešitu obsahuje chyby Excelu, například #NULL!, #REF! a #DIV/0! ve sloupci Standardní sazba . Při importu této tabulky do editoru Power Query ukazuje následující obrázek, jak bude vypadat.

Ukázková tabulka v Power Query

Všimněte si, jak se chyby z excelového sešitu zobrazují s [Error] hodnotou v jednotlivých buňkách.

V tomto článku se dozvíte, jak nahradit chybu jinou hodnotou. Kromě toho se dozvíte, jak zachytit chybu a použít ji pro vlastní konkrétní logiku.

V tomto případě je cílem vytvořit nový sloupec Konečná sazba , který bude používat hodnoty ze sloupce Standardní sazba . Pokud dojde k nějakým chybám, použije se hodnota ze sloupce zvláštní sazby.

Poskytnutí alternativní hodnoty při hledání chyb

V tomto případě je cílem vytvořit v ukázkovém zdroji dat nový sloupec Konečná sazba , který bude používat hodnoty ze sloupce Standardní sazba . Pokud dojde k nějakým chybám, použije se hodnota z odpovídajícího sloupce Zvláštní sazba .

Pokud chcete vytvořit nový vlastní sloupec, přejděte do nabídky Přidat sloupec a vyberte Vlastní sloupec. V okně Vlastní sloupec zadejte vzorec try [Standard Rate] otherwise [Special Rate]. Pojmenujte tento nový sloupec Konečná sazba.

Snímek obrazovky s otevřeným dialogem Vlastní sloupec a pokusem jinak zadaný vzorec ve vlastním sloupci

Výše uvedený vzorec se pokusí vyhodnotit sloupec Standardní sazba a vypíše jeho hodnotu, pokud se nenašly žádné chyby. Pokud jsou ve sloupci Standardní sazba nalezeny chyby, bude výstup hodnotou definovanou za příkazem otherwise , což je v tomto případě sloupec Zvláštní sazba .

Po přidání správných datových typů do všech sloupců v tabulce ukazuje následující obrázek, jak vypadá konečná tabulka.

Konečná tabulka zkuste jinak.

Poznámka:

Jako alternativní přístup můžete také zadat vzorec try [Standard Rate] catch ()=> [Special Rate], který je ekvivalentní předchozímu vzorci, ale pomocí klíčového slova catch s funkcí, která nevyžaduje žádné parametry.

Klíčové catch slovo bylo představeno v Power Query v květnu 2022.

Zadejte vlastní logiku podmíněné chyby.

Pomocí stejného ukázkového zdroje dat jako v předchozí části je novým cílem vytvořit nový sloupec pro konečnou sazbu. Pokud hodnota ze standardní sazby existuje, použije se tato hodnota. V opačném případě se použije hodnota ze sloupce Zvláštní sazba s výjimkou řádků s libovolnou #REF! chybou.

Poznámka:

Jediným účelem vyloučení #REF! chyby je demonstrační účely. S koncepty, které jsou uvedené v tomto článku, můžete cílit na libovolná pole podle vašeho výběru ze záznamu chyby.

Když vyberete některou z prázdných znaků vedle chybové hodnoty, zobrazí se podokno podrobností v dolní části obrazovky. Podokno podrobností obsahuje důvod DataFormat.Errorchyby i chybovou zprávu: Invalid cell value '#REF!'

Snímek obrazovky s vybranou chybou a chybovou zprávou v dolní části dialogového okna

Můžete vybrat jenom jednu buňku najednou, takže můžete efektivně zobrazit pouze chybové součásti jedné chybové hodnoty najednou. Tady vytvoříte nový vlastní sloupec a použijete výraz try .

Použití try s vlastní logikou

Pokud chcete vytvořit nový vlastní sloupec, přejděte do nabídky Přidat sloupec a vyberte Vlastní sloupec. V okně Vlastní sloupec zadejte vzorec try [Standard Rate]. Pojmenujte tento nový sloupec Všechny chyby.

Snímek obrazovky s otevřeným dialogem Vlastní sloupec a vzorcem try zadaným ve vlastním sloupci

Výraz try převede hodnoty a chyby na hodnotu záznamu, která označuje, jestli try výraz zpracoval chybu nebo ne, a také správnou hodnotu nebo chybový záznam.

Zkuste zaznamenat hodnoty.

Tento nově vytvořený sloupec můžete rozbalit s hodnotami záznamů a podívat se na dostupná pole, která se mají rozbalit, výběrem ikony vedle záhlaví sloupce.

Snímek obrazovky se sloupcem Všechny chyby se zvýrazněnou ikonou rozbalení a vybranými poli HasError, Value a Error

Tato operace zveřejní tři nová pole:

  • Všechny chyby.HasError – zobrazuje, zda hodnota ze sloupce Standardní sazba měla chybu, nebo ne.
  • Všechny chyby.Value – pokud hodnota ze sloupce Standardní sazba neměla žádnou chybu, zobrazí se v tomto sloupci hodnota ze sloupce Standardní sazba . U hodnot s chybami nebude toto pole k dispozici a během operace rozbalení bude tento sloupec obsahovat null hodnoty.
  • Všechny chyby.Error – pokud hodnota ze sloupce Standardní sazba měla chybu, zobrazí se v tomto sloupci záznam chyby pro hodnotu ze sloupce Standardní sazba . Pro hodnoty bez chyb nebude toto pole k dispozici a během operace rozbalení bude tento sloupec obsahovat null hodnoty.

Snímek obrazovky tabulky s novými poli ve sloupcích s vybranou hodnotou All.Errors.Error a zobrazenou chybovou zprávou v dolní části tabulky

Pro další šetření můžete rozbalit sloupec Všechny chyby.Error a získat tři komponenty záznamu chyby:

  • Důvod chyby
  • Chybová zpráva
  • Podrobnosti o chybě

Po dokončení operace rozbalení se v poli Všechny chyby.Error.Message zobrazí konkrétní chybová zpráva, která vám přesně řekne, jakou chybu Excelu má každá buňka. Chybová zpráva je odvozena z pole Chybová zpráva záznamu chyby.

Snímek obrazovky s zobrazenými konkrétními chybovými zprávami

Teď s každou chybovou zprávou v novém sloupci můžete vytvořit nový podmíněný sloupec s názvem Konečná sazba a následující klauzule:

  • Pokud se hodnota ve sloupci All Errors.Errors.Message rovná null, bude výstup hodnotou ze sloupce Standardní sazba .
  • Pokud se hodnota ve sloupci All Errors.Errors.Message nerovná Invalid cell value '#REF!'., bude výstup hodnotou ze sloupce Zvláštní sazba .
  • Else, null.

Snímek obrazovky s dialogovým oknem Přidat podmíněný sloupec se všemi chybovými podmínkami nastavenými pro nový sloupec

Po uložení pouze sloupců Account, Standard Rate, Special Rate a Final Rate (Sazba) a Final Rate (Konečná sazba) a přidání správného datového typu pro každý sloupec ukazuje následující obrázek, jak vypadá konečná tabulka.

Konečná tabulka s datovými typy

Použití try a catch s vlastní logikou

Alternativně můžete také vytvořit nový vlastní sloupec pomocí klíčových try slov a catch klíčových slov.

try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null

Dialogové okno Vlastní sloupec s novým vzorcem zobrazující přístup k syntaxi try and catch

Další materiály