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


Hibák kezelése a Power Queryben

A Power Queryben kétféle hiba jelenhet meg:

  • Lépésszintű hibák
  • Cellaszintű hibák

Ez a cikk javaslatokat tartalmaz az egyes szinteken előforduló leggyakoribb hibák kijavítására, valamint a hiba okának, a hibaüzenetnek és a hiba részleteinek leírására.

Lépésszintű hiba

A lépésszintű hiba megakadályozza a lekérdezés betöltését, és sárga panelen jeleníti meg a hibaösszetevőket.

Képernyőkép egy lépésszintű hibáról, amelynél nem található oszlop.

  • Hiba oka: A kettőspont előtti első szakasz. Az előző példában a hiba oka az Expression.Error.
  • Hibaüzenet: A szakasz közvetlenül az ok után. Az előző példában a hibaüzenet a következő: a táblázat 'Column' nevű oszlopa nem található.
  • Hiba részletei: A szakasz közvetlenül a Részletek: karakterlánc után. Az előző példában a hiba részlete az Oszlop.

A Power Query Online kissé eltérő részleteket jelenít meg. A hiba részlete továbbra is Oszlop-ként jelenik meg, az online hibaüzenet pedig tartalmazza a hiba okát (Expression.Error) és a kódot (10224).

Képernyőkép egy online lépés szintű hibáról, amikor egy oszlop nem található meg.

Gyakori lépésszintű hibák

Javasoljuk, hogy minden esetben vizsgálja meg a hiba okát, a hibaüzenetet és a hiba részleteit, hogy megértse, mi okozza a hibát. Ha elérhető, a Részletek megjelenítése gombra kattintva további részleteket jeleníthet meg a hibáról.

Képernyőkép egy hibaüzenetről, amelyen a Részletek megjelenítése gomb van kiemelve.

Nem található a forrás – DataSource.NotFound

Ez a hiba általában akkor fordul elő, ha a felhasználó nem fér hozzá az adatforráshoz, a felhasználó nem rendelkezik a megfelelő hitelesítő adatokkal az adatforrás eléréséhez, vagy a forrást egy másik helyre helyezték át.

Példa: A D meghajtóban található és az A felhasználó által létrehozott szövegcsempe lekérdezése van. Az A felhasználó megosztja a lekérdezést a B felhasználóval, aki nem rendelkezik hozzáféréssel a D meghajtóhoz. Amikor ez a személy megpróbálja végrehajtani a lekérdezést, megkapja a DataSource.NotFound parancsot , mert nincs D meghajtó a környezetében.

Képernyőkép egy adatforrásról, amely nem találta a fájlt, mert nincs D meghajtó az aktuális környezetben.

Lehetséges megoldások: A szövegfájl elérési útját olyan elérési útra módosíthatja, amelyhez mindkét felhasználónak hozzáférése van. B felhasználóként módosíthatja, hogy a fájl elérési útja ugyanazon szövegfájl helyi másolata legyen.

A tábla oszlopa nem található

Ez a hiba általában akkor fordul elő, ha egy lépés közvetlenül hivatkozik egy olyan oszlopnévre, amely nem szerepel a lekérdezésben.

Példa: Olyan szövegfájlból származó lekérdezéssel rendelkezik, amelyben az oszlopnevek egyike Oszlop volt. A lekérdezésben van egy lépés, amely átnevezi az oszlopot Dátumra. Az eredeti szövegfájlban azonban változás történt, és már nincs oszlopfejléce Oszlop néven, mert manuálisan dátumra módosították. A Power Query nem talál Oszlop nevű oszlopfejlécet, ezért nem tud átnevezni egyetlen oszlopot sem. Az alábbi képen látható hibát jeleníti meg.

Képernyőkép egy kifejezéshibáról, amely miatt a tábla oszlopa nem található, mert az oszlop nevét manuálisan módosították.

Lehetséges megoldások: Erre az esetre több megoldás is létezik, de ezek mindegyike attól függ, hogy mit szeretne tenni. Ebben a példában, mivel a megfelelő Dátum oszlopfejléc már a szövegfájlból származik, egyszerűen eltávolíthatja az oszlopot átnevező lépést. Ez a módosítás lehetővé teszi, hogy a lekérdezés a hiba nélkül fusson.

