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

Avec Power BI Desktop, lorsque vous vous connectez à votre 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 is always possible to import a copy of the data into the Power BI Desktop. Pour certaines sources de données, une autre approche consiste à se 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, voir 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

Lorsque vous utilisez la commande Get Data pour vous connecter à une source de données prise en charge par DirectQuery, une fenêtre 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 window lets you select how you want to connect.

Les différences entre la sélection des commandes Importer et DirectQuery sont les suivantes :The differences between selecting Import and DirectQuery are the following:

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. Vous devez actualiser les données, ce qui a pour effet de réimporter le jeu complet de données, pour voir les modifications apportées aux données sous-jacentes depuis l’importation initiale ou la dernière actualisation.You must refresh the data, which imports the full data set again, to see any changes that occurred to the underlying data since the initial import or the most recent refresh.

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. Lorsque vous créez une visualisation ou interagissez avec elle, Power BI Desktop interroge la source de données sous-jacente, ce qui signifie que les données affichées sont toujours à jour.As you create or interact with a visualization, Power BI Desktop queries the underlying data source, which means you’re always viewing current data.

De nombreuses transformations et modélisations des données sont disponibles lors de l’utilisation de DirectQuery, mais avec certaines limitations.Many data modeling and data transformations are available when using DirectQuery, though with some limitations. Lorsque vous créez une visualisation ou interagissez avec elle, la source sous-jacente doit être interrogée, et le temps nécessaire pour actualiser la visualisation dépend des performances de la source de données sous-jacente.When creating or interacting with a visualization, the underlying source must be queried and the time necessary to refresh the visualization is dependent on the performance of the underlying data source. Si les données nécessaires au traitement de la demande ont récemment été demandées, Power BI Desktop utilise des données récentes pour réduire le temps d’affichage de la visualisation.When the data necessary to service the request has recently been requested, Power BI Desktop uses recent data to reduce the time required to display the visualization. La sélection de la commande Actualiser dans le ruban Accueil garantit que toutes les visualisations sont actualisées avec des données à jour.Selecting Refresh from the Home ribbon will ensure 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, voir les sections suivantes.Also, see the following sections for more information about benefits, limitations, and important considerations when using DirectQuery.

Avantages de l’utilisation de DirectQueryBenefits of using DirectQuery

Il existe quelques avantages à l’utilisation de 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 otherwise would be unfeasible to first import all of the data with pre-aggregation
  • Les modifications des données sous-jacentes peuvent exiger une actualisation des données, et pour certains rapports, l’affichage des données actuelles peut exiger des transferts de données volumineux, ce qui rend une nouvelle importation des données irréalisable.Underlying data changes can require a refresh of data, and for some reports, the need to display current data can require large data transfers, making re-importing data unfeasible. Par contre, les rapports DirectQuery utilisent toujours des données à jourBy contrast, DirectQuery reports always use current data
  • La limitation de jeu de données de 1 Go ne s’applique pas à DirectQueryThe 1 GB dataset limitation does not 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:

  • Toutes les tables doivent provenir d’une seule base de données.All tables must come from a single database
  • 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 will occur. Pour corriger cette erreur, vous devez soit supprimer l’étape problématique dans l’Éditeur de requête, soit Importer les données au lieu d’utiliser DirectQuery.To remedy the error you must either delete the problematic step in Query Editor, or Import the data instead of using DirectQuery. Pour des sources multidimensionnelles telles que SAP Business Warehouse, aucun Éditeur de requête n’est disponible.For multi-dimensional sources like SAP Business Warehouse, there is no Query Editor
  • Le filtrage de la relation est limité à un seul sens, au lieu de s’étendre aux deux (bien qu’une fonctionnalité en version préliminaire permette d’activer un filtrage croisé dans les deux sens pour DirectQuery).Relationship filtering is limited to a single direction, rather than both directions (though it is possible to enable cross filtering in both directions for DirectQuery as a Preview feature). Pour des sources multidimensionnelles telles que SAP Business Warehouse, aucune relation n’est définie dans le modèle.For multi-dimensional sources like SAP Business Warehouse, there are no relationships defined in the model
  • DirectQueryn’intègre pas de fonctionnalités de Time Intelligence.Time intelligence capabilities are not available in DirectQuery. Par exemple, le mode DirectQuerytraitement spécial des colonnes de date (année, trimestre, mois, jour, etc.).For example, special treatment of date columns (year, quarter, month, day, so on) are not supported in DirectQuery mode.
  • Par défaut, les limitations sont placées sur des expressions DAX autorisées dans les mesures ; consultez le paragraphe suivant (situé après cette liste à puces) pour plus d’informations.By default, limitations are placed on DAX expressions allowed in measures; see the following paragraph (after this bulleted list) for more information
  • Le renvoi de données est limité à 1 million de lignes lors de l’utilisation de DirectQuery.There is a 1 million row limit for returning data when using DirectQuery. Cela a une incidence sur les lignes renvoyées, et non sur les agrégations ou les calculs utilisés pour créer le jeu de données renvoyé à l’aide de DirectQuery.This does not affect aggregations or calculations used to create the dataset returned using DirectQuery, only the rows returned. Par exemple, vous pouvez agréger 10 millions de lignes avec la requête qui s’exécute sur la source de données et renvoyer avec précision les résultats de cette agrégation à Power BI à l’aide de DirectQuery tant que les données renvoyées à Power BI représentent moins de 1 million de lignes.For example, you can aggregate 10 million rows with your query that runs on the data source, and accurately return the results of that aggregation to Power BI using DirectQuery as long as the data returned to Power BI is less than 1 million rows. Si plus de 1 million de lignes est renvoyé par DirectQuery, Power BI renvoie une erreur.If more than 1 million rows would be returned from DirectQuery, Power BI returns an error.

