Aktivere DirectQuery for en ODBC-basert kobling
Bruk av M's innebygde Odbc.DataSource-funksjon er den anbefalte måten å opprette egendefinerte koblinger for datakilder som har en eksisterende ODBC-driver og/eller som støtter en SQL-spørringssyntaks. Ved å bryte Odbc.DataSource-funksjonen kan koblingen arve standard virkemåte for spørringsdelegering basert på funksjonene som er rapportert av driveren. Denne virkemåten gjør det mulig for M-motoren å generere SQL-setninger basert på filtre og andre transformasjoner som er definert av brukeren i Power Query-opplevelsen, uten å måtte oppgi denne logikken i selve koblingen.
ODBC-utvidelser kan eventuelt aktivere DirectQuery-modus, slik at Power BI kan generere spørringer dynamisk ved kjøring uten å forhåndsbeveg brukerens datamodell.
Obs!
Aktivering av DirectQuery-støtte øker vanskelighetsgraden og kompleksiteten til koblingen. Når DirectQuery er aktivert, hindrer Power BI M-motoren i å kompensere for operasjoner som ikke kan overføres fullstendig til den underliggende datakilden.
Denne artikkelen forutsetter kjennskap til opprettingen av en grunnleggende egendefinert kobling.
Se sqlODBC-eksemplet for de fleste kodeeksempler i de følgende inndelingene. Du finner andre eksempler i ODBC-eksempelkatalogen.
M-motoren inneholder to ODBC-relaterte datakildefunksjoner: Odbc.DataSource og Odbc.Query.
Odbc.DataSource-funksjonen gir en standard navigasjonstabell med alle databaser, tabeller og visninger fra systemet. Denne funksjonen støtter også spørringsdelegering, og gir mulighet for en rekke tilpasningsalternativer. De fleste ODBC-baserte utvidelser bruker denne funksjonen som sin primære utvidelsesfunksjon. Funksjonen godtar to argumenter – en tilkoblingsstreng, og en alternativpost for å angi overstyringer for virkemåte.
Med Odbc.Query-funksjonen kan du kjøre SQL-setninger gjennom en ODBC-driver. Den fungerer som en gjennomgang for kjøring av spørring. I motsetning til Odbc.DataSource-funksjonen gir den ikke spørringsdelegeringsfunksjonalitet, og krever at SQL-spørringer leveres av koblingen (eller sluttbrukeren). Når du bygger en egendefinert kobling, brukes denne funksjonen vanligvis internt til å kjøre spørringer for å hente metadata som kanskje ikke vises gjennom vanlige ODBC-kanaler. Funksjonen godtar to argumenter – en tilkoblingsstreng og en SQL-spørring.
Egendefinerte koblinger kan godta et hvilket som helst antall funksjonsargumenter. Men for å forbli i samsvar med de innebygde datakildefunksjonene som leveres med Power Query, anbefales følgende retningslinjer:
Krev det minimale settet med parametere som brukes til å opprette en tilkobling til serveren. Jo færre parametere sluttbrukerne må oppgi, jo enklere er koblingen å bruke.
Selv om du kan definere parametere med et fast antall verdier (for eksempel en rullegardinliste i brukergrensesnittet), angis parametere før brukeren godkjennes. Alle verdier som kan oppdages programmatisk etter at brukeren er godkjent (for eksempel katalog- eller databasenavn), bør velges gjennom navigatøren. Standardvirkemåten for Odbc.DataSource-funksjonen er å returnere en hierarkisk navigasjonstabell som består av katalognavn (database), skjema og tabellnavn. Denne virkemåten kan imidlertid overstyres i koblingen.
Hvis du føler at brukerne vanligvis vet hvilke verdier som skal angis for elementer de velger fra navigatøren (for eksempel databasenavnet), gjør du disse parameterne valgfrie. Parametere som kan oppdages programmatisk, må ikke gjøres påkrevd.
Den siste parameteren for funksjonen bør være en valgfri post kalt «alternativer». Denne parameteren gjør det vanligvis mulig for avanserte brukere å angi vanlige ODBC-relaterte egenskaper (for eksempel
CommandTimeout
), angi virkemåte overstyrer spesifikk for koblingen, og gir mulighet for fremtidig utvidbarhet uten å påvirke bakoverkompatibiliteten for funksjonen.Sikkerhets-/legitimasjonsrelaterte argumenter MÅ aldri være en del av datakildefunksjonsparameterne, ettersom verdier som er angitt i dialogboksen for tilkobling, vedvarer til brukerens spørring. Legitimasjonsrelaterte parametere må angis som en del av koblingens støttede godkjenningsmetoder.
Som standard blir alle nødvendige parametere for datakildefunksjonen tatt med i datakildebaneverdien som brukes til å identifisere brukerlegitimasjon.
Selv om brukergrensesnittet for den innebygde Odbc.DataSource-funksjonen gir en rullegardinliste som gjør det mulig for brukeren å velge en DSN, er ikke denne funksjonaliteten tilgjengelig gjennom utvidbarhet. Hvis datakildekonfigurasjonen er kompleks nok til å kreve en fullstendig konfigurasjonsdialogboks som kan tilpasses, anbefaler vi at du krever at sluttbrukerne forhåndskonfigurerer et system-DSN, og at funksjonen din tar inn DSN-navnet som et tekstfelt.