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

Posted

技术标签:

【中文标题】SSAS多维中不同粒度的多对多货币转换【英文标题】:Many to Many Currency Conversion at Different Granularities in SSAS Multidimensional 【发布时间】:2016-12-05 23:06:25 【问题描述】:

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

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

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

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

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

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

【问题讨论】:

【参考方案1】:

一个简单的解决方案是添加第二个度量组“每月货币汇率”,它提供每月粒度的货币汇率。为维度“报告货币”和事实“销售预算”之间的 M:N 关系使用这个新的度量值组。

为了进行快速测试,请创建一个事实“货币汇率”视图,您可以在其中仅选择每个月的第一天,并使用您的日期维度为每月粒度的联接创建一个键/sid。 (如果您在 SQL DB 上创建此视图,则将此视图添加到 ssas 中的数据源视图)并将视图作为事实添加到您的多维数据集并分配每月日期关系和报告货币关系。最后使用您创建的每月货币事实更新维度“报告货币”和事实“销售预算”之间的 M:N 关系。

编辑:不要忘记将事实“销售预算”度量的度量表达式更改为新的每月货币汇率事实表度量。

【讨论】:

做到了,非常感谢!如果我不关心使用每日费率,并且当月的平均费率对于两个度量组来说已经足够了。我认为我可以通过对销售和预算度量组使用新的月平均汇率表来将其合并为一个货币事实表。照原样工作。

以上是关于SSAS多维中不同粒度的多对多货币转换的主要内容,如果未能解决你的问题,请参考以下文章

SSAS Tabular模式中关系设置不支持多对多?

SQL Server Analysis Services 中的多对多关系;第二个多对多关系不起作用

Laravel 4:具有额外关系的多对多

与不同数据类型的多对多关系

在 TypeORM 与 GraphQL 的多对多关系上使用数据加载器,查询多对多

与 SQLAlchemy 中不同的其他对象、自身和属性的多对多关系