Pour garantir des performances acceptables aux requêtes envoyées à la source de données sous-jacente, les limitations sont imposées aux mesures par défaut.To ensure that queries sent to the underlying data source have acceptable performance, limitations are imposed on measures by default. Les utilisateurs avancés peuvent choisir de contourner cette limitation en sélectionnant Fichier > Options, puis Paramètres > Options et paramètres > DirectQuery, puis l’option Autoriser des mesures sans restriction en mode DirectQuery.Advanced users can choose to bypass this limitation by selecting File > Options and then Settings > Options and settings > DirectQuery, then selecting the option Allow unrestricted measures in DirectQuery mode*. Quand cette option est sélectionnée, toute expression DAX valide pour une mesure est utilisable.When that option is selected, any DAX expression that is valid for a measure can be used. Les utilisateurs doivent savoir, toutefois, que certaines expressions qui fonctionnent très bien quand les données sont importées peuvent générer des requêtes très lentes pour la source principale en mode DirectQuery.Users must be aware, however, that some expressions that perform very well when the data is imported may result in very slow queries to the backend source when in DirectQuery mode.

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

Lors de l’utilisation de DirectQuery, vous devez prendre en considération les trois points suivants :The following three points should be taken into consideration when using DirectQuery:

  • Charge et performances : toutes les demandes DirectQuery étant envoyées à la base de données source, le temps nécessaire pour actualiser un élément visuel dépend du temps que cette source principale met à répondre avec les résultats de la requête (ou des requêtes).Performance and load - All DirectQuery requests are sent to the source database, so the time required to refresh a visual is dependent on how long that back-end source takes to respond with the results from the query (or queries). Le temps de réponse recommandé (avec le renvoi des données demandées) en cas d’utilisation de DirectQuery pour des éléments visuels est de cinq secondes ou moins, avec un temps de réponse maximal recommandé de 30 secondes pour le renvoi des résultats.The recommended response time (with requested data being returned) for using DirectQuery for visuals is five seconds or less, with a maximum recommended results response time of 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. En outre, 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.In addition, once a report is published to the Power BI service, any query that takes longer than a few minutes will timeout, 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 peut également avoir un impact significatif. En effet, une vignette de tableau de bord sans sécurité au niveau des lignes partagée par plusieurs d’utilisateurs a pour effet d’envoyer une requête unique à la base de données, alors que l’utilisation de la sécurité au niveau des lignes sur une vignette de tableau de bord signifie généralement que l’actualisation d’une vignette nécessite une requête par utilisateur, ce qui augmente considérablement la charge sur la base de données source, et peut avoir une incidence sur les performances.Using Row Level Security (RLS) can have a significant impact as well; a non-RLS dashboard tile shared by multiple users results in a single query to the database, but using RLS on a dashboard tile usually means the refresh of a tile requires one query per user, thus 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. Toutefois, 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 refresh that would fail. Un exemple de cette situation est quand une requête générée doit extraire un trop grand nombre de lignes (supérieur à 1 million) à partir de la source de données principale, auquel cas l’erreur suivante se produit :One example of this situation is when a generated query would retrieve an excessively large number of rows (more than 1 million) from the back-end data source, in which case the following error occurs:

    The resultset of a query to external data source has exceeded
    the maximum allowed size of '1000000' rows.
    

    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. L’élément visuel doit avoir uniquement des colonnes avec une cardinalité inférieure à 1 million, ou des filtres appropriés doivent avoir appliqués.The visual needs to only have columns with a cardinality below 1 million, or must have appropriate filters applied.

  • Sécurité : tous les utilisateurs d’un rapport publié se connectent à la source de données principale en utilisant les informations d’identification entrées après la publication sur le service Power BI.Security - 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 la même situation que quand des données sont importées : tous les utilisateurs voient les mêmes données, indépendamment des règles de sécurité définies dans la source principale.This is the same situation as data that is imported: all users see the same data, irrespective of any security rules defined in the backend source. Les clients qui souhaitent une sécurité par utilisateur procèdent à l’implémentation avec des sources DirectQuery et utilisent RLS.Customers who want per-user security implement with DirectQuery sources and use RLS. En savoir plus sur RLS.Learn more about RLS.
  • Fonctionnalités prises en charge : les fonctionnalités de Power BI Desktop ne sont pas toutes prises en charge en mode DirectQuery, ou leur prise en charge est limitée.Supported features - Not all features in Power BI Desktop are supported in DirectQuery mode, or have some limitations. De plus, certaines fonctionnalités du service Power BI (telles que Informations rapides) qui ne sont pas disponibles pour les jeux de données utilisent DirectQuery.In addition, there are some capabilities in the Power BI service (such as Quick Insights) that are not available for datasets using DirectQuery. Ainsi, la limitation de telles fonctionnalités lors de l’utilisation de DirectQuery doit être prise en considération pour déterminer l’opportunité d’utiliser DirectQuery.As such, the limitation of such features when using DirectQuery should be taken into consideration when determining whether to use DirectQuery.

