dax 两列有 isKey=true

dax two columns has isKey=true

我在 Microsoft 表格模型中创建日期 table。

来源 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

Reason: Failed to save modifications to the server. Error returned: 'The table 'Дата' has two columns with the IsKey property set to True.

但在代码中似乎有一个 isKey 属性!!!!!! 这个表格模型是怎么回事??? 它在哪里找到两列????

所有 table 都有一个固有的特殊 "RowNumber" 列,默认情况下其 IsKey 属性 设置为 true。有时,根据您部署更改的方式,这将与在 table.

的另一列上将 IsKey 设置为 true 发生冲突。

通常,在 createOrReplace TMSL 操作中编写 table 脚本可以解决问题:

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

如果还是不行,先尝试删除table。