Partitions, objet (TMSL)

S’applique à : SQL Server 2016 et versions ultérieures Analysis Services Azure Analysis Services Fabric/Power BI Premium

Définit une partition, ou segmentation logique, de l’ensemble de lignes de table. Une partition se compose d’une requête Power Query M ou SQL utilisée pour l’importation de données, d’exemples de données dans l’environnement de modélisation ou en tant que requête de données complète pour l’exécution de requête directe via DirectQuery.

Les propriétés de la partition déterminent la façon dont les données sont sources pour la table. Dans la hiérarchie d’objets, l’objet parent d’une partition est un objet table.

Définition de l'objet

Tous les objets ont un ensemble commun de propriétés, notamment le nom, le type, la description, une collection de propriétés et les annotations. Les objets de partition ont également les propriétés suivantes.

type
Type de partition. Les valeurs valides sont numériques et incluent les éléments suivants :

  • Requête (1) : les données de cette partition sont récupérées en exécutant une requête sur une source de données. DataSource doit être une source de données définie dans le fichier model.bim.

  • Calculé (2) : les données de cette partition sont remplies en exécutant une expression calculée.

  • Aucun (3) : les données de cette partition sont remplies en transmettant un ensemble de lignes de données au serveur dans le cadre de l’opération d’actualisation.

mode
Définit le mode de requête de la partition. Les valeurs valides sont import, DirectQuery ou default (hérité). Cette valeur est requise.

Valeur Description
Importer Indique que les requêtes sont émises sur le moteur d’analyse en mémoire qui stocke les données importées.
DirectQuery Passez l’exécution de requête à une base de données relationnelle externe. Le mode DirectQuery utilise des partitions pour fournir des exemples de données utilisées lors de la conception du modèle. Lors du déploiement sur un serveur de production, vous devez revenir à la vue données complètes. Rappelez-vous que le mode DirectQuery nécessite une partition par table et une source de données par modèle.
default Définissez cette option si vous souhaitez basculer les modes plus haut dans l’arborescence des objets, au niveau du modèle ou de la base de données. Lorsque vous choisissez la valeur par défaut, le mode de requête est Import ou DirectQuery.

source
Identifie l’emplacement des données à interroger. Les valeurs valides sont query, calculated ou none. Cette valeur est requise.

Valeur Description
Aucune Utilisé pour le mode importation, où les données sont chargées et stockées en mémoire.
requête Pour le mode DirectQuery, il s’agit d’une requête SQL exécutée sur la base de données relationnelle spécifiée dans le DataSource du modèle. Consultez Objet DataSources (TMSL).
Calculé Les tables calculées proviennent d’une expression spécifiée lors de la création de la table. Cette expression est considérée comme la source de la partition créée pour la table calculée.

Dataview
Pour les partitions DirectQuery, une propriété dataView supplémentaire spécifie si la requête qui récupère des données est un exemple ou le jeu de données complet. Les valeurs valides sont complètes, échantillon ou par défaut (héritées). Comme indiqué précédemment, les échantillons sont utilisés uniquement pendant la modélisation et le test des données.

Utilisation

Les objets de partition sont utilisés dans la commande Alter (TMSL),la commande Create (TMSL),la commande CreateOrReplace (TMSL),la commande Delete (TMSL),la commande Refresh (TMSL) et la commande MergePartitions (TMSL).

Lors de la création, du remplacement ou de la modification d’un objet de partition, spécifiez toutes les propriétés en lecture-écriture de la définition de l’objet. L’omission d’une propriété en lecture-écriture est considérée comme une suppression. Les propriétés en lecture-écriture incluent le nom, la description, le mode et la source.

Exemples

Exemple 1 - Structure de partition simple d’une table (et non d’une table de faits).

"partitions": [  
          {  
            "name": "Customer",  
            "source": {  
              "query": "SELECT [dbo].[Customer].* FROM [dbo].[Customer]",  
              "dataSource": "SqlServer localhost FoodmartDB"  
            }  
]  

Exemple 2 - Les données de fait partitionnée sont généralement basées sur une clause WHERE qui crée des partitions qui ne se chevauchent pas pour les données de la même table.

"partitions": [  
          {  
            "name": "sales_fact_2015",  
            "source": {  
              "query": "SELECT [dbo].[sales_fact_2015].* FROM [dbo].[sales_fact_2015] WHERE [dbo].[sales_fact_2015].[Quarter]=4",                                                                                          
              "dataSource": "SqlServer localhost FoodmartDB"  
            },  
          }  
        ]  

Exemple 3 - Table calculée basée sur une expression DAX.

"partitions": [  
          {  
            "name": "CalcTable1",  
            "source": {  
              "type": "calculated",  
              "expression": "'Product Class'"  
            },  
            }  
]  

Syntaxe complète

Vous trouverez ci-dessous la représentation de schéma d’un objet de partition.

"partitions": {  
                "type": "array",  
                "items": {  
                  "description": "Partition object of Tabular Object Model (TOM)",  
                  "type": "object",  
                  "properties": {  
                    "name": {  
                      "type": "string"  
                    },  
                    "description": {  
                      "anyOf": [  
                        {  
                          "type": "string"  
                        },  
                        {  
                          "type": "array",  
                          "items": {  
                            "type": "string"  
                          }  
                        }  
                      ]  
                    },  
                    "mode": {  
                      "enum": [  
                        "import",  
                        "directQuery",  
                        "default"  
                      ]  
                    },  
                    "dataView": {  
                      "enum": [  
                        "full",  
                        "sample",  
                        "default"  
                      ]  
                    },  
                    "source": {  
                      "anyOf": [  
                        {  
                          "description": "QueryPartitionSource object of Tabular Object Model (TOM)",  
                          "type": "object",  
                          "properties": {  
                            "type": {  
                              "enum": [  
                                "query",  
                                "calculated",  
                                "none"  
                              ]  
                            },  
                            "query": {  
                              "anyOf": [  
                                {  
                                  "type": "string"  
                                },  
                                {  
                                  "type": "array",  
                                  "items": {  
                                    "type": "string"  
                                  }  
                                }  
                              ]  
                            },  
                            "dataSource": {  
                              "type": "string"  
                            }  
                          },  
                          "additionalProperties": false  
                        },  
                        {  
                          "description": "CalculatedPartitionSource object of Tabular Object Model (TOM)",  
                          "type": "object",  
                          "properties": {  
                            "type": {  
                              "enum": [  
                                "query",  
                                "calculated",  
                                "none"  
                              ]  
                            },  
                            "expression": {  
                              "anyOf": [  
                                {  
                                  "type": "string"  
                                },  
                                {  
                                  "type": "array",  
                                  "items": {  
                                    "type": "string"  
                                  }  
                                }  
                              ]  
                            }  
                          },  
                          "additionalProperties": false  
                        }  
                      ]  
                    },  
                    "annotations": {  
                      "type": "array",  
                      "items": {  
                        "description": "Annotation object of Tabular Object Model (TOM)",  
                        "type": "object",  
                        "properties": {  
                          "name": {  
                            "type": "string"  
                          },  
                          "value": {  
                            "anyOf": [  
                              {  
                                "type": "string"  
                              },  
                              {  
                                "type": "array",  
                                "items": {  
                                  "type": "string"  
                                }  
                              }  
                            ]  
                          }  
                        },  
                        "additionalProperties": false  
                      }  
                    }  
                  },  
                  "additionalProperties": false  
                }  
              },