Partitions 对象 (TMSL)
适用于:SQL Server 2016 及更高版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium
定义表行集的分区或逻辑分段。 分区由用于导入数据的 Power Query M 或 SQL 查询组成,用于建模环境中的示例数据,或作为完整数据查询,用于通过 DirectQuery 传递查询执行。
分区上的属性确定表数据的源方式。 在对象层次结构中,分区的父对象是表对象。
对象定义
所有对象都有一组通用的属性,包括名称、类型、说明、属性集合和注释。 分区 对象还具有以下属性。
类型
分区的类型。 有效值为数值,包括以下内容:
查询 (1) - 通过对 DataSource 执行查询来检索此分区中的数据。 DataSource 必须是 model.bim 文件中定义的数据源。
计算 (2) – 通过执行计算表达式填充此分区中的数据。
无 (3) – 此分区中的数据是通过将数据行集作为刷新操作的一部分推送到服务器来填充的。
mode
定义分区的查询模式。 有效值为 import、 DirectQuery 或 默认 (继承) 。 此值是必需的。
值 | 说明 |
---|---|
导入 | 指示针对存储导入数据的内存中分析引擎发出查询请求。 |
DirectQuery | 将查询执行传递到外部关系数据库。 DirectQuery 模式使用分区来提供模型设计期间使用的示例数据。 部署在生产服务器上时,应切换回“完整数据”视图。 回想一下,DirectQuery 模式要求每个表一个分区,每个模型需要一个数据源。 |
default | 如果要在模型或数据库级别上切换对象树上层的模式,请设置此项。 选择默认值时,查询模式将为导入或 DirectQuery。 |
source
标识要查询的数据的位置。 有效值为 query、calculated 或 none。 此值是必需的。
值 | 描述 |
---|---|
无 | 用于导入模式,其中数据加载并存储在内存中。 |
query | 对于 DirectQuery 模式,这是针对模型 DataSource 中指定的关系数据库执行的 SQL 查询。 请参阅 dataSources 对象 (TMSL) 。 |
计算 | 计算表源自创建表时指定的表达式。 此表达式被视为为计算表创建的分区的源。 |
dataview
对于 DirectQuery 分区,其他 dataView 属性进一步指定检索数据的查询是示例数据集还是完整数据集。 有效值为 完整、 样本或 默认 (继承) 。 如前所述,仅在数据建模和测试期间使用示例。
使用情况
分区对象用于 alter 命令 (TMSL) 、 create 命令 (TMSL) 、 CreateOrReplace 命令 (TMSL) 、 Delete 命令 (TMSL) 、 Refresh 命令 (TMSL) 和 MergePartitions 命令 (TMSL) 。
创建、替换或更改分区对象时,请指定对象定义的所有读写属性。 省略读写属性被视为删除。 读写属性包括名称、说明、模式和源。
示例
示例 1 - 表的简单分区结构 (不是事实数据表) 。
"partitions": [
{
"name": "Customer",
"source": {
"query": "SELECT [dbo].[Customer].* FROM [dbo].[Customer]",
"dataSource": "SqlServer localhost FoodmartDB"
}
]
示例 2 - 已分区事实数据通常基于 WHERE 子句,该子句为同一表中的数据创建非重叠分区。
"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"
},
}
]
示例 3 - 基于 DAX 表达式的计算表。
"partitions": [
{
"name": "CalcTable1",
"source": {
"type": "calculated",
"expression": "'Product Class'"
},
}
]
完整语法
下面是分区对象的架构表示形式。
"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
}
},