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.
Megjegyzés:
Ez a cikk az egyéni összekötők natív lekérdezéstámogatásának implementálásával, valamint a lekérdezések összecsukásával kapcsolatos speciális témaköröket ismerteti. Ez a cikk feltételezi, hogy már ismeri ezeket a fogalmakat.
Az egyéni Power Query-összekötőkről a Power Query SDK áttekintésében olvashat bővebben.
A Power Queryben egyéni natív lekérdezéseket hajthat végre az adatforráson a keresett adatok lekéréséhez. Engedélyezheti a lekérdezések összecsukási képességének fenntartását ebben a folyamatban, valamint az azt követő átalakítási folyamatok során a Power Queryben.
A cikk célja, hogy bemutassa, hogyan valósíthatja meg ezt a képességet az egyéni összekötőhöz.
Előfeltételek
Ez a cikk kiindulási pontként használ egy mintát , amely az SQL ODBC-illesztőt használja az adatforráshoz. A natív lekérdezési képesség implementálása jelenleg csak az SQL-92 szabványnak megfelelő ODBC-összekötők esetében támogatott.
A minta-összekötő az SQL Server Native Client 11.0 illesztőprogramot használja. Győződjön meg arról, hogy telepítve van ez az illesztőprogram, hogy kövesse ezt az oktatóanyagot.
A minta-összekötő kész verzióját a GitHub-adattár Befejezés mappájából is megtekintheti.
Az összekötő SQLCapabilities-képességeinek módosítása
SqlCapabilities A minta-összekötő rekordjában talál egy rekordmezőt, amelynek neve Sql92Translation és értéke PassThrough. Ez az új mező szükséges ahhoz, hogy a natív lekérdezés a Power Query használatával érvényesítés nélkül legyen átadva.
SqlCapabilities = Diagnostics.LogValue("SqlCapabilities_Options", defaultConfig[SqlCapabilities] & [
// Place custom overrides here
// The values below are required for the SQL Native Client ODBC driver, but might
// not be required for your data source.
SupportsTop = false,
SupportsDerivedTable = true,
Sql92Conformance = 8 /* SQL_SC_SQL92_FULL */,
GroupByCapabilities = 4 /* SQL_GB_NO_RELATION */,
FractionalSecondsScale = 3,
Sql92Translation = "PassThrough"
]),
Mielőtt továbblépne, győződjön meg arról, hogy ez a mező megjelenik az összekötőben. Ha nem, akkor később figyelmeztetésekkel és hibákkal fog szembesülni, amikor egy olyan képesség használatára lesz szükség, amely nem támogatott, mert az összekötő nem deklarálja.
Hozza létre az összekötőfájlt (.mez vagy.pqx néven), és töltse be a Power BI Desktopba manuális tesztelés céljából, és határozza meg a natív lekérdezés célját.
Az összekötő natív lekérdezési képességeinek manuális tesztelése
Megjegyzés:
Ebben a cikkben az AdventureWorks2019 mintaadatbázist fogjuk használni. Követheti azonban a választott SQL Server-adatbázist, és elvégezheti a szükséges módosításokat a kiválasztott adatbázis jellemzőinek figyelembe adásával.
A natív lekérdezések támogatása ebben a cikkben az, hogy a felhasználónak három értéket kell megadnia:
- Kiszolgáló neve
- Adatbázis neve
- Natív lekérdezés az adatbázis szintjén
Most a Power BI Desktopban lépjen az Adatok lekérése felületre, és keresse meg az SqlODBC-minta nevű összekötőt.
Az összekötő párbeszédpanelen adja meg a kiszolgáló paramétereit és az adatbázis nevét. Ezután válassza OKlehetőséget.
Megjelenik egy új kezelőablak. A Kezelőben megtekintheti a natív navigációs viselkedést az SQL-illesztőprogramból, amely megjeleníti a kiszolgáló és a benne lévő adatbázisok hierarchikus nézetét. Kattintson a jobb gombbal az AdventureWorks2019 adatbázisra, majd válassza az Adatok átalakítása lehetőséget.
Ezzel a kijelöléssel megtekintheti a Power Query-szerkesztőt, és megtekintheti, hogy mi a natív lekérdezés célja, mivel minden natív lekérdezésnek adatbázisszinten kell futnia. Ellenőrizze az utolsó lépés szerkesztőlécét, hogy jobban megértse, hogyan kell az összekötőnek a natív lekérdezések céljára navigálnia a végrehajtás előtt. Ebben az esetben a szerkesztőléc a következő információkat jeleníti meg:
= Source{[Name="AdventureWorks2019",Kind="Database"]}[Data]
A forrás az előző lépés neve, amely ebben az esetben egyszerűen az összekötő közzétett függvénye az átadott paraméterekkel. A lista és a benne lévő rekord egyszerűen segít navigálni egy táblában egy adott sorba. A sort annak a rekordnak a feltételei határozzák meg, amelyben a Név mezőnek meg kell egyenlõnek lennie az AdventureWorks2019 mezővel, a Kind mezőnek pedig az Adatbázissal kell egyenlőnek lennie. Miután megtalálta a sort, a lista [Data] külső része lehetővé teszi, hogy a {} Power Query hozzáférjen az Adatmezőn belüli értékhez, amely ebben az esetben egy tábla. A navigálás jobb megértéséhez térjen vissza az előző lépéshez (forrás).
Natív lekérdezés tesztelése
Miután azonosította a célértéket, hozzon létre egy egyéni lépést a navigációs lépés után a szerkesztőlécen található fx ikon kiválasztásával.
Cserélje le a képletsávon belüli képletet a következő képletre, majd válassza az Enter billentyűt.
= Value.NativeQuery( AdventureWorks2019_Database, "SELECT TOP (1000) *
FROM [Person].[Address]")
A módosítás alkalmazása után figyelmeztetésnek kell megjelennie a szerkesztőléc alatt, amely engedélyt kér a natív lekérdezés futtatására az adatforráson.
Válassza a Szerkesztési engedély lehetőséget. Megjelenik egy új natív adatbázis-lekérdezés párbeszédpanel, amely figyelmezteti a natív lekérdezések futtatásának lehetőségeire. Ebben az esetben tudjuk, hogy ez az SQL-utasítás biztonságos, ezért a parancs végrehajtásához válassza a Futtatás lehetőséget .
A lekérdezés futtatása után megjelenik a lekérdezés előnézete a Power Query-szerkesztőben. Ez az előzetes verzió ellenőrzi, hogy az összekötő képes-e natív lekérdezések futtatására.
Natív lekérdezési logika implementálása az összekötőben
Az előző szakaszokból összegyűjtött információk alapján a cél most az, hogy ezeket az információkat kódba fordítsuk az összekötő számára.
Ezt a fordítást úgy érheti el, hogy hozzáad egy új NativeQueryProperties rekordmezőt az összekötő Publish rekordjához, amely ebben az esetben a SqlODBC.Publish rekord. A NativeQueryProperties rekord kulcsfontosságú szerepet játszik annak meghatározásában, hogy az összekötő hogyan fogja használni a függvényt Value.NativeQuery .
Az új rekordmező két mezőből áll:
-
NavigationSteps: Ez a mező határozza meg, hogy az összekötő hogyan végezze el vagy kezelje a navigációt. Olyan rekordok listáját tartalmazza, amelyek ismertetik a függvény használatával lekérdezni kívánt adatokra való navigálás lépéseit
Value.NativeQuery. Minden rekordon belül meghatározza, hogy milyen paraméterek szükségesek vagy szükségesek ahhoz, hogy az ilyen navigáció elérje a kívánt célt. -
DefaultOptions: Ez a mező segít azonosítani, hogy egyes választható paraméterek hogyan legyenek belefoglalva vagy hozzáadva a
Value.NativeQuerybeállításrekordhoz. Az adatforrás lekérdezéséhez használható alapértelmezett beállításokat biztosít.
NavigationSteps
A navigációs lépések két csoportba sorolhatók. Az első tartalmazza a végfelhasználó által megadott értékeket, például a kiszolgáló vagy az adatbázis nevét ebben az esetben. A második azokat az értékeket tartalmazza, amelyek az adott összekötő implementációja alapján származnak, például azoknak a mezőknek a nevét, amelyek nem jelennek meg a felhasználó számára az adatok lekérése során. Ezek a mezők az összekötő implementációjától függően tartalmazhatnak Name, Kind, Dataés egyéb mezőket is.
Ebben az esetben csak egy navigációs lépés volt, amely két mezőből állt:
-
Név: Ez a mező annak az adatbázisnak a neve, amelyet a végfelhasználó átadott. Ebben az esetben az
AdventureWorks2019volt, de ezt a mezőt mindig változtatás nélkül kell átadni abból, amit a végfelhasználó az adatok lekérése során megadott. -
Típus: Ez a mező olyan információ, amely nem látható a végfelhasználó számára, és az összekötőre vagy illesztőprogram-implementációra jellemző. Ebben az esetben ez az érték azonosítja, hogy milyen típusú objektumot kell elérni. Ebben az implementációban ez a mező egy rögzített érték lesz, amely a sztringből
Databaseáll.
Ezek az információk a következő kódra lesznek lefordítva. Ezt a kódot új mezőként kell hozzáadni a SqlODBC.Publish rekordhoz.
NativeQueryProperties = [
NavigationSteps = {
[
Indices = {
[
FieldDisplayName = "database",
IndexName = "Name"
],
[
ConstantValue = "Database",
IndexName = "Kind"
]
},
FieldAccess = "Data"
]
}
]
Fontos
A mezők neve megkülönbözteti a kis- és nagybetűket, és a fenti mintában látható módon kell használni. A ConstantValue, IndexName vagy FieldDisplayName mezőkbe átadott összes információnak az összekötő M-kódból kell származnia.
A felhasználó által megadott értékek átadásához használhatja a FieldDisplayName és IndexName párost. Rögzített vagy előre definiált értékek esetén, amelyeket a végfelhasználó nem tud átadni, használhatja a pár ConstantValue és IndexNamea . Ebben az értelemben a NavigationSteps rekord két mezőből áll:
-
Indexek: Meghatározza, hogy mely mezők és milyen értékek használhatók a függvény célértékét tartalmazó rekordra való navigáláshoz
Value.NativeQuery. - FieldAccess: Meghatározza, hogy melyik mező tárolja a célt, ami általában tábla.
DefaultOptions
A DefaultOptions mező lehetővé teszi, hogy opcionális paramétereket adjon át a Value.NativeQuery függvénynek az összekötő natív lekérdezési funkciójának használatakor.
Ha meg szeretné őrizni a lekérdezés-összecsukást egy natív lekérdezés után, és feltételezve, hogy a csatlakozó támogatja a lekérdezés-összecsukást, használhatja a következő mintakódot EnableFolding = true-hez.
NativeQueryProperties = [
NavigationSteps = {
[
Indices = {
[
FieldDisplayName = "database",
IndexName = "Name"
],
[
ConstantValue = "Database",
IndexName = "Kind"
]
},
FieldAccess = "Data"
]
},
DefaultOptions = [
EnableFolding = true
]
]
A módosítások végrehajtásával hozza létre az összekötőt, és töltse be a Power BI Desktopba teszteléshez és ellenőrzéshez.
Az összekötő tesztelése és ellenőrzése
Az új egyéni összekötővel rendelkező Power BI Desktopban indítsa el az összekötőt az Adatok lekérése felületről. Az összekötő indításakor láthatja, hogy a párbeszédpanelen most már egy natív lekérdezés nevű hosszú szövegmező található, és zárójelben a működéséhez szükséges mezőkkel rendelkezik. Adja meg az összekötő tesztelése során korábban megadott kiszolgáló, adatbázis és SQL-utasítás értékeit.
Az OK gomb kiválasztása után egy új párbeszédpanelen megjelenik a végrehajtott natív lekérdezés táblanézete.
Kattintson az OK gombra. Ekkor egy új lekérdezés töltődik be a Power Query-szerkesztőbe, ahol szükség szerint elvégezheti az összekötő további tesztelését.
Megjegyzés:
Ha az összekötő támogatja a lekérdezés-összecsukást, és kifejezetten az opcionális rekord EnableFolding=true részeként van definiálva Value.NativeQuery, akkor a Power Query szerkesztőben tovább tesztelheti az összekötőt, ha ellenőrizze, hogy a további átalakítások vissza tudnak-e hajlani a forráshoz.