A Power Query lekérdezési terve (előzetes verzió)
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ési terv 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ó. A folyamat lépései a következők:
- Tekintse át a lekérdezés összecsukható 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és szkriptjét 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"
Módosítsa
servername
adatabase
saját környezetének megfelelő neveket.(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 Tovább lehetőséget.
A Power Query-szerkesztő 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. Javasoljuk, hogy a lekérdezésterv elolvasása előtt jól tudja a lekérdezés összecsukását. A lekérdezések összecsukásával kapcsolatos további információkért tekintse meg a lekérdezés összecsukási alapjait.
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 hajtogatottként megjelölt lépések áttekintése. Ezután láthatja, hogy a teljes lekérdezés módosításaival az átalakítások teljesen összecsukhatók-e.
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 mit nem lehet lehajtani.
A Fenntartott alsó sorok lépést érdekes lépésként azonosította, mivel nem hajtja 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 a lekérdezés sorrendjét követi, amely a diagram bal szélén látható, ebben az esetben pedig 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 szem előtt tartva az optimalizált lekérdezési tervben hagyott csomópontok/operátorok általában tartalmazzák az "összecsukott" adatforrás-lekérdezést, valamint azokat az operátorokat, amelyeket nem lehetett összehajtani, és helyileg kiértékelik őket.
A diagram csomópontjait két csoportként azonosíthatja:
- Összecsukott csomópontok: Ez a csomópont lehet
Value.NativeQuery
"adatforrás", példáulSql.Database
. Ezek a távoli címkével is azonosíthatók a függvény neve alatt. - 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 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. A többi csomópontot át kell tekintenie, mivel a cél az, hogy ezeket a csomópontokat visszahajtsa 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 megadja, hogy a SalesOrderHeader táblából pontosan milyen oszlopok lesznek lekérdezve, majd hogyan szűri 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.
Most már meghatározta, hogy mely csomópontokat nem lehet összehajtani, és a rendszer helyileg értékeli ki. 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, hogy a lépés összehajtható legyen. 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 a próbaidőszak és a hiba alapján megállapítani, hogy a lekérdezés visszahajtható-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ának csökkenő sorrendje, mivel ez az oszlop határozza meg, hogy melyik sorrend legyen az első, és melyik legyen az utolsó.
- Válassza ki az első öt sort a táblázat rendezése óta, ez az átalakítás ugyanúgy működik, mintha megtartva lenne az alsó sorok (
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.
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ő.
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 implementálása után ellenőrizze újra a lekérdezés összecsukási mutatóit, és ellenőrizze, hogy egy összecsukott jelző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 az alkalmazás alternatívát javasolja, a fő cél az, hogy megtanulja, hogyan használhatja a lekérdezéstervet a lekérdezések összecsukásának vizsgálatára. Ez a cikk azt is bemutatja, hogy mi lesz elküldve az adatforrásnak, és hogy mi történik helyileg az átalakításokkal.
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.