Egyéb gyakori lépésszintű hibák

Az adatok több adatforrás közötti kombinálásakor vagy egyesítésekor egy Formula.Firewall hibaüzenet jelenhet meg, például az alábbi képen látható.

Képernyőkép egy képlet tűzfalhibáról, amely szerint a lekérdezés más lekérdezésekre vagy lépésekre hivatkozik, így előfordulhat, hogy nem fér hozzá közvetlenül egy adatforráshoz.

Ez a hiba különböző okokból fordul elő, például az adatforrások közötti adatvédelmi szintek különbségei vagy az adatforrások kombinálása vagy egyesítése miatt. A probléma diagnosztizálásáról további információt az Adatvédett tűzfal című témakörben talál.

Cellaszintű hiba

A cellaszintű hiba nem akadályozza meg a lekérdezés betöltését, de hibaértékeket jelenít meg hibaként a cellában. Ha kijelöli a cella üres területét, megjelenik a hibaablak az adatelőnézet alatt.

Képernyőkép a hibaüzenet megjelenítéséről, ha kijelöli a szóközt egy hibát tartalmazó táblázatcellában.

Megjegyzés:

Az adatprofilozási eszközök segítségével könnyebben azonosíthatja a cellaszintű hibákat az oszlopminőségi funkcióval. További információ: Adatprofilozási eszközök.

Hibák kezelése a cella szintjén

Ha cellaszintű hibákba ütközik, a Power Query olyan függvények készletét kínálja, amelyek lehetőséget biztosítanak a hibák eltávolítására, cseréjére vagy megőrzésére.

A következő szakaszokban a megadott példák ugyanazt a minta lekérdezést használják, mint a kiindulási pont. Ebben a lekérdezésben van egy Sales oszlop, amely egy cellával rendelkezik, amely egy konverziós hiba által okozott hibával rendelkezik. A cellában lévő érték na volt, de amikor az oszlopot egész számmá alakította, a Power Query nem tudta számmá alakítani a NA-t , ezért az alábbi hibát jeleníti meg.

Képernyőkép az adatformátum hibájáról, amely a hibaablakban megjeleníti a „nem sikerült adatotípusra konvertálni” hibát.

Hibák eltávolítása

Ha a Power Queryben hibákat tartalmazó sorokat szeretne eltávolítani, először jelölje ki a hibákat tartalmazó oszlopot. A Kezdőlap lap Sorok csökkentése csoportjában válassza a Sorok eltávolítása lehetőséget. A legördülő menüben válassza a Hibák eltávolítása lehetőséget.

Képernyőkép a Kezdőlap lapon található Eltávolítási hibák gombról.

A művelet eredménye az alábbi táblázatot adja meg.

Képernyőkép a korábban öt sort tartalmazó tábláról, ekkor a hibát tartalmazó sor el lett távolítva, négy sort hagyva a táblában.

Hibák cseréje

Ha a sorok hibákkal való eltávolítása helyett a hibákat rögzített értékre szeretné cserélni, ezt is megteheti. A hibákat tartalmazó sorok cseréjéhez először jelölje ki a hibákat tartalmazó oszlopot. Az Átalakítás lap Bármely oszlop csoportjában válassza az Értékek cseréje lehetőséget. A legördülő menüben válassza a Hibák cseréje lehetőséget.

Képernyőkép a Csere hibák gombról az Átalakítás lapon.

A Hibák cseréje párbeszédpanelen adja meg a 10 értéket, mert az összes hibát a 10 értékre szeretné cserélni.

Képernyőkép a cserehibák párbeszédpanelről, amelynek értéke 10-re van beállítva.

A művelet eredménye az alábbi táblázatot adja meg.

Képernyőkép arról a tábláról, amelyben a harmadik sor hibát tartalmazott a Sales oszlopban, a hiba most a 10 értékre cserélődött.

Megőrizni a hibákat

A Power Query jó naplózási eszközként szolgálhat a hibákkal rendelkező sorok azonosításához, még akkor is, ha nem javítja ki a hibákat. Ez az a helyzet, amikor Keep errors hasznos lehet. A hibákat tartalmazó sorok megtartásához először jelölje ki a hibákat tartalmazó oszlopot. A Kezdőlap lap Sorok csökkentése csoportjában válassza a Sorok megtartása lehetőséget. A legördülő menüben válassza a Hibák megtartása lehetőséget.

