DirectQuery inschakelen voor een op ODBC gebaseerde connector

Het gebruik van de ingebouwde functie Odbc.DataSource van M is de aanbevolen manier om aangepaste connectors te maken voor gegevensbronnen die een bestaand ODBC-stuurprogramma hebben en/of ondersteuning bieden voor een SQL querysyntaxis. Door de functie Odbc.DataSource te verpakken, kan uw connector het standaardgedrag voor het vouwen van query's overnemen op basis van de mogelijkheden die door uw stuurprogramma worden gerapporteerd. Hierdoor kan de M-engine SQL-instructies genereren op basis van filters en andere transformaties die door de gebruiker zijn gedefinieerd binnen de Power Query-ervaring, zonder dat deze logica in de connector zelf moet worden opgegeven.

ODBC-extensies kunnen eventueel de DirectQuery-modus inschakelen, zodat Power BI dynamisch query's kunnen genereren tijdens runtime zonder dat het gegevensmodel van de gebruiker vooraf in de caching wordt opgevraagd.

Notitie

Het inschakelen van DirectQuery-ondersteuning verhoogt de problemen en complexiteit van uw connector. Wanneer DirectQuery is ingeschakeld, voorkomt Power BI dat de M-engine compenserende bewerkingen kan uitvoeren die niet volledig naar de onderliggende gegevensbron kunnen worden pushen.

In dit artikel wordt ervan uitgenomen dat u bekend bent met het maken van een aangepaste basisconnector.

Raadpleeg het SqlODBC-voorbeeld voor de meeste codevoorbeelden in de volgende secties. Andere voorbeelden vindt u in de map ODBC-voorbeelden.

Functies voor ODBC-uitbreidbaarheid

De M-engine biedt twee ODBC-gerelateerde gegevensbronfuncties: Odbc.DataSourceen Odbc.Query.

De functie Odbc.DataSource biedt een standaardnavigatietabel met alle databases, tabellen en weergaven van uw systeem. Deze functie biedt ook ondersteuning voor het vouwen van query's en maakt een scala aan aanpassingsopties mogelijk. De meeste extensies op basis van ODBC gebruiken deze functie als hun primaire uitbreidingsfunctie. De functie accepteert twee — argumenten, een connection string, en een optiesrecord om gedrag te overschrijven.

Met de functie Odbc.Query kunt u de SQL uitvoeren via een ODBC-stuurprogramma. Het fungeert als een passthrough voor het uitvoeren van query's. In tegenstelling tot de functie Odbc.DataSource biedt deze geen functionaliteit voor het vouwen van query's en vereist dat SQL-query's worden geleverd door de connector (of eindgebruiker). Bij het bouwen van een aangepaste connector wordt deze functie doorgaans intern gebruikt om query's uit te voeren om metagegevens op te halen die mogelijk niet worden weergegeven via gewone ODBC-kanalen. De functie accepteert twee — argumenten, een connection string, en een SQL query.

Richtlijnen voor gegevensbronfuncties

Aangepaste connectors kunnen elk aantal functieargumenten accepteren. Maar om consistent te blijven met de ingebouwde gegevensbronfuncties die worden geleverd met Power Query, worden de volgende richtlijnen aanbevolen:

  • De minimale set parameters vereisen die worden gebruikt om een verbinding met uw server tot stand te brengen. Hoe minder parameters eindgebruikers hoeven op te geven, hoe eenvoudiger uw connector wordt gebruikt.

  • Hoewel u parameters kunt definiëren met een vast aantal waarden (dat wil zeggen, een vervolgkeuzelijst in de gebruikersinterface), worden parameters ingevoerd voordat de gebruiker wordt geverifieerd. Waarden die programmatisch kunnen worden ontdekt nadat de gebruiker is geverifieerd (zoals catalogus- of databasenaam), moeten via navigator kunnen worden geselecteerd. Het standaardgedrag voor de functie Odbc.DataSource is het retourneren van een hiërarchische navigatietabel die bestaat uit catalogusnamen (database), schema- en tabelnamen. Dit gedrag kan echter worden overschrijven binnen uw connector.

  • Als u denkt dat uw gebruikers doorgaans weten welke waarden ze moeten invoeren voor items die ze in de Navigator selecteren (zoals de databasenaam), moet u deze parameters optioneel maken. Parameters die programmatisch kunnen worden ontdekt, mogen niet vereist worden gemaakt.

  • De laatste parameter voor uw functie moet een optionele record met de naam 'opties' zijn. Met deze parameter kunnen geavanceerde gebruikers doorgaans algemene ODBC-gerelateerde eigenschappen instellen (zoals ), gedrags-overschrijvingen instellen die specifiek zijn voor uw connector, en kunnen ze in de toekomst worden uitgebreid zonder dat dit van invloed is op achterwaartse compatibiliteit voor uw CommandTimeout functie.

  • Argumenten met betrekking tot beveiliging/referenties MOGEN nooit deel uitmaken van de functieparameters van uw gegevensbron, omdat waarden die zijn ingevoerd in het dialoogvenster Verbinding maken, behouden blijven in de query van de gebruiker. Referentiegerelateerde parameters moeten worden opgegeven als onderdeel van de ondersteunde verificatiemethoden van de connector.

Standaard worden alle vereiste parameters voor uw gegevensbronfunctie meegenomen in de waarde Pad naar gegevensbron die wordt gebruikt om gebruikersreferenties te identificeren.

Hoewel de gebruikersinterface voor de ingebouwde functie Odbc.DataSource een vervolgkeuze bevat waarmee de gebruiker een DSN kan selecteren, is deze functionaliteit niet beschikbaar via uitdedbaarheid. Als de configuratie van uw gegevensbron complex genoeg is om een volledig aanpasbaar configuratiedialoogvenster te vereisen, wordt u aangeraden dat uw eindgebruikers een systeem-DSN vooraf moeten configureren en dat uw functie de DSN-naam als tekstveld moet gebruiken.

Volgende stappen