Utilisation de DirectQuery dans Power BI DesktopUse DirectQuery in Power BI Desktop

Avec Power BI Desktop, quand vous vous connectez à une source de données, vous pouvez toujours importer une copie des données dans Power BI Desktop.With Power BI Desktop, when you connect to your data source, it's always possible to import a copy of the data into the Power BI Desktop. Pour certaines sources de données, une autre approche est possible : vous connecter directement à la source de données à l’aide de DirectQuery.For some data sources, an alternative approach is available: connect directly to the data source using DirectQuery.

Sources de données prises en chargeSupported data sources

Pour obtenir la liste complète des sources données compatibles avec DirectQuery, consultez Sources de données prises en charge par DirectQuery.For a full listing of data sources that support DirectQuery, see Data sources supported by DirectQuery.

Connexion à l’aide de DirectQueryHow to connect using DirectQuery

Quand vous utilisez Obtenir des données pour vous connecter à une source de données prise en charge par DirectQuery, la boîte de dialogue de connexion vous permet de sélectionner la manière dont vous souhaitez vous connecter.When you use Get Data to connect to a data source supported by DirectQuery, the connection dialog box lets you select how you want to connect. Par exemple, dans Power BI Desktop, sous le ruban Accueil, sélectionnez Obtenir des données > SQL Server.For example, in Power BI Desktop, under the Home ribbon, select Get Data > SQL Server. Dans la boîte de dialogue SQL Server Database, Mode de connectivité des données présente les options Importer et DirectQuery :In the SQL Server Database dialog box, the Data Connectivity mode shows options of Import and DirectQuery:

Options Importer et DirectQuery, boîte de dialogue SQL Server Database, Power BI Desktop

Voici les différences entre l’option Importer et l’option DirectQuery :Here are the differences between selecting Import and DirectQuery:

  • Importer : Les tables et colonnes sélectionnées sont importées dans Power BI Desktop.Import: The selected tables and columns are imported into Power BI Desktop. Lorsque vous créez une visualisation ou interagissez avec elle, Power BI Desktop utilise les données importées.As you create or interact with a visualization, Power BI Desktop uses the imported data. Pour voir les changements des données sous-jacentes depuis l’importation initiale ou la dernière actualisation, vous devez actualiser les données, ce qui implique de réimporter le jeu de données complet.To see underlying data changes since the initial import or the most recent refresh, you must refresh the data, which imports the full dataset again.

  • DirectQuery : Aucune donnée n’est importée ou copiée dans Power BI Desktop.DirectQuery: No data is imported or copied into Power BI Desktop. Pour des sources relationnelles, les tables et colonnes sélectionnées apparaissent dans la liste Champs.For relational sources, the selected tables and columns appear in the Fields list. Pour des sources multidimensionnelles telles que SAP Business Warehouse, les dimensions et mesures du cube sélectionné s’affichent dans la liste Champs.For multi-dimensional sources like SAP Business Warehouse, the dimensions and measures of the selected cube appear in the Fields list. Quand vous créez une visualisation ou interagissez avec elle, Power BI Desktop interroge la source de données sous-jacente afin de toujours afficher des données à jour.As you create or interact with a visualization, Power BI Desktop queries the underlying data source, so you’re always viewing current data.

De nombreuses transformations et modélisations des données sont disponibles avec DirectQuery, mais certaines limitations s’appliquent.Many data modeling and data transformations are available when using DirectQuery, though with some limitations. Quand vous créez ou utilisez une visualisation, vous devez interroger la source sous-jacente.When you create or interact with a visualization, you must query the underlying source. La durée de l’actualisation de la visualisation varie selon les performances de la source de données sous-jacente.The time that's needed to refresh the visualization depends on the performance of the underlying data source. Si les données à utiliser pour exécuter la requête ont récemment été demandées, Power BI Desktop utilise les données récentes pour afficher plus vite la visualisation.When the data needed to service the request has recently been requested, Power BI Desktop uses recent data to reduce the required time to show the visualization. Si vous sélectionnez Actualiser dans le ruban Accueil, toutes les visualisations sont actualisées avec les données les plus récentes.If you select Refresh from the Home ribbon, all visualizations are refreshed with current data.

