DirectQuery inschakelen voor een ODBC-connector
Het gebruik van de ingebouwde odbc.DataSource-functie van M is de aanbevolen manier om aangepaste connectors te maken voor gegevensbronnen met een bestaand ODBC-stuurprogramma en/of ondersteuning voor een SQL-querysyntaxis. Door de functie Odbc.DataSource te verpakken, kan uw connector het standaardgedrag voor query folding overnemen op basis van de mogelijkheden die door uw stuurprogramma zijn gerapporteerd. Met dit gedrag kan de M-engine SQL-instructies genereren op basis van filters en andere transformaties die zijn gedefinieerd door de gebruiker in de Power Query-ervaring, zonder dat deze logica binnen de connector zelf hoeft te worden opgegeven.
ODBC-extensies kunnen eventueel de DirectQuery-modus inschakelen, waardoor Power BI query's dynamisch kan genereren tijdens runtime zonder het gegevensmodel van de gebruiker te hoeven voorbereiden.
Notitie
Het inschakelen van DirectQuery-ondersteuning verhoogt de moeilijkheidsgraad en het complexiteitsniveau van uw connector. Wanneer DirectQuery is ingeschakeld, voorkomt Power BI dat de M-engine compenseert voor bewerkingen die niet volledig naar de onderliggende gegevensbron kunnen worden gepusht.
In dit artikel wordt ervan uitgegaan dat u bekend bent met het maken van een eenvoudige aangepaste connector.
Raadpleeg het SqlODBC-voorbeeld voor de meeste codevoorbeelden in de volgende secties. Andere voorbeelden vindt u in de map met ODBC-voorbeelden.
De M-engine biedt twee ODBC-gerelateerde gegevensbronfuncties: Odbc.DataSource en 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 biedt een scala aan aanpassingsopties. De meeste ODBC-extensies gebruiken deze functie als primaire uitbreidbaarheidsfunctie. De functie accepteert twee argumenten: een verbindingsreeks en een optiesrecord om gedrag te overschrijven.
Met de functie Odbc.Query kunt u SQL-instructies uitvoeren via een ODBC-stuurprogramma. Het fungeert als een passthrough voor het uitvoeren van query's. In tegenstelling tot de functie Odbc.DataSource biedt de functie geen functionaliteit voor het vouwen van query's en is vereist dat SQL-query's worden geleverd door de connector (of eindgebruiker). Wanneer u een aangepaste connector bouwt, wordt deze functie doorgaans intern gebruikt om query's uit te voeren om metagegevens op te halen die mogelijk niet beschikbaar zijn via normale ODBC-kanalen. De functie accepteert twee argumenten: een verbindingsreeks en een SQL-query.
Aangepaste connectors kunnen een willekeurig aantal functieargumenten accepteren. Maar om consistent te blijven met de ingebouwde functies voor gegevensbronnen die worden geleverd met Power Query, worden de volgende richtlijnen aanbevolen:
Vereist de minimale set parameters die worden gebruikt om een verbinding met uw server tot stand te brengen. Hoe minder parameters eindgebruikers moeten opgeven, hoe eenvoudiger uw connector is om te gebruiken.
Hoewel u parameters met een vast aantal waarden kunt definiëren (bijvoorbeeld een vervolgkeuzelijst in de gebruikersinterface), worden parameters ingevoerd voordat de gebruiker wordt geverifieerd. Waarden die programmatisch kunnen worden gedetecteerd 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 tabel. Dit gedrag kan echter worden overschreven binnen uw connector.
Als u denkt dat uw gebruikers doorgaans weten welke waarden moeten worden ingevoerd voor items die ze selecteren in de Navigator (zoals de databasenaam), moet u deze parameters optioneel maken. Parameters die programmatisch kunnen worden gedetecteerd, moeten niet worden vereist.
De laatste parameter voor uw functie moet een optionele record met de naam 'options' zijn. Met deze parameter kunnen geavanceerde gebruikers doorgaans algemene ODBC-gerelateerde eigenschappen instellen (zoals
CommandTimeout
), gedragsregels instellen die specifiek zijn voor uw connector en toekomstige uitbreidbaarheid mogelijk maken zonder dat dit van invloed is op achterwaartse compatibiliteit voor uw functie.Beveiligings-/referentiegerelateerde argumenten MOGEN nooit deel uitmaken van de parameters van de gegevensbronfunctie, omdat de waarden die zijn ingevoerd in het verbindingsdialoogvenster, behouden blijven op de query van de gebruiker. Parameters met betrekking tot referenties moeten worden opgegeven als onderdeel van de ondersteunde verificatiemethoden van de connector.
Standaard worden alle vereiste parameters voor uw gegevensbronfunctie meegenomen in de waarde van het gegevensbronpad die wordt gebruikt om gebruikersreferenties te identificeren.
Hoewel de gebruikersinterface voor de ingebouwde functie Odbc.DataSource een vervolgkeuzelijst biedt waarmee de gebruiker een DSN kan selecteren, is deze functionaliteit niet beschikbaar via uitbreidbaarheid. Als uw gegevensbronconfiguratie complex genoeg is om een volledig aanpasbaar configuratiedialoogvenster te vereisen, raden we u aan dat uw eindgebruikers een systeem-DSN vooraf moeten configureren en dat uw functie de DSN-naam als tekstveld inneemt.