дакс два столбца имеет isKey = true - PullRequest
0 голосов
/ 28 июня 2018

Я создаю таблицу дат в табличной модели Microsoft.

Источник code:

{
    "name": "Дата",
    "dataCategory": "Time",
    "columns": [
      {
        "name": "DateID",
        "dataType": "int64",
        "isHidden": true,
        "sourceColumn": "DateID",
        "sourceProviderType": "Integer"
      },
      {
        "name": "FullDateAlternateKey",
        "dataType": "dateTime",
        "isHidden": true,
        "isKey": true,
        "sourceColumn": "FullDateAlternateKey",
        "formatString": "General Date",
        "sourceProviderType": "DBDate"
      },
      {
        "name": "DayNumberOfWeek",
        "dataType": "int64",
        "isHidden": true,
        "sourceColumn": "DayNumberOfWeek",
        "sourceProviderType": "UnsignedTinyInt"
      },
      {
        "name": "DayNameOfWeek",
        "dataType": "string",
        "isHidden": true,
        "sourceColumn": "DayNameOfWeek",
        "sourceProviderType": "WChar"
      },
      {
        "name": "DayNumberOfMonth",
        "dataType": "int64",
        "isHidden": true,
        "sourceColumn": "DayNumberOfMonth",
        "sourceProviderType": "UnsignedTinyInt"
      },
      {
        "name": "DayNumberOfYear",
        "dataType": "int64",
        "isHidden": true,
        "sourceColumn": "DayNumberOfYear",
        "sourceProviderType": "SmallInt"
      },
      {
        "name": "Неделя",
        "dataType": "int64",
        "isHidden": true,
        "sourceColumn": "WeekNumberOfYear",
        "sourceProviderType": "UnsignedTinyInt"
      },
      {
        "name": "Месяц",
        "dataType": "string",
        "isHidden": true,
        "sourceColumn": "MonthName",
        "sourceProviderType": "WChar"
      },
      {
        "name": "MonthNumberOfYear",
        "dataType": "int64",
        "isHidden": true,
        "sourceColumn": "MonthNumberOfYear",
        "sourceProviderType": "UnsignedTinyInt"
      },
      {
        "name": "Квартал",
        "dataType": "int64",
        "isHidden": true,
        "sourceColumn": "CalendarQuarter",
        "sourceProviderType": "UnsignedTinyInt"
      },
      {
        "name": "Год",
        "dataType": "int64",
        "isHidden": true,
        "sourceColumn": "CalendarYear",
        "sourceProviderType": "SmallInt"
      },
      {
        "name": "Полугодие",
        "dataType": "int64",
        "isHidden": true,
        "sourceColumn": "CalendarSemester",
        "sourceProviderType": "UnsignedTinyInt"
      },
      {
        "name": "IsWeekend",
        "dataType": "boolean",
        "isHidden": true,
        "sourceColumn": "IsWeekend",
        "formatString": "\"TRUE\";\"TRUE\";\"FALSE\"",
        "sourceProviderType": "Boolean"
      }
    ],
    "partitions": [
      {
        "name": "Дата",
        "source": {
          "query": "SELECT [dbo].[DimDate].* FROM [dbo].[DimDate]",
          "dataSource": "SqlServer MS-SQL2MSSQLTEST GoodWillDW"
        },
        "annotations": [
          {
            "name": "QueryEditorSerialization",
            "value": "<?xml version=\"1.0\" encoding=\"UTF-16\"?><Gemini xmlns=\"QueryEditorSerialization\"><AnnotationContent><![CDATA[<RSQueryCommandText>SELECT [dbo].[DimDate].* FROM [dbo].[DimDate]</RSQueryCommandText><RSQueryCommandType>Text</RSQueryCommandType><RSQueryDesignState></RSQueryDesignState>]]></AnnotationContent></Gemini>"
          }
        ]
      }
    ]
}

Попробуйте развернуть решение на сервере, и возникла ошибка. Невозможно развернуть metadata.

Причина: не удалось сохранить изменения на сервере. Возвращенная ошибка: «Таблица« Дата »имеет два столбца, для свойства IsKey установлено значение True.

Но в коде кажется ОДИН атрибут isKey !!!!! Что происходит в этой табличной модели ??? Где он нашел две колонки ????

1 Ответ

0 голосов
/ 29 июня 2018

Все таблицы имеют встроенный специальный столбец «RowNumber», для которого свойство IsKey по умолчанию имеет значение true. Иногда, в зависимости от того, как вы развертываете изменения, это может конфликтовать с установкой IsKey в значение true в другом столбце таблицы.

Обычно сценарий таблицы в операции createOrReplace TMSL решает проблему:

{   
  "createOrReplace": {
    "object": {
      "database": "MyDatabase",
      "table": "Дата"
    }, 
    "table": {
      "name": "Дата",
      "dataCategory": "Time",
      "columns": [
        ...
        {
          "name": "FullDateAlternateKey",
          "dataType": "dateTime",
          "isHidden": true,
          "isKey": true,
          "sourceColumn": "FullDateAlternateKey",
          "formatString": "General Date",
          "sourceProviderType": "DBDate"
        }
        ...
      ]
    }
  }
}

Если это не помогло, попробуйте сначала удалить таблицу.

...