Aktivering af DirectQuery for en ODBC-baseret connector
Det anbefales at bruge M's indbyggede odbc.DataSource-funktion til at oprette brugerdefinerede connectors til datakilder, der har en eksisterende ODBC-driver og/eller understøtter en SQL-forespørgselssyntaks. Ombrydning af funktionen Odbc.DataSource gør det muligt for din connector at nedarve standardfunktionsmåden for forespørgselsdelegering baseret på de funktioner, der er rapporteret af driveren. Denne funktionsmåde gør det muligt for M-programmet at generere SQL-sætninger baseret på filtre og andre transformationer, der er defineret af brugeren i Power Query-oplevelsen, uden at det er nødvendigt at angive denne logik i selve connectoren.
ODBC-udvidelser kan eventuelt aktivere DirectQuery-tilstand, så Power BI dynamisk kan generere forespørgsler på kørselstidspunktet uden at forudbestille brugerens datamodel.
Bemærk
Aktivering af DirectQuery-understøttelse giver problemer og kompleksitetsniveau for din connector. Når DirectQuery er aktiveret, forhindrer Power BI M-programmet i at kompensere for handlinger, der ikke kan pushes fuldt ud til den underliggende datakilde.
Denne artikel forudsætter kendskab til oprettelsen af en grundlæggende brugerdefineret connector.
Se SqlODBC-eksemplet for at få vist de fleste kodeeksempler i følgende afsnit. Du kan finde andre eksempler i mappen ODBC-eksempler.
M-programmet indeholder to ODBC-relaterede datakildefunktioner: Odbc.DataSource og Odbc.Query.
Funktionen Odbc.DataSource indeholder en standardnavigationstabel med alle databaser, tabeller og visninger fra systemet. Denne funktion understøtter også forespørgselsdelegering og giver mulighed for en række tilpasningsindstillinger. De fleste ODBC-baserede udvidelser bruger denne funktion som deres primære udvidelsesfunktion. Funktionen accepterer to argumenter – en forbindelsesstreng og en indstillingspost for at angive tilsidesættelser af funktionsmåde.
Funktionen Odbc.Query giver dig mulighed for at udføre SQL-sætninger via en ODBC-driver. Den fungerer som en passthrough til udførelse af forespørgsler. I modsætning til funktionen Odbc.DataSource indeholder den ikke funktioner til forespørgselsdelegering og kræver, at SQL-forespørgsler leveres af connectoren (eller slutbrugeren). Når du bygger en brugerdefineret connector, bruges denne funktion typisk internt til at køre forespørgsler for at hente metadata, der muligvis ikke vises via almindelige ODBC-kanaler. Funktionen accepterer to argumenter – en forbindelsesstreng og en SQL-forespørgsel.
Brugerdefinerede connectors kan acceptere et vilkårligt antal funktionsargumenter. Men for at forblive i overensstemmelse med de indbyggede datakildefunktioner, der leveres sammen med Power Query, anbefales følgende retningslinjer:
Kræv det minimale sæt parametre, der bruges til at oprette forbindelse til serveren. Jo færre parametre slutbrugerne skal angive, jo nemmere er det at bruge din connector.
Selvom du kan definere parametre med et fast antal værdier (f.eks. en rulleliste i brugergrænsefladen), angives parametre, før brugeren godkendes. Alle værdier, der kan registreres programmatisk, når brugeren er godkendt (f.eks. katalog- eller databasenavn), skal kunne vælges via Navigator. Standardfunktionsmåden for funktionen Odbc.DataSource er at returnere en hierarkisk navigationstabel, der består af catalog (Database), Schema og Table names. Denne funktionsmåde kan dog tilsidesættes i din connector.
Hvis du føler, at brugerne typisk ved, hvilke værdier de skal angive for elementer, de vælger i Navigator (f.eks. databasenavnet), skal du gøre disse parametre valgfrie. Parametre, der kan registreres programmatisk, skal ikke gøres obligatoriske.
Den sidste parameter for funktionen skal være en valgfri post, der kaldes "options". Denne parameter gør det typisk muligt for erfarne brugere at angive almindelige ODBC-relaterede egenskaber (f.eks. ), tilsidesættelser af den angivne funktionsmåde, der
CommandTimeout
er specifikke for din connector, og giver mulighed for fremtidig udvidelse uden at påvirke bagudkompatibilitet for funktionen.Argumenter relateret til sikkerhed/legitimationsoplysninger MÅ aldrig være en del af parametrene for datakildefunktionen, da værdier, der angives i dialogboksen Opret forbindelse, bevares i forhold til brugerens forespørgsel. Legitimationsrelaterede parametre skal angives som en del af connectorens understøttede godkendelsesmetoder.
Som standard indregnes alle påkrævede parametre for din datakildefunktion i den datakildestiværdi, der bruges til at identificere brugerlegitimationsoplysninger.
Selvom brugergrænsefladen for den indbyggede odbc.DataSource-funktion indeholder en rulleliste, der gør det muligt for brugeren at vælge et DSN, er denne funktionalitet ikke tilgængelig via udvidelse. Hvis din datakildekonfiguration er kompleks nok til at kræve en fuldt tilpasset konfigurationsdialogboks, anbefaler vi, at du kræver, at dine slutbrugere forudkonfigurer et system-DSN og får din funktion til at bruge DSN-navnet som et tekstfelt.