Partitions et mode DirectQuery (SSAS Tabulaire)
Cette section explique comment sont utilisées les partitions dans les modèles DirectQuery. Pour plus d’informations générales sur les partitions dans les modèles tabulaires, consultez Partitions (SSAS Tabular).
Pour obtenir des instructions sur la modification de la partition utilisée ou pour afficher des informations sur la partition, consultez Modifier la partition DirectQuery (SSAS Tabulaire) .
Utilisation de partitions en mode DirectQuery
Pour chaque table, vous devez spécifier une seule partition à utiliser en tant que source de données DirectQuery. S'il existe plusieurs partitions, lorsque vous basculez le modèle pour activer le mode DirectQuery, par défaut la première partition qui a été créée dans la table est marquée en tant que partition DirectQuery. Vous pouvez modifier cela ultérieurement à l’aide du Gestionnaire de partitions dans SQL Server Data Tools (SSDT).
Pourquoi autoriser une seule partition en mode DirectQuery ?
Dans les modèles tabulaires (comme dans les modèles OLAP), les partitions d'une table sont définies par des requêtes SQL. Le développeur qui crée la définition de partition doit s'assurer que les partitions ne se chevauchent pas. Analysis Services ne vérifie pas si les enregistrements appartiennent à une ou plusieurs partitions.
Les partitions dans un modèle tabulaire mis en cache se comportent de la même manière. Si vous utilisez un modèle en mémoire, lors de l'accès au cache, les formules DAX sont évaluées pour chaque partition et les résultats sont associés. Toutefois, lorsqu'un modèle tabulaire utilise le mode DirectQuery, il est impossible d'évaluer plusieurs partitions, de combiner les résultats et de les convertir en une instruction SQL pour l'envoi à la banque de données relationnelle. Cela peut entraîner une perte inacceptable de performances, ainsi que des inexactitudes potentielles à mesure que les résultats sont agrégés.
Par conséquent, pour les requêtes ayant obtenu une réponse en mode DirectQuery, le serveur utilise une seule partition qui a été marquée comme partition principale pour l’accès DirectQuery, que l’on appelle partition DirectQuery. La requête SQL spécifiée dans la définition de cette partition définit l’ensemble complet des données qui peuvent être utilisées pour répondre aux requêtes en mode DirectQuery.
Si vous ne définissez aucune partition de manière explicite, le moteur transmet simplement une requête SQL à l'ensemble de la source de données relationnelle, effectue toutes les opérations reposant sur un jeu dictées par la formule DAX et retourne les résultats de la requête.
Si vous disposez de plusieurs partitions dans une table et sélectionnez une partition en tant que partition DirectQuery, par défaut, toutes les autres partitions sont marquées comme étant utilisables en mémoire uniquement.
Partitions dans les modèles mis en cache et dans les modèles DirectQuery
Lorsque vous configurez une partition DirectQuery, vous devez spécifier les options de traitement pour la partition.
Il existe deux options de traitement pour la partition DirectQuery. Pour définir cette propriété, utilisez le Gestionnaire de partitions dans SQL Server Data Tools (SSDT) ou SQL Server Management Studio, puis sélectionnez la propriété Option de traitement. Le tableau suivant répertorie les valeurs de cette propriété, et décrit les effets de chaque valeur lorsqu'elle est associée à la propriété DirectQueryUsage sur la chaîne de connexion :
Propriété DirectQueryUsage | PropriétéOption de traitement | Notes |
---|---|---|
DirectQuery | Ne jamais traiter cette partition | Lorsque le modèle utilise DirectQuery uniquement, le traitement n'est jamais nécessaire. Dans les modèles hybrides, vous pouvez configurer la partition DirectQuery de façon à ce qu'elle ne soit jamais traitée. Par exemple, si vous effectuez une opération sur un jeu de données très volumineux et vous ne souhaitez pas que les résultats complets soient ajoutés dans le cache, vous pouvez spécifier que la partition DirectQuery inclut l'union des résultats pour toutes les autres partitions dans la table, et ne jamais traiter l'union. Les requêtes transmises à la source relationnelle ne sont pas affectées, et les requêtes sur des données en mémoire cache associent les données des autres partitions. |
InMemory avec DirectQuery | Autoriser le traitement de la partition | Si le modèle utilise le mode hybride, vous devez utiliser la même partition pour les requêtes sur InMemory et les requêtes sur la source de données DirectQuery. |