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


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.

Feljegyzés

A Power Query lekérdezésterv funkciója csak a Power Query Online-ban érhető el.

Javasolt folyamat a lekérdezésterv funkció Power Queryben való használatához a lekérdezés összecsukási mutatóinak áttekintésével, majd a lekérdezésterv egy kiválasztott lépésre való áttekintésével, majd a lekérdezésterv áttekintéséből származó módosítások implementálásával.

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:

  1. Tekintse át a lekérdezés összecsukható mutatóit.
  2. Válassza ki a lekérdezési lépést a lekérdezésterv áttekintéséhez.
  3. 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.

  1. A Power Queryben válassza ki az adatforrást, és válassza az Üres lekérdezés lehetőséget.

  2. 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"
    
  3. Módosítsa servername a database saját környezetének megfelelő neveket.

  4. (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.

  5. Válassza a Tovább lehetőséget.

  6. A Power Query-szerkesztő válassza a Kapcsolat konfigurálása lehetőséget, és adja meg az adatforrás hitelesítő adatait.

Feljegyzé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.

Minta lekérdezés, amelyen engedélyezve van a lekérdezés-összecsukási mutató. 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.

Feljegyzé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.

1. Tekintse át a lekérdezés összecsukható mutatóit

Feljegyzé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.

A minta lekérdezés összecsukható mutatói az Alkalmazott lépések panelen belül.

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.

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 é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 lekérdezésterv párbeszédpanel, amely diagramnézetet jelenít meg a lekérdezéstervhez vonalakkal összekapcsolt csomópontokkal. 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.

Lekérdezésterv párbeszédpanel a jobb nézet érdekében nagyított csomópontokkal.

Feljegyzé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.

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 Value.NativeQuery "adatforrás", például Sql.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.

A lekérdezésterv nézet vezérlői a párbeszédpanel alján, a nézethez igazítás beállítás kiválasztásával.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.

A lekérdezési terv Value.NativeQuery csomópontjának részletes nézete. 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.

Feljegyzé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 összecsukott csomópontokat, és fontolja meg az átalakítás hajtásának lépéseit

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.

3. A lekérdezés módosításainak implementálása

Implementálja az előző szakaszban tárgyalt alternatívát:

  1. Zárja be a lekérdezésterv párbeszédpanelt, és lépjen vissza a Power Query-szerkesztő.

  2. Távolítsa el a Fenntartott alsó sorok lépést.

  3. A SalesOrderID oszlop rendezése csökkenő sorrendben.

    A SalesOrderID oszlop rendezése csökkenő sorrendben az autoszűrő menüvel.

  4. 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 táblázat helyi menüjében válassza a Felső sorok megtartása átalakítást, hogy csak az első öt sort tartsa meg.

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.

Minden lekérdezés összecsukható mutatója zöld, és azt mutatja, hogy összecsukhatóak. Az utolsó tábla ugyanazokat a sorokat tartalmazza, de eltérő sorrendben. 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.

Új lekérdezési terv a lekérdezés módosításainak elvégzése után, amely most csak összecsukott csomópontokat mutat be, és a Value.NativeQuery megjeleníti a lekérdezést kiértékelő teljes SQL-utasítást.

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.