1 sql-server ssas dimensional-modeling
多维数据集中的维度为我们提供了重复项,处理多维数据集时没有错误,但是在浏览多维数据集时我们可以看到重复项。
我们的维度中有一个层次结构,层次结构像Country -- State -- Area
.
在 DB 中,维度数据如下所示。
+---------+------------+-----------+
| Country | State | Subarea |
+---------+------------+-----------+
| India | Karnataka | Bangalore |
| India | Telangana | Hyderabad |
+---------+------------+-----------+
Run Code Online (Sandbox Code Playgroud)
现在,当使用属性 Country 浏览多维数据集时,我们会看到 country 下的 2 个成员为“India”,当针对该属性选择度量时,销售额在这两个值之间破碎。
我们可以做任何工作来避免这个问题吗?
该行为取决于您的KeyColumns
设置。
给定一个包含这 2 个命名查询的多维数据集 datasource view
城市:
SELECT 1 AS id, 'India' AS country, 'Calcutta' AS city
UNION
SELECT 2 AS id, 'India' AS country, 'Bangalore' AS city
Run Code Online (Sandbox Code Playgroud)
销售量:
SELECT 1 AS city, 5 AS salesamount
UNION
SELECT 2 AS city, 5 AS salesamount
Run Code Online (Sandbox Code Playgroud)
基于城市的维度,链接到sales.city->cities.id
关系上的 Sales 表 ,如下所示,使用 id 列作为KeyColumns
:
结果是这样的:
但是,如果我将KeyColumn
属性更改为该属性country
,如下所示:
结果是所有销售额都在一个国家/地区下报告:
我同意文档有点简洁:
包含表示属性键的一列或多列,该键是属性绑定到的数据源视图中基础关系表中的列。除非为 NameColumn 属性指定了值,否则每个成员的此列的值都会显示给用户。
您应该将其解释为“键列中的每个不同值都有一个单独的属性成员,即使显示的值相同”
但是请注意,更改键列可能需要您更改NameColumn
和OrderBy
属性。
此外,KeyColumns
可以由多个列组成,作为唯一键,而不是像我的示例中那样的单个键。
有时,当现有报告更改现有结构的风险太大时,添加额外属性可能是一个不错的选择。