Publication sur le service Power BIPublish to the Power BI service

Des 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), des informations d’identification doivent être fournies avant que le rapport publié s’affiche dans le service Power BI.If the data source used does not need the on-premises data gateway (Azure SQL Database, Azure SQL Data Warehouse, or Redshift), credentials must be provided before the published report will be displayed in the Power BI Service.

Vous pouvez fournir des informations d’identification en sélectionnant l’icône d’engrenage Paramètres dans Power BI, puis sélectionner Paramètres.You can provide credentials by selecting the Settings gear icon in Power BI, then select Settings.

Power BI affiche la fenêtre Paramètres .Power BI displays the Settings window. À partir de là, sélectionnez l’onglet Jeu de données , choisissez le jeu de données qui utilise DirectQuery, puis sélectionnez Modifier les informations d’identification.From there, select the Datasets tab and choose the dataset that uses DirectQuery, and select Edit credentials.

Tant que les informations d’identification n’ont pas été fournies, l’ouverture d’un rapport publié ou l’exploration d’un jeu de données créé avec une connexion DirectQuery à de telles sources de données génère une erreur.Until credentials are supplied, opening a published report or exploring a dataset created with a DirectQuery connection to such data sources results in an error.

Pour des sources de données autres que Azure SQL Database, Azure SQL Data Warehouse et Redshift qui utilisent DirectQuery, une Passerelle de données locale doit être installée et la source de données doit être inscrite pour établir une connexion de données.For data sources other than Azure SQL Database, Azure SQL Data Warehouse and Redshift that use DirectQuery, an on-premises data gateway must be installed and the data source must be registered to establish a data connection. Si vous le souhaitez, vous pouvez en apprendre davantage sur la passerelle de données locale.You can learn more about 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: