Activation de DirectQuery pour un connecteur ODBC

L’utilisation de la fonction Odbc.DataSource intégrée de M est la méthode recommandée pour créer des connecteurs personnalisés pour les sources de données qui ont un pilote ODBC existant et/ou prennent en charge une syntaxe de requête SQL. L'encapsulation de la fonction Odbc.DataSource permet à votre connecteur d'hériter du comportement de repliement de requêtes par défaut en fonction des fonctionnalités rapportées par votre pilote. Ce comportement permet au moteur M de générer des instructions SQL basées sur des filtres et d’autres transformations définies par l’utilisateur dans l’expérience Power Query, sans avoir à fournir cette logique au sein du connecteur lui-même.

Les extensions ODBC peuvent éventuellement activer le mode DirectQuery, ce qui permet à Power BI de générer dynamiquement des requêtes au moment de l’exécution sans précaching du modèle de données de l’utilisateur.

Note

L’activation de la prise en charge de DirectQuery soulève la difficulté et le niveau de complexité de votre connecteur. Lorsque DirectQuery est activé, Power BI empêche le moteur M de compenser les opérations qui ne peuvent pas être entièrement envoyées à la source de données sous-jacente.

Cet article suppose une connaissance de la création d’un connecteur personnalisé de base.

Reportez-vous à l’exemple SqlODBC pour obtenir la plupart des exemples de code dans les sections suivantes. Vous trouverez d’autres exemples dans le répertoire des exemples ODBC.

Fonctions d’extensibilité ODBC

Le moteur M fournit deux fonctions de source de données liées à ODBC : Odbc.DataSource et Odbc.Query.

La fonction Odbc.DataSource fournit une table de navigation par défaut avec toutes les bases de données, tables et vues de votre système. Cette fonction prend également en charge le pliage des requêtes et permet une gamme d’options de personnalisation. La plupart des extensions basées sur ODBC utilisent cette fonction comme fonction d’extensibilité principale. La fonction accepte deux arguments : une chaîne de connexion et un enregistrement d’options pour fournir des modifications de comportement.

La fonction Odbc.Query vous permet d’exécuter des instructions SQL via un pilote ODBC. Il agit comme une interface de passage pour l'exécution de requêtes. Contrairement à la fonction Odbc.DataSource , elle ne fournit pas de fonctionnalité de pliage des requêtes et nécessite que les requêtes SQL soient fournies par le connecteur (ou l’utilisateur final). Lorsque vous générez un connecteur personnalisé, cette fonction est généralement utilisée en interne pour exécuter des requêtes pour récupérer des métadonnées qui peuvent ne pas être exposées via des canaux ODBC standard. La fonction accepte deux arguments : une chaîne de connexion et une requête SQL.

Instructions relatives à la fonction de source de données

Les connecteurs personnalisés peuvent accepter n’importe quel nombre d’arguments de fonction. Toutefois, pour rester cohérent avec les fonctions de source de données intégrées fournies avec Power Query, les instructions suivantes sont recommandées :

  • Exiger le jeu minimal de paramètres utilisés pour établir une connexion à votre serveur. Moins les utilisateurs finaux doivent fournir des paramètres, plus votre connecteur est facile à utiliser.

  • Bien que vous puissiez définir des paramètres avec un nombre fixe de valeurs (par exemple, une liste déroulante dans l’interface utilisateur), les paramètres sont entrés avant l’authentification de l’utilisateur. Toutes les valeurs qui peuvent être découvertes par programme après l’authentification de l’utilisateur (par exemple, le nom du catalogue ou de la base de données) doivent être sélectionnables via le navigateur. Le comportement par défaut de la fonction Odbc.DataSource consiste à retourner une table de navigation hiérarchique composée de catalogue (base de données), de schéma et de noms de table. Toutefois, ce comportement par défaut peut être redéfini dans votre connecteur.

  • Si vous pensez que vos utilisateurs savent généralement quelles valeurs entrer pour les éléments qu’ils sélectionnent dans le navigateur (par exemple, le nom de la base de données), rendez ces paramètres facultatifs. Les paramètres qui peuvent être découverts par programme ne doivent pas être requis.

  • Le dernier paramètre de votre fonction doit être un enregistrement facultatif appelé « options ». Ce paramètre permet généralement aux utilisateurs avancés de définir des propriétés courantes liées à ODBC (par exemple CommandTimeout), de définir des remplacements de comportement spécifiques à votre connecteur et permet une extensibilité future sans affecter la compatibilité descendante pour votre fonction.

  • Les arguments liés à la sécurité/informations d’identification ne DOIVENT jamais faire partie de vos paramètres de fonction de source de données, car les valeurs entrées dans la boîte de dialogue de connexion sont conservées dans la requête de l’utilisateur. Les paramètres liés aux informations d’identification doivent être spécifiés dans le cadre des méthodes d’authentification prises en charge par le connecteur.

Par défaut, tous les paramètres requis pour votre fonction de source de données sont pris en compte dans la valeur chemin de la source de données utilisée pour identifier les informations d’identification de l’utilisateur.

Bien que l’interface utilisateur de la fonction Odbc.DataSource intégrée fournit une liste déroulante qui permet à l’utilisateur de sélectionner un DSN, cette fonctionnalité n’est pas disponible via l’extensibilité. Si la configuration de votre source de données est suffisamment complexe pour nécessiter une boîte de dialogue de configuration entièrement personnalisable, nous vous recommandons de demander à vos utilisateurs finaux de préconfigurer un DSN système et de faire en sorte que votre fonction accepte le nom DSN comme champ de texte.