Lire en anglais

Partager via


Activation de DirectQuery pour un connecteur basé sur 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 des sources de données qui ont un pilote ODBC existant et/ou prennent en charge une syntaxe de requête SQL. L’enveloppement de la fonction Odbc.DataSource permet à votre connecteur d’hériter du comportement de pliage de requête par défaut sur la base des fonctionnalités signalées par votre pilote. Ce comportement permet au moteur M de générer des déclarations 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 permettant à Power BI de générer dynamiquement des requêtes au moment de l’exécution, sans mise en cache préalable du modèle de données de l’utilisateur.

Notes

Activer la prise en charge de DirectQuery augmente le niveau de difficulté et 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 (push) à la source de données sous-jacente.

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

Reportez-vous à l'exemple SqlODBC pour la plupart des exemples de code dans les sections suivantes. Vous trouverez d’autres échantillons dans le répertoire des échantillons 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 l’ensemble des 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 substitutions de comportement.

La fonction Odbc.Query vous permet d’exécuter des instructions SQL via un pilote ODBC. Elle agit comme un intermédiaire pour l’exécution des requêtes. Contrairement à la fonction Odbc.DataSource, elle ne fournit pas de fonctionnalité de pliage de requête, et requiert que des requêtes SQL soient fournies par le connecteur (ou l’utilisateur final). Lorsque vous créez un connecteur personnalisé, cette fonction est généralement utilisée en interne pour exécuter des requêtes afin de récupérer des métadonnées qui pourraient ne pas être exposées via des canaux ODBC ordinaires. 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 un nombre quelconque d’arguments de fonction. Mais pour rester cohérent avec les fonctions de source de données intégrées fournies avec Power Query, les lignes directrices suivantes sont recommandées :

  • Exiger l’ensemble minimal de paramètres utilisés pour établir une connexion à votre serveur. Moins les utilisateurs finaux doivent fournir de 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 (comme le nom du catalogue ou de la base de données) devraient pouvoir être sélectionnées via le Navigateur. Le comportement par défaut de la fonction Odbc.DataSource consiste à retourner une table de navigation hiérarchique composée de noms de Catalogue (base de données), de Schéma et de Table. Toutefois, il est possible de modifier ce comportement au sein de votre connecteur.

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

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

  • Des arguments liés à la sécurité ou aux 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 devraient être spécifiés dans les méthodes d’authentification prises en charge du connecteur.

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

Si l’interface utilisateur de la fonction intégrée Odbc.DataSource fournit une liste déroulante permettant à 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 prenne le nom DSN en tant que champ de texte.