TMSL Xmla Создание таблиц в существующей базе данных - Язык сценариев табличных моделей - Службы Azure Analysis Services

У меня вопрос: каков правильный синтаксис для добавления двух или более таблиц в существующую базу данных с использованием файла xmla и SSMS? У меня есть модель, развернутая на сервере служб Azure Analysis Services. Итак, база данных уже создана. Я хочу создать или заменить таблицы, запустив один скрипт xmla в SSMS.

Когда я использую приведенный ниже сценарий для создания одной таблицы, он отлично работает. Но мне нужно создать несколько таблиц (а не одну) с помощью одного скрипта xmla.

Скрипт, работающий для одной таблицы

Приведенный ниже скрипт работает отлично и правильно «создает или заменяет» одну таблицу в базе данных.

{
  "createOrReplace": {
    "object": {
      "database": "MyDatabase",
      "table": "MyTable"
    },
    "table": {
      "name": "MyTable",
      "columns": [
        {
          "name": "MyTableId",
          "dataType": "int64",
          "sourceColumn": "MyTableId"
        },
        {
          "name": "MyTable",
          "dataType": "string",
          "sourceColumn": "MyTable"
        }
      ],
      "partitions": [
        {
          "name": "Partition",
          "dataView": "full",
          "source": {
            "type": "m",
            "expression": [
              "let",
              "    Source=GetFileList(),",
              "    #\"MyTable txt\" = Source{[Name=\"MyTable.txt\"]}[Content],",
              "    #\"Imported CSV\" = Csv.Document(#\"MyTable txt\",[Delimiter=\",\", Columns=9, Encoding=1252, QuoteStyle=QuoteStyle.None]),",
              "    #\"Promoted Headers\" = Table.PromoteHeaders(#\"Imported CSV\", [PromoteAllScalars=true]),",
              "    #\"Changed Type\" = Table.TransformColumnTypes(#\"Promoted Headers\",{{\"MyTableId\", Int64.Type}, {\"MyTable\", type text}, {\"Description\", type text}}),",
              "    #\"Removed Columns\" = Table.RemoveColumns(#\"Changed Type\",{\"Description\"})",
              "in",
              "    #\"Removed Columns\""
            ]
          }
        }
      ]
    }
  }
}

Я попытался добавить 2 таблицы с помощью приведенного ниже кода, но получил ошибку. Запрос JSON DDL завершился неудачно со следующей ошибкой: Нераспознанное свойство JSON: таблицы. Проверить путь "таблицы", строка 6, позиция 16 ..

{   
  "createOrReplace": {   
    "database": {   
      "name": "MyDatabase",   
      "tables": [   
        {"name": "TableA",
      "columns": [
        {
          "name": "TableAId",
          "dataType": "int64",
          "sourceColumn": "TableAId"
        },
        {
          "name": "TableA",
          "dataType": "string",
          "sourceColumn": "TableA"
        }
      ],
      "partitions": [
        {
          "name": "Partition",
          "dataView": "full",
          "source": {
            "type": "m",
            "expression": [
              "let",
              "    Source=GetFileList(),",
              "    #\"TableA txt\" = Source{[Name=\"TableA.txt\"]}[Content],",
              "    #\"Imported CSV\" = Csv.Document(#\"TableA txt\",[Delimiter=\",\", Columns=9, Encoding=1252, QuoteStyle=QuoteStyle.None]),",
              "    #\"Promoted Headers\" = Table.PromoteHeaders(#\"Imported CSV\", [PromoteAllScalars=true]),",
              "    #\"Changed Type\" = Table.TransformColumnTypes(#\"Promoted Headers\",{{\"TableAId\", Int64.Type}, {\"TableA\", type text}, {\"Description\", type text}}),",
              "    #\"Removed Columns\" = Table.RemoveColumns(#\"Changed Type\",{\"Description\"})",
              "in",
              "    #\"Removed Columns\""
            ]
          }
        }
      ] },   
        {"name": "TableB",
      "columns": [
        {
          "name": "TableBId",
          "dataType": "int64",
          "sourceColumn": "TableBId"
        },
        {
          "name": "TableB",
          "dataType": "string",
          "sourceColumn": "TableB"
        }
      ],
      "partitions": [
        {
          "name": "Partition",
          "dataView": "full",
          "source": {
            "type": "m",
            "expression": [
              "let",
              "    Source=GetFileList(),",
              "    #\"TableB txt\" = Source{[Name=\"TableB.txt\"]}[Content],",
              "    #\"Imported CSV\" = Csv.Document(#\"TableB txt\",[Delimiter=\",\", Columns=11, Encoding=1252, QuoteStyle=QuoteStyle.None]),",
              "    #\"Promoted Headers\" = Table.PromoteHeaders(#\"Imported CSV\", [PromoteAllScalars=true]),",
              "    #\"Changed Type\" = Table.TransformColumnTypes(#\"Promoted Headers\",{{\"TableBId\", Int64.Type}, {\"TableB\", type text}, {\"Description\", type text}}),",
              "    #\"Removed Columns\" = Table.RemoveColumns(#\"Changed Type\",{\"Description\"})",
              "in",
              "    #\"Removed Columns\""
            ]
          }
        }
      ] } 
      ]      
    }   
  }   
}  

