【问题标题】:SSAS - Is there a way to have a dimension relate to a fact table based on two columns in the fact table?SSAS - 有没有办法让维度与基于事实表中的两列的事实表相关?
【发布时间】:2015-02-01 10:35:20
【问题描述】:

在 SSAS 中,有没有办法让维度与基于事实表中的两列的事实表相关?

我们有两个表:位置(维度)和销售额(事实)。位置维度有一列:“状态”。 Sales 表有三列:“saleAmount”、“customerState”和“billingState”(因为我们的客户可能在加利福尼亚,但希望我们向纽约的公司或分支机构开具账单)。

在 SQL 中,如果我们想查看加利福尼亚州的所有销售额,我们将 SQL 查询编写为:

select sum(saleAmount) from Sales where customerState = 'California' or billingState = 'California'

在构建我的多维数据集时,有没有办法在 SSDT 中完成此操作,以便当我使用 Excel 作为最终用户工具并从 Location 维度和 saleAmount 度量中选择 state 属性时,salesAmount 将基于customerState 还是 billingState? (我不想在此处使用角色扮演维度 - 其中一个 Location 维度基于 customerState,另一个 Location 维度基于 billingState。我希望一个维度同时与两列匹配。)

【问题讨论】:

  • 这意味着一个事实可能有两种不同的状态。当这种情况发生时,你如何想象这种情况?您是否期望一个事实在查看所有状态时只计算一次,即使它处于两个不同的状态?

标签: ssas dimensions fact-table


【解决方案1】:

不是你想的那样,但你可以通过这样做来实现你想要的:

在事实表上创建一个视图,即与 customerState 相关的事实和与 billingState 相关的事实的 UNION。这意味着视图将只有 1 个 State 列,如果一个事实的 customerState 和 billingState 的值不同,那么它将在视图中有两行。

使用视图而不是表格来填充多维数据集中的度量值组。

将度量值组链接到 Fact 视图中单个 State 列上的 Location 维度。

当心,这会导致在汇总单个事实处于两个不同状态的状态时重复计算事实。

【讨论】:

  • 有没有办法解决重复计数的问题(类似于多对多关系)?如果我正在查看所有州或未选择 Location 维度,我不希望 saleAmount 重复计算。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多