【问题标题】:forcing SSAS respecting relationships between dimensions强制 SSAS 尊重维度之间的关系
【发布时间】:2019-06-15 13:00:29
【问题描述】:

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

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

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

是否有其他替代方案可以强制 SSAS 尊重已定义的关系?

非常感谢您的帮助。

【问题讨论】:

  • Analysis Services 多维还是表格?
  • 它是多维的

标签: ssas relationship dimension cross-join


【解决方案1】:

假设您有包含 CustomerKey、CountryKey、DateKey 和 SalesAmount 的 FactSales。当您在 Excel 中构建数据透视表时,行上为 Customer 和 Country,列上为 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。不要显示没有数据的行。该度量应返回有意义的客户国家组合,并应返回所有客户。

【讨论】:

  • 嗨,格雷格,我已经对我的实际客户维度进行了客户计数。这确实有效。但我发现,这可能会让用户非常困惑,因为他/她不明白为什么要使用这个辅助措施。更重要的是,这将炸毁 Excel 分析。你明白我的意思吗?
  • @peno 我明白了。但你不能两全其美。要么您只需要具有销售额和相关客户国家组合的客户......或者您希望通过显示没有数据的行来显示所有客户国家组合......或者您必须定义您想要的组合
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    相关资源
    最近更新 更多