Olvasás angol nyelven

Megosztás a következőn keresztül:


Hibakezelés

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 a hibák saját logikán alapuló fogási és kezelési módjával foglalkozik.

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.

Képernyőkép egy Excel-munkafüzet három hibát tartalmazó mintaadatairól.

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.

Képernyőkép a Power Queryben betöltött mintatábláról.

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épletettry [Standard Rate] otherwise [Special Rate]. Nevezze el ezt az új oszlopot végső sebességnek.

Képernyőkép az Egyéni oszlop párbeszédpanel megnyitásáról, és az egyéni oszlopban beírt képlet kipróbálása.

Ez a képlet megpróbálja kiértékelni a Standard Rate oszlopot, és ha nem talál hibát, kimeneteli az értékét. Ha a Standard ráta oszlopban hibák találhatók, akkor a kimenet az utasítás után otherwise definiált érték, amely ebben az esetben a Speciális díj 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.

Képernyőkép a táblázatról, amelyen a standard ráta hibáit a Végleges díjszabás oszlopban lévő speciális ráta váltja fel.

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 hiba kizárásának egyetlen célja a #REF! bemutatás. 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!'

Képernyőkép a kijelölt hibáról, a párbeszédpanel alján egy hibaüzenettel.

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álat try egyéni 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épletettry [Standard Rate]. Nevezze el ezt az új oszlopot az Összes hiba oszlopnak.

Képernyőkép az Egyéni oszlop párbeszédpanel megnyitásáról és az egyéni oszlopban beírt próbaképletről.

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.

Képernyőkép a tábláról, amelyen a Minden hiba oszlop hozzáadva van, és a hibák rekordokként jelennek meg.

Ezt az újonnan létrehozott oszlopot kibonthatja rekordértékekkel, és az oszlopfejléc melletti ikonra kattintva megtekintheti a kibontandó mezőket.

Képernyőkép a Minden hiba oszlopról, kiemelve a kibontás ikont, valamint a HasError, Az érték és a Hiba mező ki van jelölve.

Ez a művelet három új mezőt tesz elérhetővé:

  • Minden Errors.HasError – azt jeleníti meg, hogy a Standard rate oszlop értéke hibás volt-e vagy sem.
  • Minden Errors.Value – ha a Standard ráta oszlop értéke nem volt 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 Errors.Error – ha a Standard ráta oszlop értéke hibás volt, ez az oszlop megjeleníti a Standard rate oszlopban szereplő érték 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 .

Képernyőkép az oszlopok új mezőivel rendelkező táblázatról, amelyen egy All.Errors.Error érték van kijelölve, és a tábla alatti hibaüzenetek láthatók.

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.

Képernyőkép az adott hibaüzenetekkel.

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.Errors.Message oszlop értéke egyenlőnull, akkor a kimenet a Standard rate oszlop értéke.
  • Ha az All Errors.Errors.Message oszlop értéke nem egyenlőInvalid cell value '#REF!'., akkor a kimenet a Speciális sebesség oszlop értéke.
  • Máskülönben null.

Képernyőkép a Feltételes oszlop hozzáadása párbeszédpanelről az új oszlophoz beállított összes hibafeltételsel.

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.

Képernyőkép az utolsó tábláról a megfelelő adattípusokkal rendelkező többi oszlopmal.

Egyéni logika használata és catch használata try

Másik lehetőségként létrehozhat egy új egyéni oszlopot is a kulcsszavak és catch a try kulcsszavak használatával.

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

Egyéni oszlop párbeszédpanel egy új képlettel, amely a try and catch szintaxis megközelítését mutatja.

További erőforrások