Képernyőkép a Kezdőlap lap Keep errors (Hibák megtartása) gombjáról.

A művelet eredménye az alábbi táblázatot adja meg.

Képernyőkép a végleges tábláról, amely csak a hibákat tartalmazó sorokat tárolja.

Gyakori cellaszintű hibák

A lépésszintű hibákhoz hasonlóan javasoljuk, hogy vizsgálja meg a hiba okait, a hibaüzeneteket és a cellaszinten megadott hibaadatokat, hogy megértse, mi okozza a hibákat. Az alábbi szakaszok a Power Query leggyakoribb cellaszintű hibáit ismertetik.

Adattípus-konverziós hibák

Általában akkor aktiválódik, ha egy tábla egy oszlopának adattípusát módosítja. Az oszlopban található egyes értékek nem konvertálhatók a kívánt adattípusra.

Példa: Van egy lekérdezése, amely egy Sales nevű oszlopot tartalmaz. Az oszlop egyik cellában a na cellaérték, a többi pedig egész számokat tartalmaz értékként. Úgy dönt, hogy az oszlop adattípusát szövegből egész számmá konvertálja, de a NA értékkel rendelkező cella hibát okoz.

Képernyőkép a Nem konvertálható adattípus hiba részleteiről.

Lehetséges megoldások: Miután azonosította a sort a hibával, módosíthatja az adatforrást úgy, hogy az NE helyett a helyes értéket tükrözze, vagy a Csere hibaművelettel értéket adhat meg a hibát okozó na-értékeknek .

Műveleti hibák

Ha olyan műveletet próbál alkalmazni, amely nem támogatott, például egy szöveges érték numerikus értékkel való szorzása, hiba történik.

Példa: Egyéni oszlopot szeretne létrehozni a lekérdezéshez egy szöveges sztring létrehozásával, amely a Sales oszlop értékével összefűzve tartalmazza a "Total Sales: " kifejezést. Hiba történik, mert az összefűzési művelet csak a szöveges oszlopokat támogatja, a numerikusakat nem.

Képernyőkép a hibaablakban megjelenő kifejezési hibáról, amelyet az Értékesítés oszlopból származó szöveg és szám ÉS operátorral való egyesítésének próbálkozása okozott.

Lehetséges megoldások: Az egyéni oszlop létrehozása előtt módosítsa a Sales oszlop adattípusát szöveggé.

Képernyőkép a tábláról, amelyen az értékesítési oszlop számból szövegtípussá alakul, és egy új oszlop, amely mindkét kifejezést tartalmazza.

Hibákként megjelenített beágyazott értékek

Beágyazott strukturált értékeket (például táblákat, listákat vagy rekordokat) tartalmazó adatok használatakor előfordulhat, hogy a következő hibaüzenet jelenik meg:

Képernyőkép a képlet tűzfalának működése által aktivált beágyazott értékek hibájáról.

Expression.Error: We cannot return a value of type {value} in this context

Details: In the past we would have returned a text value of {value}, but we now return this error. Please see https://go.microsoft.com/fwlink/?linkid=2099726 for more information.

Ezek a hibák általában két okból fordulnak elő:

  • Amikor az adatvédelmi tűzfal pufferel egy adatforrást, a beágyazott, nem skálázott értékek automatikusan hibákká lesznek konvertálva.
  • Ha egy Any adattípussal definiált oszlop nem számolási értékeket tartalmaz, az ilyen értékek a betöltés során hibaként jelennek meg (például az Excel munkafüzetében vagy a Power BI Desktop adatmodelljében).

Lehetséges megoldások:

  • Távolítsa el a hibát tartalmazó oszlopot, vagy adjon meg egy nem adattípustAny egy ilyen oszlophoz.
  • Módosítsa az érintett adatforrások adatvédelmi szintjét olyanra, amely lehetővé teszi, hogy pufferelés nélkül egyesíthetők legyenek.
  • Egyesítés előtt egyesítse a táblákat, hogy kiküszöbölje a beágyazott strukturált értékeket (például táblázatot, rekordot vagy listát) tartalmazó oszlopokat.