Я также попробовал приведенный ниже код, но получил ошибку Ошибка -1055784777: запрос JSON DDL завершился неудачно со следующей ошибкой: Нераспознанное свойство JSON: таблицы. Проверьте путь 'createOrReplace.tables', строка 6, позиция 14 .. Запрос JSON DDL завершился ошибкой: нераспознанное свойство JSON: таблицы. Проверьте путь 'createOrReplace.tables', строка 6, позиция 14 ..

{
  "createOrReplace": {
    "object": {
      "database": "MyDatabase"
      },
    "tables": [
      {
        "name": "TableA",
        "columns": [
          {
            "name": "TableAId",
            "dataType": "int64",
            "sourceColumn": "TableAId"
          },
          {
            "name": "TableA",
            "dataType": "string",
            "sourceColumn": "TableA"
          }
        ],
        "partitions": [
          {
            "name": "Partition",
            "dataView": "full",
            "source": {
              "type": "m",
              "expression": [
                "let",
                "    Source=GetFileList(),",
                "    #\"TableA txt\" = Source{[Name=\"TableA.txt\"]}[Content],",
                "    #\"Imported CSV\" = Csv.Document(#\"TableA txt\",[Delimiter=\",\", Columns=9, Encoding=1252, QuoteStyle=QuoteStyle.None]),",
                "    #\"Promoted Headers\" = Table.PromoteHeaders(#\"Imported CSV\", [PromoteAllScalars=true]),",
                "    #\"Changed Type\" = Table.TransformColumnTypes(#\"Promoted Headers\",{{\"TableAId\", Int64.Type}, {\"TableA\", type text}, {\"Description\", type text}}),",
                "    #\"Removed Columns\" = Table.RemoveColumns(#\"Changed Type\",{\"Description\"})",
                "in",
                "    #\"Removed Columns\""
              ]
            }
          }
        ]
      },
      {
        "name": "TableB",
        "columns": [
          {
            "name": "TableBId",
            "dataType": "int64",
            "sourceColumn": "TableBId"
          },
          {
            "name": "TableB",
            "dataType": "string",
            "sourceColumn": "TableB"
          }
        ],
        "partitions": [
          {
            "name": "Partition",
            "dataView": "full",
            "source": {
              "type": "m",
              "expression": [
                "let",
                "    Source=GetFileList(),",
                "    #\"TableB txt\" = Source{[Name=\"TableB.txt\"]}[Content],",
                "    #\"Imported CSV\" = Csv.Document(#\"TableB txt\",[Delimiter=\",\", Columns=11, Encoding=1252, QuoteStyle=QuoteStyle.None]),",
                "    #\"Promoted Headers\" = Table.PromoteHeaders(#\"Imported CSV\", [PromoteAllScalars=true]),",
                "    #\"Changed Type\" = Table.TransformColumnTypes(#\"Promoted Headers\",{{\"TableBId\", Int64.Type}, {\"TableB\", type text}, {\"Description\", type text}}),",
                "    #\"Removed Columns\" = Table.RemoveColumns(#\"Changed Type\",{\"Description\"})",
                "in",
                "    #\"Removed Columns\""
              ]
            }
          }
        ]
      }
    ]
  }
}


person user12525899    schedule 19.03.2020    source источник


Ответы (1)


Используйте команду последовательности:

{
  "sequence": {
    "operations": [
      { CREATE TABLE 1},
      { CREATE TABLE 2}
    ]
  }
}

Вы можете включить столько операций, сколько захотите.

person Seymour    schedule 23.04.2020
comment
Работал как шарм! Спасибо - person user12525899; 27.04.2020