Mode DirectQueryDirectQuery Mode

S’APPLIQUE À :ouiSQL Server Analysis ServicesouiAzure Analysis ServicesAPPLIES TO:yesSQL Server Analysis ServicesyesAzure Analysis ServicesCette rubrique décrit mode DirectQuery pour les modèles tabulaires Analysis Services sur les niveaux de compatibilité 1200 et supérieurs. This topic describes DirectQuery mode for Analysis Services tabular models at the 1200 and higher compatibility levels . Vous pouvez activer le mode DirectQuery pour les modèles que vous concevez dans SSDT. Pour les modèles tabulaires qui ont déjà été déployés, vous pouvez basculer en mode DirectQuery dans SSMS.DirectQuery mode can be turned on for models you're designing in SSDT, or for tabular models that have already been deployed, you can change to DirectQuery mode in SSMS. Avant de choisir le mode DirectQuery, vous devez comprendre quels sont ses avantages et ses restrictions.Before choosing DirectQuery mode, it's important to understand both the benefits and restrictions.

AvantagesBenefits

Par défaut, les modèles tabulaires utilisent un cache mémoire pour stocker et interroger les données.By default, tabular models use an in-memory cache to store and query data. Quand les modèles tabulaires interrogent des données en mémoire, même les requêtes complexes peuvent être extrêmement rapides.When tabular models query data residing in-memory, even complex queries can be incredibly fast. Toutefois, l’utilisation de données en mémoire cache présente des limitations.However, there are some limitations to using cached data. En effet, des jeux de données de grande taille peuvent dépasser la capacité mémoire disponible, et il peut s’avérer difficile, voire impossible, de répondre aux exigences d’actualisation des données avec une planification de traitement régulière.Namely, large data sets can exceed available memory, and data freshness requirements can be difficult if not impossible to achieve on a regular processing schedule.

DirectQuery permet de passer outre ces limites tout en exploitant les fonctionnalités SGBDR qui peuvent rendre l’exécution des interrogations plus efficace.DirectQuery overcomes these limitations while also leveraging RDBMS features making query execution more efficient. Avec DirectQuery :With DirectQuery:

  • Les données sont à jour et il n’y a aucune charge de gestion supplémentaire liée à la conservation d’une copie distincte des données (dans le cache mémoire).Data is up-to-date, and there is no extra management overhead of having to maintain a separate copy of the data (in the in-memory cache). Les modifications apportées aux données sources sous-jacentes peuvent être immédiatement reflétées dans des requêtes sur le modèle de données.Changes to the underlying source data can be immediately reflected in queries against the data model.

  • Les datasets peuvent être plus volumineux que la capacité mémoire d’un serveur Analysis Services.Datasets can be larger than the memory capacity of an Analysis Services server.

  • DirectQuery peut tirer parti de l’accélération des requêtes côté fournisseur, telle que celle fournie par les index de colonne optimisés en mémoire.DirectQuery can take advantage of provider-side query acceleration, such as that provided by memory optimized column indexes.

  • La sécurité peut être appliquée par la base de données principale, à l’aide des fonctionnalités de sécurité au niveau des lignes de la base de données (vous pouvez également utiliser la sécurité au niveau des lignes dans le modèle par le biais de DAX).Security can be enforced by the back-end database , using row-level security features from the database (alternatively, you can use row-level security in the model via DAX).

  • Si le modèle contient des formules complexes qui peuvent nécessiter plusieurs requêtes, Analysis Services peut procéder à une optimisation pour garantir que le plan de requête pour la requête exécutée sur la base de données principale est aussi efficace que possible.If the model contains complex formulas that might require multiple queries, Analysis Services can perform optimization to ensure that the query plan for the query executed against the back-end database will be as efficient as possible.

RestrictionsRestrictions

Les modèles tabulaires en mode DirectQuery ont certaines restrictions.Tabular models in DirectQuery mode have some restrictions. Avant de changer de mode, déterminez si les avantages de l’exécution des requêtes sur le serveur principal l’emportent sur toute réduction des fonctionnalités.Before switching modes, it's important to determine whether the advantages of query execution on the backend server outweigh any reduction in functionality.

Si vous changez le mode d’un modèle existant dans Outils de données SQL ServerSQL Server Data Tools, le concepteur de modèles vous informera de toute fonctionnalité de votre modèle incompatible avec le mode DirectQuery.If you change the mode of an existing model in Outils de données SQL ServerSQL Server Data Tools, the model designer will notify you of any features in your model that are incompatible with DirectQuery mode.

La liste suivante résume les principales restrictions de fonctionnalités à garder à l’esprit :The following list summarizes the main feature restrictions to keep in mind:

