Číst v angličtině

Sdílet prostřednictvím


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ěřuje na to, jak zachytit a spravovat chyby na základě vlastní konkrétní logiky.

Poznámka

K předvedení tohoto konceptu tento článek používá 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.

Snímek obrazovky s ukázkovými daty z excelového sešitu obsahujícího tři chyby

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 vypadá.

Snímek obrazovky s ukázkovou tabulkou načtenou 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.

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ý používá 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

Tento 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, pak výstupem je hodnota definovaná za otherwise příkazem, 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.

Snímek obrazovky tabulky se standardními chybami sazby nahrazenými speciální sazbou ve sloupci Konečná sazba

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ě zkoumat pouze chybové součásti jedné chybové hodnoty najednou. V tomto okamžiku vytvoříte nový vlastní sloupec a použijete try výraz.

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 správnou hodnotu nebo chybový záznam.

Snímek obrazovky tabulky s přidaným sloupcem Všechny chyby a chybami zobrazenými jako Záznamy

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řejňuje 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í tento sloupec hodnotu ze sloupce Standardní sazba . Pro hodnoty s chybami toto pole není k dispozici a během operace rozbalení má null tento sloupec hodnoty.
  • Všechny chyby.Error – pokud hodnota ze sloupce Standardní sazba měla chybu, zobrazí tento sloupec záznam chyby pro hodnotu ze sloupce Standardní sazba . Pro hodnoty bez chyb není toto pole k dispozici a během operace rozbalení má null tento sloupec hodnoty.

Snímek obrazovky tabulky s novými poli ve sloupcích s vybranou hodnotou All.Errors.Error a zobrazenými chybovými zprávami pod tabulkou

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, pak výstup je hodnota ze sloupce Standardní sazba .
  • Jinak platí, že pokud se hodnota ve sloupci All Errors.Errors.Message nerovná Invalid cell value '#REF!'., je 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.

Snímek obrazovky konečné tabulky se zbývajícími sloupci se správnými 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