L’article Power BI et DirectQuery décrit DirectQuery en détail.The Power BI and DirectQuery article describes DirectQuery in detail. Pour plus d’informations sur les avantages, les limitations et d’autres considérations importantes en rapport avec l’utilisation de DirectQuery, consultez les sections suivantes.For more information about benefits, limitations, and important considerations when using DirectQuery, see the following sections.

Avantages de l’utilisation de DirectQueryBenefits of using DirectQuery

Il y a plusieurs avantages à utiliser DirectQuery :There are a few benefits to using DirectQuery:

  • DirectQuery vous permet de créer des visualisations sur des jeux de données très volumineux, qu’il serait autrement impossible d’importer au préalable dans leur totalité avec une pré-agrégation.DirectQuery lets you build visualizations over very large datasets, where it would otherwise be unfeasible to first import all the data with pre-aggregation.
  • La modification des données sous-jacentes peut nécessiter une actualisation des données.Underlying data changes can require a refresh of data. Pour certains rapports, l’affichage des données actualisées peut nécessiter le transfert de grandes quantités de données, empêchant la réimportation des données.For some reports, the need to display current data can require large data transfers, making reimporting data unfeasible. En revanche, les rapports DirectQuery utilisent toujours les données les plus récentes.By contrast, DirectQuery reports always use current data.
  • La limitation de la taille des jeux de données à 1 Go ne s’applique pas à DirectQuery.The 1-GB dataset limitation doesn't apply to DirectQuery.

Limitations de DirectQueryLimitations of DirectQuery

Il existe actuellement quelques limitations à l’utilisation de DirectQuery :There are currently a few limitations to using DirectQuery:

  • Si la requête de l’Éditeur de requête est trop complexe, une erreur se produit.If the Query Editor query is overly complex, an error occurs. Pour corriger cette erreur, supprimez l’étape problématique dans l’Éditeur de requête ou importez les données au lieu d’utiliser DirectQuery.To remedy the error, either delete the problematic step in Query Editor, or import the data instead of using DirectQuery. Pour des sources multidimensionnelles comme SAP Business Warehouse, aucun Éditeur de requête n’est disponible.For multi-dimensional sources like SAP Business Warehouse, there's no Query Editor.

  • Les tables calculées et les colonnes calculées qui font référence à une table DirectQuery à partir d’une source de données avec authentification unique (SSO) ne sont pas prises en charge dans le service Power BI.Calculated tables and calculated columns that reference a DirectQuery table from a data source with Single Sign-on (SSO) authentication are not supported in the Power BI Service.

  • La date/l’heure automatique n’est pas disponible dans DirectQuery.Auto date/time is unavailable in DirectQuery. Par exemple, le mode DirectQuery ne prend pas en charge le traitement spécial des colonnes de date (par année, trimestre, mois ou jour).For example, special treatment of date columns (drill down by using year, quarter, month, or day) isn't supported in DirectQuery mode.

  • Il existe une limite d’un million de lignes pour les sources cloud. Les sources locales sont quant à elles limitées à une charge utile définie : environ 4 Mo par ligne (selon l’algorithme de compression propriétaire) ou 16 Mo de données pour l’intégralité du visuel.There's a one-million-row limit for cloud sources, with on-premises sources limited to a defined payload of about 4 MB per row (depending on proprietary compression algorithm) or 16MB data size for the entire visual. Certaines limites peuvent être levées si vous utilisez la capacité Premium.Certain limits may be raised when using Premium capacity. Cette limite ne s’applique pas aux agrégations ou calculs utilisés pour créer le jeu de données retourné à l’aide de DirectQuery.The limit doesn't affect aggregations or calculations used to create the dataset returned using DirectQuery. Elle s’applique uniquement aux lignes retournées.It only affects the rows returned. Les capacités Premium peuvent définir des limites de lignes maximales, comme le décrit ce billet.Premium capacities can set maximum row limits, as described in this post.

    Par exemple, vous pouvez agréger 10 millions de lignes avec une requête exécutée sur la source de données.For example, you can aggregate 10 million rows with your query that runs on the data source. La requête retourne avec précision les résultats de cette agrégation à Power BI à l’aide de DirectQuery si les données Power BI retournées représentent moins de un million de lignes.The query accurately returns the results of that aggregation to Power BI using DirectQuery if the returned Power BI data is less than 1 million rows. Si DirectQuery retourne plus d’un million de lignes, Power BI retourne une erreur (sauf avec la capacité Premium, si le nombre de lignes est inférieur à la limite définie par l’administrateur).If over 1 million rows are returned from DirectQuery, Power BI returns an error (unless in Premium capacity, and the row count is under the admin-set limit).