Domaine de fonctionnalitéFeature area RestrictionRestriction
Sources de donnéesData sources Les modèles DirectQuery peuvent uniquement utiliser des données d’une base de données relationnelle des types suivants : SQL Server, Azure SQL Database, Oracle et Teradata.DirectQuery models can only use data from a single relational database of the following types: SQL Server, Azure SQL Database, Oracle, and Teradata. Pour plus d’informations sur les versions et les fournisseurs, consultez Sources de données prises en charge pour DirectQuery plus loin dans cet article.See Data sources supported for DirectQuery later in this article for version and provider information.
Procédures stockées SQLSQL stored procedures Pour les modèles DirectQuery, les procédures stockées ne peuvent pas être spécifiées dans une instruction SQL pour définir les tables quand vous utilisez l’Assistant Importation de données.For DirectQuery models, stored procedures cannot be specified in a SQL statement to define tables when using Data Import Wizard.
Tables calculéesCalculated tables Les tables calculées ne sont pas prises en charge dans les modèles DirectQuery, au contraire des colonnes calculées.Calculated tables are not supported in DirectQuery models, but calculated columns are. Si vous essayez de convertir un modèle tabulaire qui contient une table calculée, une erreur se produit indiquant que le modèle ne peut pas contenir de données collées.If you try to convert a tabular model that contains a calculated table, an error will occur stating that the model cannot contain pasted data.
Limites de requêtesQuery limits La limite de ligne par défaut est d’un million de lignes. Vous pouvez l’augmenter en spécifiant MaxIntermediateRowSize dans le fichier msmdsrv.ini.Default row limit is one million rows, which you can increase by specifying MaxIntermediateRowSize in the msmdsrv.ini file. Pour plus d’informations, consultez Propriétés DAX .See DAX Properties for details.
Formules DAXDAX formulas Lors de l’interrogation d’un modèle tabulaire en mode DirectQuery, Analysis ServicesAnalysis Services convertit toutes les formules DAX et les définitions de mesure en instructions SQL.When querying a tabular model in DirectQuery mode, Analysis ServicesAnalysis Services converts DAX formulas and measure definitions into SQL statements. Les formules DAX contenant des éléments qui ne peuvent pas être convertis en syntaxe SQL retournent des erreurs de validation sur le modèle.DAX formulas containing elements that cannot be converted into SQL syntax will return validation errors on the model.

Cette restriction est principalement limitée à certaines fonctions DAX.This restriction is mostly limited to certain DAX functions. Pour les mesures, les formules DAX sont converties en opérations de basées sur des jeux par rapport à la base de données relationnelle.For measures, DAX formulas are converted to set-based operations against the relational data store. Cela signifie que toutes les mesures créées implicitement sont prises en charge.This means that all measures created implicitly are supported.

Quand une erreur de validation se produit, vous devez réécrire la formule en utilisant une autre fonction, ou utiliser des colonnes dérivées dans la source de données comme solution de contournement.When a validation error occurs, you'll need to re-write the formula, substituting a different function, or workaround it by using derived columns in the data source. Si un modèle tabulaire comprend des formules contenant des fonctions incompatibles, cela est signalé quand vous basculez en mode DirectQuery dans le concepteur.If a tabular model includes formulas containing incompatible functions will be reported when you switch to DirectQuery mode in the designer.

