浏览时 SSAS 层次结构重复

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”,当针对该属性选择度量时,销售额在这两个值之间破碎。

我们可以做任何工作来避免这个问题吗?

Tom*_*m V 6

该行为取决于您的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 属性指定了值,否则每个成员的此列的值都会显示给用户。

您应该将其解释为“键列中的每个不同值都有一个单独的属性成员,即使显示的值相同”

但是请注意,更改键列可能需要您更改NameColumnOrderBy属性。

此外,KeyColumns可以由多个列组成,作为唯一键,而不是像我的示例中那样的单个键。

有时,当现有报告更改现有结构的风险太大时,添加额外属性可能是一个不错的选择。