强制SSAS尊重维度之间的关系

时间:2019-01-22 05:31:51

标签: ssas relationship dimension cross-join

关于以下问题和给定的response,我有以下问题:

我面临着同样的问题,但是在我的情况下,创建如上所述的桥表是不可行的,因为我仍然需要其他操作和不同分析的单独维度。

出于预算原因,即使客户与事实表不匹配,我也必须向他们显示所有客户。在EXCEL中启用相应的选项会极大地导致选定维度的交叉连接,从而获得所有国家/地区的所有客户的完整列表,尽管并非所有国家/地区都存在每个客户。

是否有另一种替代方法强制SSAS遵守已定义的关系?

在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

假设您有FactSales,其中包含CustomerKey,CountryKey,DateKey和SalesAmount。当您在Excel中构建数据透视表时,在“客户”和“国家/地区”的行中,在“ SalesAmount”的列中,它仅显示具有销售额的客户。如果将Excel设置为不显示数据行,则显示所有国家/地区的所有客户。

尝试仅使用CustomerKey和CountryKey构建新的FactCustomerCountry表。创建度量“客户国家/地区计数”。

然后创建一个新的计算量度:

CREATE MEMBER CURRENTCUBE.[Measures].[Sales Amount with Zeros]
AS
IIF(
 IsEmpty([Measures].[Customer Country Count]),
 Null,
 CoalesceEmpty([Measures].[SalesAmount], 0)
);

在数据透视表中而不是SalesAmount中使用该度量。不显示没有数据的行。该度量应返回有意义的客户国家/地区组合,并应返回所有客户。

答案 1 :(得分:0)

您好,您可以在MDX中解决您的问题。看一下下面的查询,它是Adventureworks上的一个示例。这将获取所有已售出的产品和售出的季度产品。现在有些产品从未售出,我仍然希望看到这些产品。

选择[度量]。[Internet销售额]列上, -非空 {filter((([Product]。[Subcategory]。[Subcategory],[Date]。[Calendar Quarter of Year]。[Calendar Year of Year]),[Measures]。[Internet Sales Amount]> 0), filter(([[Product]。[Subcategory]。[Subcategory],[Date]。[Calendar Year of Year] .defaultmember),[Measures]。[Internet Sales Amount] = null) } 在行上 从 [冒险作品]

enter image description here