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


Lekérdezés összecsukása natív lekérdezéseken

A Power Queryben meghatározhat egy natív lekérdezést, és futtathatja az adatforráson. Az adatok importálása adatbázisból natív adatbázis-lekérdezéssel című cikk bemutatja, hogyan hajthatja végre ezt a folyamatot több adatforrással. Az ebben a cikkben ismertetett folyamat használatával azonban a lekérdezés nem használja ki a lekérdezés további lépéseiből származó összecsukható lekérdezések előnyeit.

Ez a cikk egy alternatív módszert mutat be, amellyel natív lekérdezéseket hozhat létre az adatforráson a Value.NativeQuery függvénnyel, és aktív marad a lekérdezés összecsukási mechanizmusa a lekérdezés későbbi lépéseihez.

Feljegyzés

Javasoljuk, hogy olvassa el a lekérdezés-összecsukási dokumentációt és a lekérdezés-összecsukási mutatókat, hogy jobban megértse a cikkben használt fogalmakat.

Támogatott adatösszekötők

A következő szakaszokban ismertetett módszer a következő adatösszekötőkre vonatkozik:

Csatlakozás a célhoz adatforrásból

Feljegyzés

A folyamat bemutatásához ez a cikk az SQL Server-összekötőt és az AdventureWorks2019 mintaadatbázist használja. A felhasználói élmény összekötőnként eltérő lehet, de ez a cikk bemutatja, hogyan engedélyezheti a lekérdezés-összecsukási képességeket a támogatott összekötők natív lekérdezéseihez.

Az adatforráshoz való csatlakozáskor fontos, hogy a natív lekérdezés végrehajtásához használt csomóponthoz vagy szinthez csatlakozzon. A jelen cikkben szereplő példában ez a csomópont a kiszolgálón belüli adatbázisszint.

Képernyőkép az AdventureWorks2019-adatbázishoz való csatlakozás kapcsolatbeállítási párbeszédpaneléről az SQL Server egy helyi példányán.

Miután meghatározta a kapcsolat beállításait, és megadja a kapcsolat hitelesítő adatait, megnyílik az adatforrás navigációs párbeszédpanelje. A navigációs párbeszédpanel tartalmazza az összes elérhető objektumot, amelyhez csatlakozhat.

Ebben a listában ki kell választania azt az objektumot, amelyben a natív lekérdezés fut (más néven cél). Ebben a példában ez az objektum az adatbázis szintje.

A Power Query kezelőablakában jelölje ki és tartsa lenyomva az adatbáziscsomópontot (vagy kattintson rá a jobb gombbal), és válassza az Adatok átalakítása lehetőséget. Ha ezt a lehetőséget választja, új lekérdezést hoz létre az adatbázis teljes nézetéről, amely a natív lekérdezés futtatásához szükséges cél.

Képernyőkép az adatok kiválasztásáról, ahol a felhasználó a jobb gombbal az adatbáziscsomópontra kattintott a kezelőben, hangsúlyozva az Adatok átalakítása parancsot.

Ha a lekérdezés a Power Query-szerkesztőbe kerül, csak a Forrás lépés jelenik meg az Alkalmazott lépések panelen. Ez a lépés tartalmaz egy táblát, amely tartalmazza az adatbázis összes elérhető objektumát, hasonlóan ahhoz, ahogyan azok a Kezelő ablakban voltak megjelenítve.

Képernyőkép a lekérdezésről csak a forráslépéssel.

A Value.NativeQuery függvény használata

Ennek a folyamatnak a célja a következő SQL-kód végrehajtása, és további átalakítások alkalmazása a Power Queryvel, amelyek visszahajthatók a forrásra.

SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'

Az első lépés a megfelelő cél meghatározása volt, amely ebben az esetben az az adatbázis, ahol az SQL-kód fut. Ha egy lépés rendelkezik a megfelelő célval, kiválaszthatja ezt a lépést – ebben az esetben a Forrás az alkalmazott lépésekben –, majd a szerkesztőlécen az fx gombot választva hozzáadhat egy egyéni lépést. Ebben a példában cserélje le a Source képletet a következő képletre:

Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'  ", null, [EnableFolding = true])

A képlet legfontosabb összetevője az opcionális rekord használata annak a függvénynek a negyedik paraméteréhez, amelynél az EnableFolding rekordmező értéke igaz.

Képernyőkép az új egyéni lépés képletéről a Value.NativeQuery függvény és az explicit SQL-lekérdezés használatával.

Feljegyzés

A Value.NativeQuery függvényről a hivatalos dokumentációs cikkben olvashat bővebben.

A képlet megadása után megjelenik egy figyelmeztetés, amely megköveteli a natív lekérdezések futtatását az adott lépéshez. Válassza a folytatást a kiértékelendő lépéshez.

Ez az SQL-utasítás csak három sorból és két oszlopból álló táblát eredményez.

Képernyőkép a céladatbázison kiértékelt natív lekérdezés eredményeiről.

Lekérdezés összecsukásának tesztelése

A lekérdezés lekérdezés-összecsukásának teszteléséhez megpróbálhat szűrőt alkalmazni bármelyik oszlopra, és ellenőrizheti, hogy az alkalmazott lépések szakaszában látható-e a lekérdezés összecsukható jelzője. Ebben az esetben szűrheti a DepartmentID oszlopot úgy, hogy azok értéke ne legyen egyenlő kettővel.

Képernyőkép arról, hogyan szűrheti a DepartmentID oszlopot úgy, hogy azok csak a kettővel nem egyenlő értékekkel rendelkezzenek.

A szűrő hozzáadása után ellenőrizheti, hogy a lekérdezés összecsukási mutatói továbbra is azt mutatják-e, hogy a lekérdezés összecsukása az új lépésben történik-e.

Az alkalmazott lépések szakaszban az adatforráshoz visszahajtva megjelenített szűrőlépés.

Az adatforrásnak küldött lekérdezés további ellenőrzéséhez jelölje ki és tartsa lenyomva a Szűrt sorok lépést (vagy kattintson rá a jobb gombbal), majd válassza a Lekérdezésterv megtekintése lehetőséget az adott lépés lekérdezéstervének ellenőrzéséhez.

A lekérdezésterv nézetben láthatja, hogy egy Value.NativeQuery nevű csomópont, amely nézet részletei hivatkozással rendelkezik. Ezt a hivatkozást választva megtekintheti az SQL Server-adatbázisnak küldött pontos lekérdezést.

A natív lekérdezés egy másik SELECT utasítás köré van burkolva, hogy létrehozhasson egy alqueryt az eredetiből. A Power Query a lehető legoptimálisabb lekérdezést hozza létre a használt átalakítások és a natív lekérdezések alapján.

Képernyőkép a Szűrt sorok lépés lekérdezéstervéről.

Tipp.

Olyan forgatókönyvek esetén, ahol a lekérdezések összecsukása nem lehetséges, javasoljuk, hogy ellenőrizze a lépéseket az eredeti natív lekérdezés allekérdezéseként, és ellenőrizze, hogy vannak-e szintaxis- vagy környezetütközések.