SSAS 多维中不同粒度的多对多货币转换

Many to Many Currency Conversion at Different Granularities in SSAS Multidimensional

我在 SSAS 中有一个正在开发的销售多维数据集。我有一个用于实际销售额的度量组 "invoiced sales",还有一个用于销售预测的度量组 "Sales Budget"。开票销售额具有单独发票行级别的详细信息。销售预算是按月估算的。因此,销售预算度量值组将其粒度设置为月级别。我将其设置为在查看月份级别或更高级别的多维数据集时显示销售预算数字,当您向下钻取到低于月份级别时,预算数字就会消失。

无论如何,开具发票的销售额和销售预算都可以使用不同的货币。我正在进行多对多货币转换,以便用户可以选择所需的货币并将所有货币转换为它。我已使用商业智能向导生成的脚本和手动方法成功完成此操作,关注这些视频。

https://www.youtube.com/watch?v=DHuqEvphE4I

https://www.youtube.com/watch?v=gMCIu5Nh93M

但是,使用这两种方法中的任何一种,如果我尝试将任何指标包含在“销售预算”度量值组中,我都会收到错误消息,因为它被设置为不同的粒度。我在数据仓库、多维数据集等中的数据模型的设置与视频中的相同,只是我有一个额外的事实 table 用于链接到其他 table 的销售预算就像销售事实 table 一样。我看不出这在逻辑上不可能实现的原因,并且必须有解决方法。我正在使用 SQL Server 2012 Enterprise SP3。

这是我完成第二个视频后设置的几个屏幕截图。

一个简单的解决方案是添加第二个度量值组 "Monthly Currency Rates",它按月提供货币汇率。将这个新度量值组用于维度 "Reporting Currency" 和事实 "Sales Budget".

之间的 M:N 关系

为了快速测试,请创建一个事实视图 "Currency Rates",其中您仅在每个月的第一天 select 并创建一个 key/sid 以按月粒度与您的日期进行联接尺寸。 (如果您在 SQL 数据库上创建此视图,请将其添加到 ssas 中的数据源视图)并将该视图作为事实添加到您的多维数据集并分配每月日期关系和报告货币关系。最后用您创建的月度货币事实更新维度 "Reporting Currency" 和事实 "Sales Budget" 之间的 M:N 关系。

编辑:不要忘记将事实 "Sales Budget" 度量的度量表达式更改为新的月度货币汇率事实 table 度量。