【问题标题】:TMSL Creating Multiple Partitions Unrecognised JSON propertyTMSL 创建多个分区无法识别的 JSON 属性
【发布时间】:2018-09-26 14:20:18
【问题描述】:

大家好,我正在尝试编写一个脚本来在表格数据模型中创建多个分区。我可以一次做一个,但多个似乎是错误的以下消息。 无法识别的 JSON 属性:分区。检查路径'create.partitions'

我正在使用以下(匿名)生成的脚本。

{
    "create": {
        "parentObject": {
            "database": "MY_TABULAR",
            "table": "MY_TABLE"
        },
        "partitions": [{
            "name": "MY_TABLE 12 2018-09",
            "source": {
                "query": "SELECT * FROM [Fact].[MY_TABLE] WHERE PlanKey = 12 AND dateKey BETWEEN 20180901 AND 20180930",
                "dataSource": "MY_DW"
            }
        },
        {
            "name": "MY_TABLE 12 2018-10",
            "source": {
                "query": "SELECT * FROM [Fact].[MY_TABLE] WHERE PlanKey = 12 AND dateKey BETWEEN 20181001 AND 20181031",
                "dataSource": "MY_DW"
            }
        },
        {
            "name": "MY_TABLE 12 2018-11",
            "source": {
                "query": "SELECT * FROM [Fact].[MY_TABLE] WHERE PlanKey = 12 AND dateKey BETWEEN 20181101 AND 20181130",
                "dataSource": "MY_DW"
            }
        }]
    }
}

据我看参考资料,这是正确的,但 SSMS 似乎并不喜欢它。

【问题讨论】:

    标签: ssas-tabular


    【解决方案1】:

    您可以通过使用Sequence 命令执行多个将创建分区的CreateOrReplace 命令来执行此操作。 Sequence 命令确实有一个可选的maxParallelism 属性,但是只有刷新操作并行运行(根据MSDN)。下面的示例进一步详细说明了这一点。

    {
    "sequence":
    {
    "operations": [
    {
    "createOrReplace": {
    "object": {
    "database": "YourTabularDatabase",
    "table": "YourTable",
    "partition": "Partition 1"
    },
    "partition": {
    "name": "Partition 1",
    "dataView": "full",
    "source": {
    "query": "SELECT * FROM [dbo].[SourceTable] where DateKey < 20180901",
            "dataSource": "YourDataSource"
              }   
          }  
       }  
            },
        {
      "createOrReplace": {
        "object": {
          "database": "YourTabularDatabase",
          "table": "YourTable",
          "partition": "Partition 2"
        },
        "partition": {
          "name": "Partition 2,
          "source": {
     "query": "SELECT * FROM [dbo].[SourceTable] where DateKey >= 20180901",
     "dataSource": "YourDataSource"
                }   
            }   
           }    
          }] 
     } 
    }
    

    【讨论】:

    • 按顺序使用 createOrReplace 可以工作,但是用 create 将其换出是行不通的。我知道该块很好,因为它在单个分区上工作得非常好,但它不适用于多个分区。我想知道 create 和 createOrReplace 之间有什么区别,因为我知道以前不存在分区。
    猜你喜欢
    • 1970-01-01
    • 2013-07-04
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多