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.
- Hiba oka: A kettőspont előtti első szakasz. A fenti példában a hiba oka a Expression.Error.
- Hibaüzenet: A szakasz közvetlenül az ok után. A fenti példában a hibaüzenet az, hogy a tábla Oszlop oszlopa nem található.
- Hiba részletei: A szakasz közvetlenül a Részletek: sztring után. A fenti példában a hiba részletei az Oszlop.
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ő, az Ugrás a hiba gombra kattintva megtekintheti a hiba első lépését.
Nem található a forrás – DataSource.Error
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ás másik helyre lett áthelyezve.
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, egy DataSource.Error hibaüzenetet kap, mert nincs D meghajtó a környezetében.
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. Ha a Hibaablakban elérhető a Beállítások szerkesztése gomb, kiválaszthatja, és módosíthatja a fájl elérési útját.
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.
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 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 egyesítésekor vagy egyesítésekor képlet.tűzfal hibaüzenet jelenhet meg, például az alábbi képen látható.
Ezt a hibát számos ok okozhatja, például az adatforrások közötti adatvédelmi szintek vagy az adatforrások egyesítése vagy egyesítése. 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, hanem 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.
Feljegyzé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 függvények készletét biztosítja a hibák eltávolításával, cseréjével vagy megőrzésével.
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.
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.
A művelet eredménye megadja a keresett táblát.
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.
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.
A művelet eredménye megadja a keresett táblát.
Hibák megőrzése
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. Itt lehetnek hasznosak a Keep hibák . 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.
A művelet eredménye megadja a keresett táblát.
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.
Az adattípus átalakításával kapcsolatos 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.
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.
Lehetséges megoldások: Az egyéni oszlop létrehozása előtt módosítsa a Sales oszlop adattípusát szöveggé.
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:
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 skaláris értékek automatikusan hibákká alakulnak.
- Ha az
Any
adattípussal definiált oszlop nem skaláris értékeket tartalmaz, az ilyen értékek a betöltés során hibákké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ípust
Any
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.