Andy
Andy

Reputation: 63

TMSL Creating Multiple Partitions Unrecognised JSON property

Hi all I'm trying to put together a script to create multiple partitions within a tabular data model. I can do one at a time, but multiples seems to be erroring with the following message. Unrecognized JSON property: partitions. Check path 'create.partitions'

I'm using the following (anonymised) generated script.

{
    "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"
            }
        }]
    }
}

As far as I can tell from looking at the references this is correct, but SSMS doesn't appear to like it.

Upvotes: 2

Views: 1319

Answers (1)

userfl89
userfl89

Reputation: 4800

You can do this by using the Sequence command to execute multiple CreateOrReplace commands that will create the partitions. The Sequence command does have an optional maxParallelism property, however only refresh operations run in parallel (per MSDN). The example below details this further.

{
"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"
            }   
        }   
       }    
      }] 
 } 
}

Upvotes: 2

Related Questions