Aktivera DirectQuery för en ODBC-baserad anslutningsapp
Att använda M:s inbyggda Odbc.DataSource-funktion är det rekommenderade sättet att skapa anpassade anslutningsappar för datakällor som har en befintlig ODBC-drivrutin och/eller stöder en SQL-frågesyntax. Om du omsluter funktionen Odbc.DataSource kan anslutningsappen ärva standardbeteendet för frågedelegering baserat på de funktioner som rapporterats av drivrutinen. Det här beteendet gör att M-motorn kan generera SQL-instruktioner baserat på filter och andra transformeringar som definierats av användaren i Power Query-upplevelsen, utan att behöva ange den här logiken i själva anslutningsappen.
ODBC-tillägg kan också aktivera DirectQuery-läge, vilket gör att Power BI dynamiskt kan generera frågor vid körning utan att förinstallera användarens datamodell.
Anteckning
Om du aktiverar DirectQuery-stöd ökar svårigheten och komplexitetsnivån för anslutningsappen. När DirectQuery är aktiverat förhindrar Power BI att M-motorn kompenserar för åtgärder som inte kan push-överföras helt till den underliggande datakällan.
Den här artikeln förutsätter att du är bekant med skapandet av en grundläggande anpassad anslutningsapp.
Se SqlODBC-exemplet för de flesta kodexemplen i följande avsnitt. Andra exempel finns i ODBC-exempelkatalogen.
M-motorn innehåller två ODBC-relaterade datakällfunktioner: Odbc.DataSource och Odbc.Query.
Funktionen Odbc.DataSource innehåller en standardnavigeringstabell med alla databaser, tabeller och vyer från systemet. Den här funktionen stöder även frågedelegering och möjliggör en rad anpassningsalternativ. De flesta ODBC-baserade tillägg använder den här funktionen som sin primära utökningsfunktion. Funktionen accepterar två argument – en niska veze och en alternativpost för att tillhandahålla beteende åsidosättningar.
Med funktionen Odbc.Query kan du köra SQL-instruktioner via en ODBC-drivrutin. Den fungerar som en genomströmning för frågekörning. Till skillnad från funktionen Odbc.DataSource tillhandahåller den inte frågedelegeringsfunktioner och kräver att SQL-frågor tillhandahålls av anslutningsappen (eller slutanvändaren). När du skapar en anpassad anslutningsapp används den här funktionen vanligtvis internt för att köra frågor för att hämta metadata som kanske inte exponeras via vanliga ODBC-kanaler. Funktionen accepterar två argument – en niska veze och en SQL-fråga.
Anpassade anslutningsappar kan acceptera valfritt antal funktionsargument. Men för att förbli konsekventa med de inbyggda datakällans funktioner som levereras med Power Query rekommenderar vi följande riktlinjer:
Kräv den minimala uppsättning parametrar som används för att upprätta en anslutning till servern. Ju färre parametrar slutanvändarna behöver tillhandahålla, desto enklare är anslutningsappen att använda.
Även om du kan definiera parametrar med ett fast antal värden (till exempel en listruta i användargränssnittet), anges parametrar innan användaren autentiseras. Alla värden som kan identifieras programmatiskt efter att användaren har autentiserats (till exempel katalog- eller databasnamn) ska kunna väljas via navigatören. Standardbeteendet för funktionen Odbc.DataSource är att returnera en hierarkisk navigeringstabell som består av katalog-, schema- och tabellnamn. Det här beteendet kan dock åsidosättas i anslutningsappen.
Om du känner att användarna vanligtvis vet vilka värden de ska ange för objekt som de skulle välja från navigatören (till exempel databasnamnet) gör du dessa parametrar valfria. Parametrar som kan identifieras programmatiskt bör inte göras obligatoriska.
Den sista parametern för funktionen ska vara en valfri post med namnet "options". Den här parametern gör vanligtvis att avancerade användare kan ange vanliga ODBC-relaterade egenskaper (till exempel ), ange beteende åsidosättningar som
CommandTimeout
är specifika för din anslutningsapp och möjliggör framtida utökningsbarhet utan att påverka bakåtkompatibiliteten för din funktion.Säkerhets-/autentiseringsrelaterade argument FÅR aldrig ingå i datakällans funktionsparametrar, eftersom värden som anges i anslutningsdialogrutan sparas i användarens fråga. Autentiseringsrelaterade parametrar bör anges som en del av anslutningsappens autentiseringsmetoder som stöds.
Som standard räknas alla obligatoriska parametrar för din datakällfunktion in i värdet Datakällsökväg som används för att identifiera användarautentiseringsuppgifter.
Även om användargränssnittet för den inbyggda funktionen Odbc.DataSource innehåller en listruta som gör att användaren kan välja ett DSN, är den här funktionen inte tillgänglig via utökningsbarhet. Om konfigurationen av datakällan är tillräckligt komplex för att kräva en fullständigt anpassningsbar konfigurationsdialogruta rekommenderar vi att du kräver att slutanvändarna konfigurerar ett system-DSN för förkonfigurering och att funktionen använder DSN-namnet som ett textfält.