Considérations importantes concernant l’utilisation de DirectQueryImportant considerations when using DirectQuery

Si vous utilisez DirectQuery, prenez en considération les trois points suivants :The following three points should be taken into consideration when using DirectQuery:

  • Performances et charge : toutes les requêtes DirectQuery étant envoyées à la base de données source, le délai d’actualisation des visuels dépend du temps que cette source back-end met pour retourner les résultats de chaque requête.Performance and load: All DirectQuery requests are sent to the source database, so the required visual refresh time depends on how long that back-end source takes to respond with the results from the query (or queries). Si vous utilisez DirectQuery pour les visuels, le temps de réponse recommandé (avec le retour des données demandées) est de cinq secondes ou moins, avec un temps de réponse maximal recommandé de 30 secondes.Five seconds or less is the recommended response time (with requested data being returned) for using DirectQuery for visuals; the maximum recommended time is 30 seconds. Si le temps de réponse est plus long, l’expérience d’un utilisateur utilisant le rapport devient d’une médiocrité pratiquement inacceptable.Any longer, and the experience of a user consuming the report becomes unacceptably poor. Une fois qu’un rapport est publié sur le service Power BI, toute requête prenant plus de quelques minutes expire, et l’utilisateur reçoit un message d’erreur.After a report is published to the Power BI service, any query that takes longer than a few minutes will time out, and the user will receive an error.

    La charge sur la base de données source doit également être prise en considération, en fonction du nombre d’utilisateurs de Power BI qui utiliseront le rapport publié.Load on the source database should also be considered, based on the number of Power BI users who will consume the published report. L’utilisation de la sécurité au niveau des lignes (SNL) peut également avoir un impact significatif.Using Row Level Security (RLS) can have a significant impact as well. En effet, si une vignette de tableau de bord sans sécurité au niveau des lignes est partagée par plusieurs utilisateurs, une seule requête est envoyée à la base de données.A non-RLS dashboard tile shared by multiple users results in a single query to the database. Toutefois, quand la sécurité au niveau des lignes est appliquée à une vignette de tableau de bord, l’actualisation de la vignette nécessite généralement une requête par utilisateur, ce qui augmente considérablement la charge sur la base de données source et peut potentiellement impacter les performances.Using RLS on a dashboard tile, however, usually means the refresh of a tile requires one query per user, significantly increasing load on the source database and potentially impacting performance.

    Power BI crée des requêtes aussi efficaces que possible.Power BI creates queries that are as efficient as possible. Cependant, dans certaines situations, la requête générée peut ne pas être suffisamment efficace pour éviter une actualisation qui échoue.Under certain situations, however, the generated query may not be efficient enough to avoid a refresh that would fail. C’est le cas, par exemple, quand une requête générée extrait un trop grand nombre de lignes à partir de la source de données back-end.One example of this situation is when a generated query retrieves an excessively large number of rows from the back-end data source. L’erreur suivante est retournée :In this case, the following error occurs:

    The resultset of a query to external data source has exceeded
    

    Cette situation peut se produire avec un simple graphique qui comprend une colonne de la cardinalité très élevée, avec l’option d’agrégation définie sur ne pas résumer.This situation can occur with a simple chart that includes a very high cardinality column, with the aggregation option set to Don’t Summarize. Le visuel doit avoir uniquement des colonnes avec une cardinalité inférieure à un million ou il doit appliquer les filtres appropriés.The visual needs to only have columns with a cardinality below 1 million, or it must apply the appropriate filters.

  • Sécurité : par défaut, tous les utilisateurs qui consomment un rapport publié se connectent à la source de données back-end en utilisant les informations d’identification entrées après la publication sur le service Power BI.Security: By default, all users who consume a published report connect to the back-end data source using the credentials entered after publication to the Power BI service. C’est le même processus pour des données importées : tous les utilisateurs voient les mêmes données, quelles que soient les règles de sécurité définies dans la source back-end.This process is the same for data that's imported: all users see the same data, regardless of any security rules defined in the backend source.

    Les clients qui souhaitent une sécurité par utilisateur implémentée avec des sources DirectQuery doivent utiliser la sécurité au niveau des lignes ou configurer l’authentification Kerberos contrainte par rapport à la source.Customers who want per-user security implemented with DirectQuery sources should either use RLS or configure Kerberos-constrained authentication against the source. Kerberos n’est pas disponible pour toutes les sources.Kerberos isn't available for all sources. En savoir plus sur RLS.Learn more about RLS. Découvrez plus d’informations sur Kerberos dans DirectQuery.Learn more about Kerberos in DirectQuery.

  • Fonctionnalités prises en charge : certaines fonctionnalités dans Power BI Desktop ne sont pas prises en charge en mode DirectQuery, ou leur prise en charge est limitée.Supported features: Some features in Power BI Desktop are unsupported in DirectQuery mode, or they have limitations. De plus, certaines fonctionnalités du service Power BI (comme Quick Insights) ne sont pas disponibles pour les jeux de données qui utilisent DirectQuery.Also, some capabilities in the Power BI service (such as Quick Insights) aren't available for datasets using DirectQuery. Pour déterminer si vous avez intérêt à utiliser DirectQuery, tenez compte de ces limitations de fonctionnalités.When determining whether to use DirectQuery, you should consider these feature limitations.

