Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Excel és a DAX nyelv IFERROR függvényéhez hasonlóan a Power Query saját szintaxisával is rendelkezik a hibák teszteléséhez és felismeréséhez.
A Power Query hibáinak kezeléséről szóló cikkben leírtak szerint a hibák a lépés vagy a cella szintjén is megjelenhetnek. Ez a cikk az, hogy miként lehet a hibákat a saját logikája alapján elkapni és kezelni.
Megjegyzés:
Ennek a fogalomnak a bemutatásához ez a cikk egy Excel-munkafüzetet használ adatforrásként. Az itt bemutatott fogalmak a Power Query összes értékére vonatkoznak, és nem csak az Excel-munkafüzetekből származó értékekre.
A bemutató mintaadatforrása egy Excel-munkafüzet, amely az alábbi táblázatot tartalmazza.
Ez az Excel-munkafüzet táblázata Excel-hibákat tartalmaz, például #NULL!, #REF!, és #DIV/0! hibát a Standard ráta oszlopban. Amikor importálja ezt a táblázatot a Power Query-szerkesztőbe, az alábbi képen látható, hogyan néz ki.
Figyelje meg, hogyan jelennek meg az Excel-munkafüzet hibái az [Error] egyes cellákban lévő értékkel.
Ebből a cikkből megtudhatja, hogyan cserélhet le egy hibát egy másik értékre. Emellett azt is megtanulhatja, hogyan foghat el egy hibát, és hogyan használhatja a saját logikájához.
Adjon meg egy alternatív értéket a hibák keresésekor
Ebben az esetben a cél egy új Végső sebesség oszlop létrehozása a mintaadatforrásban, amely a Standard ráta oszlop értékeit használja. Ha bármilyen hiba történt, akkor a megfelelő Speciális kamatláb oszlop értékét használja.
Új egyéni oszlop létrehozásához nyissa meg az Oszlop hozzáadása menüt, és válassza az Egyéni oszlop lehetőséget. Az Egyéni oszlop ablakban adja meg a képletet try [Standard Rate] otherwise [Special Rate]. Nevezze el ezt az új oszlopot végső sebességnek.
Ez a képlet megpróbálja kiértékelni a Standard Rate oszlopot, és ha nem található hiba, megadja az értékét. Ha a Normál ráta oszlopban hibák találhatók, akkor a kimenet az otherwise utasítást követően definiált érték, amely ebben az esetben a Különleges ráta oszlop.
Miután hozzáadta a megfelelő adattípusokat a táblázat összes oszlopához, az alábbi képen látható, hogyan néz ki az utolsó tábla.
Megjegyzés:
Alternatív módszerként megadhatja a képletet try [Standard Rate] catch ()=> [Special Rate]is, amely egyenértékű az előző képlettel, de a catch kulcsszót egy olyan függvénnyel használja, amely nem igényel paramétereket.
A catch kulcsszót 2022 májusában vezették be a Power Querybe.
Saját feltételes hibalogika megadása
Ugyanazt a mintaadatforrást használja, mint az előző szakaszban, az új cél egy új oszlop létrehozása a végső sebességhez. Ha a standard kamatláb értéke létezik, akkor a rendszer ezt az értéket használja. Ellenkező esetben a Speciális díj oszlop értékét használja a rendszer, kivéve a hibákat tartalmazó #REF! sorokat.
Megjegyzés:
A #REF! hiba kizárásának célja kizárólag bemutatási célokat szolgál. A cikkben ismertetett fogalmak segítségével a hibarekordból tetszőleges mezőket célozhat meg.
Ha a hibaérték melletti szóközt választja ki, a képernyő alján megjelenik a részletek panel. A részletek panel a hiba okát DataFormat.Errorés a hibaüzenetet is tartalmazza: Invalid cell value '#REF!'
Egyszerre csak egy cellát jelölhet ki, így egyszerre csak egy hibaérték hibaösszetevőit vizsgálhatja meg hatékonyan. Ekkor létrehoz egy új egyéni oszlopot, és használja a try kifejezést.
Használja try saját logikával
Új egyéni oszlop létrehozásához nyissa meg az Oszlop hozzáadása menüt, és válassza az Egyéni oszlop lehetőséget. Az Egyéni oszlop ablakban adja meg a képletet try [Standard Rate]. Nevezze el ezt az új oszlopot az Összes hiba oszlopnak.
A try kifejezés az értékeket és a hibákat rekordértékké alakítja, amely jelzi, hogy a try kifejezés hibát kezelt-e vagy sem, valamint a megfelelő értéket vagy hibarekordot.
Ezt az újonnan létrehozott oszlopot kibonthatja rekordértékekkel, és az oszlopfejléc melletti ikonra kattintva megtekintheti a kibontandó mezőket.
Ez a művelet három új mezőt tesz elérhetővé:
- Errors.HasError – megjeleníti, hogy a Standard Rate oszlop értéke hibát tartalmazott-e vagy sem.
-
All Errors.Value – ha a Standard ráta oszlop értékében nincs hiba, akkor ez az oszlop a Standard ráta oszlop értékét jeleníti meg. A hibákkal rendelkező értékek esetében ez a mező nem érhető el, és a kibontási művelet során ez az oszlop értékekkel rendelkezik
null. -
Minden hiba.Hiba – ha a Standard Rate oszlop értékében hiba volt, ez az oszlop megjeleníti a Standard Rate oszlop értékének hibarekordját. Hiba nélküli értékek esetén ez a mező nem érhető el, és a kibontási művelet során ez az oszlop értékekkel rendelkezik
null.
További vizsgálathoz bontsa ki az All Errors.Error oszlopot a hibarekord három összetevőjének lekéréséhez:
- A hiba oka
- Hibaüzenet
- Hiba részletei
A kibontási művelet elvégzése után az All Errors.Error.Message mező megjeleníti az adott hibaüzenetet, amely pontosan jelzi, hogy az egyes cellák milyen Excel-hibával rendelkeznek. A hibaüzenet a hibarekord Hibaüzenet mezőjéből származik.
Most, hogy minden hibaüzenet egy új oszlopban szerepel, létrehozhat egy új feltételes oszlopot végleges ráta néven és a következő záradékokkal:
- Ha az All Errors.Error.Message oszlop értéke egyenlő
null, akkor a kimenet a Standard rate oszlop értéke. - Ha az All Errors.Error.Message oszlop értéke nem egyenlő
Invalid cell value '#REF!'., akkor a kimenet a Speciális sebesség oszlop értéke. - Különben null.
Miután megtartotta a Fiók, a Standard ráta, a Különleges díj és a Végső díj oszlopokat, és hozzáadta az egyes oszlopokhoz a megfelelő adattípust, az alábbi képen látható, hogyan néz ki a végleges táblázat.
A try és catch használata egyéni logikával
Alternatívaként létrehozhat egy új egyéni oszlopot a try és catch kulcsszavak használatával.
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null