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.
A Power Query lekérdezési terve egy olyan funkció, amely jobb áttekintést nyújt a lekérdezés kiértékeléséről. Hasznos segítséget nyújtani annak meghatározásához, hogy egy adott lekérdezés miért nem hajtható végre egy adott lépésben.
Ez a cikk egy gyakorlati példán keresztül bemutatja a lekérdezésterv funkció fő használati esetét és lehetséges előnyeit a lekérdezési lépések áttekintéséhez. A cikkben használt példák az Azure SQL Server AdventureWorksLT mintaadatbázisával lettek létrehozva, amelyet az AdventureWorks mintaadatbázisaiból tölthet le.
Megjegyzés
A Power Query lekérdezésterv funkciója csak a Power Query Online-ban érhető el.
Ez a cikk a lekérdezési terv értelmezéséhez ajánlott lépések sorozatában található. Ezek a lépések a következők:
- Tekintse át a lekérdezés összevonási mutatóit.
- Válassza ki a lekérdezési lépést a lekérdezésterv áttekintéséhez.
- A lekérdezés módosításainak implementálása.
A következő lépésekkel saját Power Query Online-környezetben hozhatja létre a lekérdezést.
A Power Queryben válassza ki az adatforrást, és válassza az Üres lekérdezés lehetőséget.
Cserélje le az üres lekérdezéshez tartozó szkriptet a következő lekérdezésre.
let Source = Sql.Database("servername", "database"), Navigation = Source{[Schema = "Sales", Item = "SalesOrderHeader"]}[Data], #"Removed other columns" = Table.SelectColumns(Navigation, {"SalesOrderID", "OrderDate", "SalesOrderNumber", "PurchaseOrderNumber", "AccountNumber", "CustomerID", "TotalDue"}), #"Filtered rows" = Table.SelectRows(#"Removed other columns", each [TotalDue] > 1000), #"Kept bottom rows" = Table.LastN(#"Filtered rows", 5) in #"Kept bottom rows"
Cserélje le a
servername
ésdatabase
elemeket a megfelelő nevekre saját környezetében.(Nem kötelező) Ha egy helyszíni környezet kiszolgálóihoz és adatbázisához próbál csatlakozni, mindenképpen konfiguráljon átjárót ehhez a környezethez.
Válassza a Következőlehetőséget.
A Power Query-szerkesztőben válassza a Kapcsolat konfigurálása lehetőséget, és adja meg az adatforrás hitelesítő adatait.
Megjegyzés
Az SQL Serverhez való csatlakozásról további információt az SQL Server adatbázisában talál.
A lépések elvégzése után a lekérdezés az alábbi képen láthatóhoz hasonlóan fog kinézni.
Ez a lekérdezés csatlakozik a SalesOrderHeader táblához, és kiválaszt néhány oszlopot az utolsó öt rendelésből, 1000 fölötti TotalDue értékkel.
Megjegyzés
Ez a cikk egy egyszerűsített példát használ a funkció bemutatására, de a cikkben ismertetett fogalmak minden lekérdezésre érvényesek. Azt javasoljuk, hogy alaposan ismerje a lekérdezések összecsukásának folyamatát, mielőtt elolvasná a lekérdezéstervet. A lekérdezések összecsukásával kapcsolatos további információkért tekintse meg a lekérdezés összecsukási alapjait.
1. Tekintse át a lekérdezés összevonási mutatóit
Megjegyzés
A szakasz elolvasása előtt javasoljuk, hogy tekintse át a lekérdezés összecsukható mutatóiról szóló cikket.
Ennek a folyamatnak az első lépése a lekérdezés áttekintése és a lekérdezés összecsukási mutatóinak fokozott figyelése. A cél a nem összehajtottként megjelölt lépések áttekintése. Ezután láthatja, hogy a teljes lekérdezés módosításai lehetővé teszik-e az átalakítások teljes végrehajtását.
Ebben a példában az egyetlen olyan lépés, amelyet nem lehet összehajtani, az alsó sorok megtartása, amely könnyen azonosítható a nem hajtogatott lépésjelzőn keresztül. Ez a lépés egyben a lekérdezés utolsó lépése is.
A cél most az, hogy áttekintse ezt a lépést, és megértse, mi van visszahajtva az adatforráshoz, és mi az, ami nem hajtható be.
2. Válassza ki a lekérdezési lépést a lekérdezésterv áttekintéséhez
A Fenntartott alsó sorok lépést érdekesnek azonosította, mivel az nem kapcsolódik vissza az adatforráshoz. Kattintson a jobb gombbal a lépésre, és válassza a Lekérdezésterv megtekintése lehetőséget. Ez a művelet egy új párbeszédpanelt jelenít meg, amely egy diagramot tartalmaz a kijelölt lépés lekérdezéstervéhez.
A Power Query a lusta kiértékelés és a lekérdezés-összecsukás előnyeit kihasználva próbálja optimalizálni a lekérdezést, amint azt a Lekérdezés összecsukási alapjai című témakörben említettük. Ez a lekérdezési terv az M-lekérdezés optimalizált fordítását jelöli az adatforrásnak küldött natív lekérdezésre. A Power Query-motor által végrehajtott átalakításokat is tartalmazza. A csomópontok megjelenési sorrendje a lekérdezés utolsó lépésétől vagy kimenetétől kezdődően követi a lekérdezés sorrendjét, amely a diagram bal szélén látható. Ebben az esetben ez a Table.LastN csomópont, amely a Megtartott alsó sorok lépést jelöli.
A párbeszédpanel alján található egy sáv, amelyen ikonok találhatók, amelyek segítenek a lekérdezésterv nézet nagyításában vagy kicsinyítésében, valamint egyéb gombok, amelyek segítenek a nézet kezelésében. Az előző képen a sávon található Megtekintéshez igazítás lehetőséget használták a csomópontok jobb megbecsülésére.
Megjegyzés
A lekérdezési terv az optimalizált tervet jelöli. Amikor a motor kiértékel egy lekérdezést, megpróbál minden operátort egy adatforrásba hajtani. Bizonyos esetekben akár a lépések belső átrendezését is elvégezheti a maximális összecsukás érdekében. Ezt a folyamatot szem előtt tartva az optimalizált lekérdezési tervben hagyott csomópontok/operátorok általában tartalmazzák a "hajtogatott" adatforrás-lekérdezést. Az olyan operátorok, amelyeket nem lehetett összevonni, helyben kerülnek kiértékelésre.
Más csomópontokról származó összecsukott csomópontok azonosítása
A diagram csomópontjait két csoportként azonosíthatja:
-
Összecsukott csomópontok: Ez a csomópont lehet vagy
Value.NativeQuery
típusú, vagy más "adatforrás" csomópont, példáulSql.Database
. Ezek a csomópontok a függvény neve alatt távoli címkével is azonosíthatók. -
Nem összecsukható csomópontok: Egyéb táblaoperátorok, például
Table.SelectRows
: ,Table.SelectColumns
és egyéb olyan függvények, amelyeket nem lehetett összehajtani. Ezek a csomópontok a teljes vizsgálat és a streamelés címkével is azonosíthatók.
Az alábbi képen a piros téglalapon belüli összecsukott csomópontok láthatók. A többi csomópontot nem lehetett visszahajtani az adatforrásba. Át kell tekintenie a többi csomópontot, mivel a cél az, hogy megkísérlje visszacsukni ezeket a csomópontokat az adatforráshoz.
Egyes csomópontok alján a Részletek megtekintése lehetőséget választva megjelenítheti a bővített információkat. A csomópont adatai
Value.NativeQuery
például az adatforrásnak küldött natív lekérdezést (SQL-ben) jelenítik meg.
Előfordulhat, hogy az itt látható lekérdezés nem pontosan ugyanaz a lekérdezés, amelyet az adatforrásnak küldtek, de jó közelítés. Ebben az esetben pontosan megmutatja, hogy a SalesOrderHeader tábla mely oszlopait kérdezi le. Ezután hogyan szűri ezt a táblát a TotalDue mezővel, hogy csak olyan sorokat kapjon, ahol a mező értéke nagyobb, mint 1000. A mellette lévő csomópontot, a Table.LastN-t a Power Query motor helyileg számítja ki, mivel nem lehet összehajtani.
Megjegyzés
Előfordulhat, hogy az operátorok nem felelnek meg pontosan a lekérdezés szkriptjében használt függvénynek.
Tekintse át a nem bontott csomópontokat, és fontolja meg az átalakítás összecsukásához tartozó műveleteket
Most már meghatározta, hogy mely csomópontokat nem lehet összehajtani, és helyileg lehet kiértékelni. Ebben az esetben csak a Table.LastN
csomópont található, de más esetekben sokkal több is lehet.
A cél a módosítások alkalmazása a lekérdezésre, ami lehetővé teszi a lépés összehajthatóságát. Az implementálható módosítások némelyike a lépések átrendezésétől az adatforrás számára explicitebb lekérdezés alternatív logikájának alkalmazásáig terjedhet. Ez nem jelenti azt, hogy egyes módosítások alkalmazásával minden lekérdezés és minden művelet összecsukható. Érdemes azonban próbálkozással és tévedéssel megállapítani, hogy a lekérdezés visszavezethető-e.
Mivel az adatforrás egy SQL Server-adatbázis, ha a cél az utolsó öt rendelés lekérése a táblából, akkor jó alternatíva az SQL TOP és ORDER BY záradékainak kihasználása. Mivel az SQL-ben nincs BOTTOM záradék, a Table.LastN
PowerQuery-beli átalakítás nem fordítható le SQL-be. Eltávolíthatja a Table.LastN
lépést, és lecserélheti a következőre:
- A táblázat SalesOrderID oszlopán egy lépés a csökkenő sorrend szerint, mivel ez az oszlop határozza meg, melyik rendelés az első és melyik lett utoljára rögzítve.
-
Válassza ki az első öt sort a táblázat rendezése óta, ez az átalakítás ugyanolyan eredménnyel jár, mintha az alsó sorok lennének megtartva (
Table.LastN
).
Ez az alternatíva egyenértékű az eredeti lekérdezésével. Bár elméletileg ez az alternatíva jónak tűnik, módosítania kell a módosításokat, hogy lássa, ez az alternatíva teljesen visszahajtja-e ezt a csomópontot az adatforráshoz.
3. A lekérdezés módosításainak implementálása
Implementálja az előző szakaszban tárgyalt alternatívát:
Zárja be a lekérdezésterv párbeszédpanelt, és lépjen vissza a Power Query-szerkesztőbe.
Távolítsa el a Fenntartott alsó sorok lépést.
A SalesOrderID oszlop rendezése csökkenő sorrendben.
Az adatnézet bal felső sarkában válassza a táblázat ikont, és válassza a Felső sorok megtartása lehetőséget. A párbeszédpanelen adja meg az öt számot argumentumként, és nyomja le az OK billentyűt.
A módosítások végrehajtása után ellenőrizze újra a lekérdezés hajtogatási mutatóját, és nézze meg, hogy egy összehajtott mutatót ad-e.
Itt az ideje, hogy áttekintse az utolsó lépés lekérdezési tervét, amely most a felső sorok megtartása. Most már csak összecsukott csomópontok vannak. Válassza a Részletek megtekintése lehetőséget
Value.NativeQuery
annak ellenőrzéséhez, hogy melyik lekérdezést küldi el az adatbázisba.
Bár ez a cikk azt javasolja, hogy milyen alternatívát alkalmazzon, a fő cél az, hogy megtanulja, hogyan használhatja a lekérdezési tervet a lekérdezések összecsukásának vizsgálatára. Ez a cikk azt is áttekinti, hogy mit küldenek az adatforrásnak, és milyen átalakításokat végeznek helyileg.
Módosíthatja a kódot, hogy lássa, milyen hatással van a lekérdezésre. A lekérdezés összecsukási mutatóinak használatával azt is jobban megismerheti, hogy mely lépések akadályozják meg a lekérdezés összecsukását.