Notes

Lors de l’utilisation de DirectQuery avec Azure SQL Database et une adresse IP privée, une passerelle locale est nécessaire.When using DirectQuery with an Azure SQL Database and a private IP address, an on-premises gateway is required.

Publication sur le service Power BIPublish to the Power BI service

Les rapports créés à l’aide de DirectQuery peuvent être publiés sur le service Power BI.Reports created using DirectQuery can be published to the Power BI service.

Si la source de données utilisée n’a pas besoin de la passerelle de données locale (Azure SQL Database, Azure SQL Data Warehouse ou Redshift), vous devez fournir les informations d’identification avant que le service Power BI affiche le rapport publié.If the used data source doesn't need the On-premises data gateway (Azure SQL Database, Azure SQL Data Warehouse, or Redshift), you must provide credentials before the Power BI service shows the published report. Suivez ces instructions pour fournir les informations d’identification :Follow these instructions to provide the credentials:

  1. Connectez-vous à Power BI.Sign in to Power BI.

  2. Dans le service Power BI, sélectionnez l’icône d’engrenage Paramètres , puis choisissez l’élément de menu Paramètres.In the Power BI service, select the Settings gear icon and choose the Settings menu item.

    Paramètres, service Power BI

  3. Dans la page Paramètres du service Power BI, sélectionnez l’onglet Jeux de données, choisissez le jeu de données qui utilise DirectQuery, puis sélectionnez Modifier les informations d’identification.In the Power BI service's Settings page, select the Datasets tab, choose the dataset that uses DirectQuery, and select Edit credentials.

  4. Ajoutez les informations d’identification.Add the credentials. Si vous ne fournissez pas ces informations, une erreur se produit lorsque vous ouvrez un rapport publié ou explorez un jeu de données créé avec une connexion DirectQuery.Otherwise, an error occurs when you open a published report or explore a dataset that's created with a DirectQuery connection.

Pour créer une connexion de données à des sources de données utilisant DirectQuery autres que Azure SQL Database, Azure SQL Data Warehouse, Redshift ou Snowflake Data Warehouse, installez une passerelle de données locale et inscrivez la source de données.To make a data connection for data sources other than Azure SQL Database, Azure SQL Data Warehouse, Redshift, or Snowflake Data Warehouse that use DirectQuery, install an On-premises data gateway and register the data source. Pour plus d’informations, consultez Qu’est-ce qu’une passerelle de données locale ?For more information, see What is an on-premises data gateway?

Étapes suivantesNext steps

Pour plus d’informations sur DirectQuery, consultez les ressources suivantes :For more information about DirectQuery, check out the following resources: