MDX SSAS OLAP -- 根据维度选择切换属性
Posted
技术标签:
【中文标题】MDX SSAS OLAP -- 根据维度选择切换属性【英文标题】:MDX SSAS OLAP -- Switch Attributes Based on dimension selection 【发布时间】:2019-10-02 10:53:01 【问题描述】:我有一个包含 3 个金额度量和其他数量度量的事实表(文档粒度),这 3 个金额度量不是同一种货币,而是与一种可视化类型相关。
报告可以有三种类型的可视化,文档视图、公司视图、公司组视图。
如果您通过文档视图查看,您应该查看所有类型的货币,具体取决于文档(英镑、欧元、加拿大、美国、澳元等)。
如果您通过公司视图查看,您应该会看到与公司相关的货币(即公司 1 是欧元,公司 2 是美元等)。
公司组总是欧元。
示例:
事实表
╔═══════════════════════════════════════════════════════════════════════════╗
║ Fact Document ║
╠════════════╦═════════════╦══════════════╦═════════════╦═══════════════════╣
║ Company ID ║ Doc ID ║ Mtr Document ║ Mtr Company ║ Mtr Company Group ║
╠════════════╬═════════════╬══════════════╬═════════════╬═══════════════════╣
║ 1 ║ 101 ║ 100 ║ 90 ║ 95 ║
╠════════════╬═════════════╬══════════════╬═════════════╬═══════════════════╣
║ 2 ║ 102 ║ 250 ║ 150 ║ 120 ║
╠════════════╬═════════════╬══════════════╬═════════════╬═══════════════════╣
║ 3 ║ 103 ║ 400 ║ 200 ║ 170 ║
╚════════════╩═════════════╩══════════════╩═════════════╩═══════════════════╝
模糊文档
╔════════════════════════════════════════════════════════════════════════╗
║ Dim Document ║
╠════════╦═══════════════════╦══════════════════╦════════════════════════╣
║ Doc ID ║ Document Currency ║ Company Currency ║ Company Group Currency ║
╠════════╬═══════════════════╬══════════════════╬════════════════════════╣
║ 101 ║ USD ║ GBP ║ EUR ║
╠════════╬═══════════════════╬══════════════════╬════════════════════════╣
║ 102 ║ CAN ║ USD ║ EUR ║
╠════════╬═══════════════════╬══════════════════╬════════════════════════╣
║ 103 ║ AUD ║ USD ║ EUR ║
╚════════╩═══════════════════╩══════════════════╩════════════════════════╝
dim 可视化类型(手动和静态维度没有变化)
╔═══════════════════════╦═════════════════════════╗
║ Visualization type ID ║ Visualization type Name ║
╠═══════════════════════╬═════════════════════════╣
║ 1 ║ Document view ║
║ 2 ║ Company view ║
║ 3 ║ Company Group view ║
╚═══════════════════════╩═════════════════════════╝
货币疲软
╔══════════╗
║ Currency ║
╠══════════╣
║ EUR ║
║ USD ║
║ GBP ║
║ CAN ║
╚══════════╝
我想选择可视化类型并动态选择正确的度量(您所做的)。
但我还想动态选择与该度量相关的货币。 所以我想将一个维度链接到另一个维度,所以我只能有一个货币属性,我不想有 3 个不同的货币属性。
理想的输出:
已选择文档视图
╔═════════╦════════╦══════════╗
║ Doc Id ║ Amount ║ Currency ║
╠═════════╬════════╬══════════╣
║ 101 ║ 100 ║ USD ║
║ 102 ║ 250 ║ CAN ║
║ 103 ║ 450 ║ AUD ║
╚═════════╩════════╩══════════╝
已选择公司视图
╔═════════╦════════╦══════════╗
║ Doc Id ║ Amount ║ Currency ║
╠═════════╬════════╬══════════╣
║ 101 ║ 90 ║ GPB ║
║ 102 ║ 150 ║ USD ║
║ 103 ║ 200 ║ USD ║
╚═════════╩════════╩══════════╝
已选择公司组视图
╔═════════╦════════╦══════════╗
║ Doc Id ║ Amount ║ Currency ║
╠═════════╬════════╬══════════╣
║ 101 ║ 95 ║ EUR ║
║ 102 ║ 120 ║ EUR ║
║ 103 ║ 170 ║ EUR ║
╚═════════╩════════╩══════════╝
可以这样做吗?
一切顺利,谢谢!
里卡多·卡斯特罗
更新
我在下面做了这个,当我在“dim Visualization type”中选择类型时,我得到的值是 1、2 或 3
CREATE MEMBER [Coin]
AS CASE WHEN [visualization type].[visualization type].CurrentMember.MEMBERVALUE = 'Document view'
THEN 1
ELSE (CASE WHEN [visualization type].[visualization type].CurrentMember.MEMBERVALUE = 'Company view'
THEN 2
ELSE 3 END) END,
VISIBLE = 1 ;
我需要获取属性值。我试过了:
[Document].[Document Currency].firstchild
STRTOMEMBER("[Document].[Document Currency].MEMBERS")
STRTOMEMBER('[Document].[Document Currency].[Document Currency].FirstChild', CONSTRAINED)
如果我输入以下代码,我会得到“全部”,这是我唯一不想要的:P:
[Document].[Document Currency].CurrentMember.Properties("Name")
有什么想法吗?
【问题讨论】:
【参考方案1】:您可以根据所需的转化创建一组标准的计算指标,并使用基于维度的 SCOPE 语句来根据所选视图将指标的定义调整为不同的计算。
https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/mdx/managing-scope-and-context-mdx
【讨论】:
嗨@ConcernedOfTunbridgeWells,我的“昏暗可视化类型”是手动和静态的。在我在其他情况下所做的测量之间切换。我的问题是在三个维度文档属性之间切换(文档货币║公司货币║公司集团货币)取决于“dim可视化类型”的选择。以上是关于MDX SSAS OLAP -- 根据维度选择切换属性的主要内容,如果未能解决你的问题,请参考以下文章
OLAP SSAS MDX 如何获取先前选定/可见日期的度量值
SSAS MDX 计算度量 - [ITEMS] 的 COUNT 个。[Item] 分组 [Items].[Item Group]