Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Podobne ako majú IFERROR Excel a jazyk DAX funkciu, Power Query má svoju vlastnú syntax na testovanie a zachytenie chýb.
Ako je uvedené v článku o riešení chýb v doplnku Power Query, chyby sa môžu zobraziť buď na úrovni kroku, alebo v bunke. Tento článok sa zameriava na to, ako môžete chytiť a spravovať chyby na základe vlastnej špecifickej logiky.
Note
Na znázornenie tohto konceptu tento článok používa ako zdroj údajov zošit programu Excel. Predstavované koncepty sa vzťahujú na všetky hodnoty v Power Query a nielen tie, ktoré pochádzajú z excelového zošita.
Vzorovým zdrojom údajov pre túto ukážku je excelový zošit s nasledujúcou tabuľkou.
Táto tabuľka z Excel zošita obsahuje v stĺpci štandardnej rýchlosti chyby v Exceli ako #NULL!, #REF! a #DIV/0!. Keď importujete túto tabuľku do editora Power Query, nasledujúci obrázok znázorňuje, ako vyzerá.
Všimnite si, ako sa chyby z excelového zošita zobrazujú s hodnotou [Error] v jednotlivých bunkách.
V tomto článku sa dozviete, ako nahradiť chybu inou hodnotou. Okrem toho sa tiež naučíte, ako chytiť chybu a použiť ju pre svoju vlastnú špecifickú logiku.
Poskytnutie alternatívnej hodnoty pri hľadaní chýb
V tomto prípade je cieľom vytvoriť nový stĺpec Konečná sadzba v vzorkovom dátovom zdroji, ktorý využíva hodnoty zo stĺpca Štandardná sadzba . Ak sa vyskytnú chyby, použije hodnotu z príslušného stĺpca Špeciálna sadzba .
Ak chcete vytvoriť nový vlastný stĺpec, choďte do ponuky Pridať stĺpec a vyberte Vlastný stĺpec. V okne Vlastný stĺpec zadajte vzorec try [Standard Rate] otherwise [Special Rate]. Nazvite tento nový stĺpec Konečná sadzba.
Tento vzorec sa snaží vyhodnotiť stĺpec Štandardná rýchlosť a v prípade nájdenia chýb vyprodukuje jeho hodnotu. Ak sa v stĺpci Štandardná sadzba nájdu chyby, výstup je hodnota definovaná po vyhlásení otherwise , čo je v tomto prípade stĺpec Špeciálna sadzba .
Po pridaní správnych typov údajov do všetkých stĺpcov v tabuľke, nasledujúci obrázok znázorňuje, ako vyzerá finálna tabuľka.
Note
Ako alternatívny prístup môžete zadať aj vzorec try [Standard Rate] catch ()=> [Special Rate], ktorý je ekvivalentom predchádzajúceho vzorcu, ale pomocou kľúčového slova catch (úlovok) s funkciou, ktorá nevyžaduje žiadne parametre.
Kľúčové catch slovo bolo predstavené v doplnku Power Query v máji 2022.
Zadanie vlastnej logiky podmienenej chyby
Použitím rovnakého vzorkového dátového zdroja ako v predchádzajúcej sekcii je novým cieľom vytvoriť nový stĺpec pre konečnú sadzbu. Ak existuje hodnota zo štandardnej sadzby , použije sa táto hodnota. Inak sa používa hodnota zo stĺpca Špeciálna sadzba , okrem riadkov s nejakou #REF! chybou.
Note
Výhradný účel vylúčenia #REF! chyby je na účely demonštrácie. Vďaka konceptom uvedeným v tomto článku môžete do záznamu chýb zacieliť všetky polia podľa svojho výberu.
Keď vedľa chybovej hodnoty vyberiete ľubovoľný prázdny znak, zobrazí sa tabla s podrobnosťami v dolnej časti obrazovky. Tabla podrobností obsahuje dôvod DataFormat.Errorchyby aj chybové hlásenie: Invalid cell value '#REF!'
Naraz môžete vybrať len jednu bunku, takže môžete efektívne preskúmať iba komponenty chyby jednej chybovej hodnoty. Práve v tomto bode vytvoríte nový vlastný stĺpec a použijete try výraz.
Použitie try s vlastnou logikou
Ak chcete vytvoriť nový vlastný stĺpec, choďte do ponuky Pridať stĺpec a vyberte Vlastný stĺpec. V okne Vlastný stĺpec zadajte vzorec try [Standard Rate]. Pomenujte tento nový stĺpec Všetky chyby.
Výraz try konvertuje hodnoty a chyby na hodnotu záznamu, ktorá označuje, či try sa s výrazom zaobchádzalo alebo nie, a na správnu hodnotu alebo záznam chyby.
Tento novovytvorený stĺpec môžete rozbaliť pomocou hodnôt záznamu a pozrieť sa na dostupné polia, ktoré sa majú rozbaliť, výberom ikony vedľa hlavičky stĺpca.
Táto operácia sprístupňuje tri nové polia:
- All Errors.HasError—ukazuje, či hodnota zo stĺpca Standard Rate obsahovala chybu alebo nie.
-
All Errors.Value – ak hodnota zo stĺpca Standard Rate neobsahovala chybu, tento stĺpec zobrazuje hodnotu zo stĺpca Standard Rate . Pre hodnoty s chybami toto pole nie je k dispozícii a počas operácie rozbalenia má
nulltento stĺpec hodnoty. -
All Errors.Error—ak hodnota zo stĺpca Standard Rate obsahovala chybu, tento stĺpec zobrazuje záznam chyby pre hodnotu zo stĺpca Standard Rate . Pre hodnoty bez chýb nie je toto pole k dispozícii a počas operácie rozbalenia má
nulltento stĺpec hodnoty.
Pre ďalšie skúmanie môžete rozšíriť stĺpec Všetky chyby.Chyba a získať tri komponenty záznamu chýb:
- Dôvod chyby
- Chybové hlásenie
- Detail chyby
Po vykonaní operácie rozbalenia pole Všetky chyby.Chyba.Správa zobrazí konkrétnu chybovú správu, ktorá presne hovorí, akú chybu v Exceli má každá bunka. Chybová správa je odvodená z poľa Chybová správa v chybovom zázname.
Teraz s každou chybovou správou v novom stĺpci môžete vytvoriť nový podmienený stĺpec s názvom Konečná rýchlosť a nasledujúcimi klauzulami:
- Ak je hodnota v stĺpci Všetky chyby.Chyba.Správa rovná
null, potom výstupom je hodnota zo stĺpca Štandardná rýchlosť . - Inak, ak hodnota v stĺpci All Errors.Error.Message nezodpovedá
Invalid cell value '#REF!'., výstup je hodnota zo stĺpca Special Rate . - Inak null.
Po zachovaní iba stĺpcov Účet, Štandardná sadzba, Špeciálna sadzba a Konečná sadzba a pridaní správneho dátového typu pre každý stĺpec, nasledujúci obrázok ukazuje, ako vyzerá finálna tabuľka.
Použitie try vlastnej logiky a catch s vlastnou logikou
Prípadne môžete vytvoriť nový vlastný stĺpec aj pomocou try kľúčových slov a catch .
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null