Remarque : Certaines formules du modèle peuvent être validées quand vous basculez le modèle en mode DirectQuery, mais retourner des résultats différents une fois exécutées sur le cache et la banque de données relationnelle.Note: Some formulas in the model might validate when you switch the model to DirectQuery mode, but return different results when executed against the cache vs. the relational data store. Cela est dû au fait que les calculs basés sur le cache utilisent la sémantique du moteur d’analyse en mémoire, qui contient des fonctionnalités permettant d’émuler le comportement d’Excel, alors que les requêtes sur des données stockées dans la base de données relationnelle utilisent obligatoirement la sémantique de SQL Server.This is because calculations against the cache use the semantics of the in-memory analytics (engine, which contains features meant to emulate the behavior of Excel, whereas queries against data stored in the relational data source use the semantics of SQL Server.

SQL stockéSQL Stored

Pour plus d’informations, consultez Compatibilité des formules DAX en mode DirectQuery.To learn more, see DAX Formula Compatibility in DirectQuery Mode.
Cohérence des formulesFormula consistency Dans certains cas, la même formule peut retourner différents résultats dans un modèle mis en cache comparé à un modèle DirectQuery qui utilise uniquement la banque de données relationnelle.In certain cases, the same formula can return different results in a cached model compared to a DirectQuery model that uses only the relational data store. Ces différences sont une conséquence des différences sémantiques entre le moteur d'analyse en mémoire et SQL Server.These differences are a consequence of the semantic differences between the in-memory analytics engine and SQL Server.

Pour obtenir une liste complète des problèmes de compatibilité, notamment les fonctions qui peuvent retourner des résultats différents quand le modèle est déployé en temps réel, consultez Compatibilité des formules DAX en Mode DirectQuery (SQL Server Analysis Services).For a complete list of compatibility issues, including functions that might return different results when the model is deployed to real-time, see DAX Formula Compatibility in DirectQuery Mode (SQL Server Analysis Services).
Limitations de MDXMDX limitations Aucun nom d’objet relatif.No relative object names. Tous les noms d’objet doivent être complets.All object names must be fully qualified.

Aucune instruction MDX pour une session (jeux nommés, membres calculés, cellules calculées, valeur totale affichée, membres par défaut, etc.), mais vous pouvez utiliser des constructions à l’échelle de la requête, telles que la clause ’WITH’.No session-scope MDX statements (named sets, calculated members, calculated cells, visual totals, default members, and so forth), but you can use query-scope constructs, such as the 'WITH' clause.

Aucun tuple avec des membres de différents niveaux dans ses clauses de sous-sélection MDX.No tuples with members from different levels in MDX subselect clauses.

Aucune hiérarchie définie par l’utilisateur.No user-defined hierarchies.

Aucune requête SQL native des (en règle générale, Analysis Services prend en charge un sous-ensemble T-SQL, mais pas pour des modèles DirectQuery).No native SQL queries (normally, Analysis Services supports a T-SQL subset, but not for DirectQuery models).

Sources de données prises en charge pour DirectQueryData sources supported for DirectQuery

Les modèles tabulaires DirectQuery au niveau de compatibilité 1200 et les versions ultérieures sont compatibles avec les fournisseurs et les sources de données suivantes :DirectQuery tabular models at compatibility level 1200 and higher are compatible with the following data sources and providers:

Source de donnéesData source VersionsVersions FournisseursProviders
Microsoft SQL ServerMicrosoft SQL Server 2008 et versions ultérieures2008 and later Fournisseur OLE DB pour SQL Server, fournisseur SQL Server Native Client OLE DB, fournisseur de données .NET Framework pour SQL ClientOLE DB Provider for SQL Server, SQL Server Native Client OLE DB Provider, .NET Framework Data Provider for SQL Client
Base de données SQL Microsoft AzureMicrosoft Azure SQL Database TousAll Fournisseur OLE DB pour SQL Server, fournisseur SQL Server Native Client OLE DB, fournisseur de données .NET Framework pour SQL ClientOLE DB Provider for SQL Server, SQL Server Native Client OLE DB Provider, .NET Framework Data Provider for SQL Client
Microsoft Azure SQL Data WarehouseMicrosoft Azure SQL Data Warehouse TousAll Fournisseur de données .NET Framework pour SQL Client.NET Framework Data Provider for SQL Client
Microsoft SQL Analytics Platform System (APS)Microsoft SQL Analytics Platform System (APS) TousAll Fournisseur OLE DB pour SQL Server, fournisseur SQL Server Native Client OLE DB, fournisseur de données .NET Framework pour SQL ClientOLE DB Provider for SQL Server, SQL Server Native Client OLE DB Provider, .NET Framework Data Provider for SQL Client
Bases de données relationnelles OracleOracle relational databases Oracle 9i et versions ultérieuresOracle 9i and later Fournisseur OLE DB OracleOracle OLE DB Provider
Bases de données relationnelles TeradataTeradata relational databases Teradata V2R6 et versions ultérieuresTeradata V2R6 and later Fournisseur de données .Net pour Teradata.Net Data Provider for Teradata

Connexion à une source de donnéesConnecting to a data source

Quand vous concevez un modèle DirectQuery dans SSDT, le processus de connexion à une source de données et de sélection des tables et des champs à inclure dans votre modèle ressemble fortement à celui applicable aux modèles en mémoire.When designing a DirectQuery model in SSDT, connecting to a data source and selecting the tables and fields to include in your model is much the same as with in-memory models.

Si vous avez déjà activé DirectQuery mais que vous ne vous êtes pas encore connecté à une source de données, vous pouvez utiliser l’Assistant Importation de table pour vous connecter à votre source de données, sélectionner les tables et les champs, spécifier une requête SQL et ainsi de suite.If you've already turned on DirectQuery but haven't yet connected to a data source, you can use the Table Import Wizard to connect to your data source, select tables and fields, specify a SQL query, and so on. La différence sera qu’une fois terminé, aucune donnée ne sera réellement importée vers le cache en mémoire.The difference will be when you finish, no data is actually imported to the in-memory cache.

Réussite de l’importation DirectQuery

Si vous avez déjà utilisé l’Assistant Importation de table pour importer des données mais que vous n’avez pas encore activé le mode DirectQuery, le cache en mémoire est effacé quand vous procédez à l’activation.If you've already used Table Import Wizard to import data, but haven't yet turned on DirectQuery mode, when you do, the in-memory cache will be cleared.

Autres rubriques de cette sectionAdditional topics in this section

Activer le mode DirectQuery dans SSDTEnable DirectQuery mode in SSDT

Activer le mode DirectQuery dans SSMSEnable DirectQuery mode in SSMS

Ajouter des exemples de données à un modèle DirectQuery en mode CréationAdd sample data to a DirectQuery model in Design Mode

Définition de partitions dans les modèles DirectQueryDefine partitions in DirectQuery models

Tester un modèle en mode DirectQueryTest a model in DirectQuery mode

Compatibilité des formules DAX en mode DirectQueryDAX Formula Compatibility in DirectQuery Mode