Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
Tato tabulka z excelového sešitu obsahuje chyby aplikace Excel, jako jsou #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á.
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.
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.
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 pro řízení chybových stavů.
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 jakékoli prázdné znaky 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!'
Můžete vybrat jenom jednu buňku najednou, takže můžete efektivně zkoumat pouze chybové součásti jedné chybové hodnoty najednou. V tomto bodě vytvoříte nový vlastní sloupec a použijete výraz try.
Použijte 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.
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.
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.
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 není toto pole k dispozici a během operace rozbalování má tento sloupec hodnoty
null. -
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 rozšíření má tento sloupec hodnoty
null.
Pro další šetření můžete rozbalit sloupec Všechny chyby.Error a získat tři komponenty záznamu chyby:
- Důvod chyby
- Zpráva o chybě
- 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.
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 Všechny chyby.Error.Message rovná
null, pak výstup je hodnota ze sloupce Standardní sazba . - Pokud se hodnota ve sloupci Všechny chyby.Error.Message nerovná
Invalid cell value '#REF!'., je výstupem hodnota ze sloupce Zvláštní sazba . - Jinak, null.
Ponecháním pouze sloupců Account, Standard Rate, Special Rate a Final Rate a přidáním správného datového typu pro každý sloupec následující obrázek ukazuje, jak vypadá konečná tabulka.
Použití try a catch s vlastní logikou
Můžete také vytvořit nový vlastní sloupec pomocí klíčových slov try a catch.
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null