SSAS MDX - 根据其他两个维度从一个维度中选择

Posted

技术标签:

【中文标题】SSAS MDX - 根据其他两个维度从一个维度中选择【英文标题】:SSAS MDX - Select from one dimension depending on two other dimensions 【发布时间】:2014-07-08 12:49:28 【问题描述】:

我有三个维度,[Transaction][Trade Date][Report Date][Transaction] 与两者相关,我想为 KPI 定义一个函数,在其中查找以下内容:

对于作为交易存在以旧换新的每个日期,检查从该日期开始的 30 天前的范围内是否存在 [Trade Date][Report Date] 之间的差值大于 1 的交易。 我想在这个范围内总结每个交易者在每个日期的[Measure].[N of Transactions]

我尝试了以下方法:

WITH 
    SET [Filtered] AS FILTER(NONEMPTY([Trade Date].[Calendar].CurrentMember.lag(30):[Trade Date].[Calendar].CurrentMember), 
                                DateDiff("d", 
                                    CDate([Report Date].[Calendar].CurrentMember.MemberValue), 
                                    CDate([Trade Date].[Calendar].CurrentMember.Lag(1).MemberValue)
                                ) > 1
                            )
    MEMBER [Measures].[x] AS SUM([Filtered].CURRENTMEMBER, [Measures].[N of Transactions])
SELECT [Measures].[x] on 0,
[Transaction].[Trader].&[some_id_here] on 1
FROM [Relevant]
WHERE [Trade Date].[Calendar].[2014-02-16]

但这显然行不通。

                        +----------------+                        
                        |factTransaction |                        
                        |                |                        
                   +----+                +----+                   
+-------------+    |    |                |    |    +-------------+
|dimTradeDate |    |    |                |    |    |dimReportDate|
|             |    |    |                |    |    |             |
|             +-----    |                |    +----+             |
|             |         |                |         |             |
|             |         |                |         |             |
|             |         |                |         |             |
|             |         |                |         |             |
+-------------+         +----------------+         +-------------+


                                                             

以上是设计器中的结构。总结一下,我如何编写一个查看每个日期、回溯 30 天并创建一个范围的 MDX 查询。由此,查看所有事务并返回该范围的度量值[Measures].[N of Transactions][Transaction].[Trader] 的总和?

【问题讨论】:

+1 结构良好的问题。但是有一个问题:在您的脚本中,您似乎只有一个日期 - [Trade Date].[Calendar].[2014-02-16]WHERE 子句中指定?您还下载了 Adv Wks 多维数据集吗? ...将问题转换为针对该多维数据集的脚本非常有用,因为其他人也可以访问该多维数据集。 我会重新检查WHERE-clause 并下载 AW-cube 看看我是否可以更清楚地指出我的问题! 【参考方案1】:

我今天有一个类似的问题,并得到了回答。看看它是否对你有帮助:

Mdx Using a member property as an argument for a strtomember

可能是同一个问题... set 条件在行定义之前进行评估,因此,当您在 Set 上指定 currentmember 时,它不会获得所需的参数。我已经解决了将集合放入成员定义中的问题,并且正如我之前看到您的问题一样,我认为这可能是类似的情况......

CF.

【讨论】:

以上是关于SSAS MDX - 根据其他两个维度从一个维度中选择的主要内容,如果未能解决你的问题,请参考以下文章

MDX跨cube查询——lookupcube

如何获取 SSAS 多维数据集维度和维度属性的列表

事实和维度表之间的 MDX 查询

如何根据 mdx 中的另一个维度层次结构过滤维度层次结构

SSAS - 将 MDX 报告参数传递给 MDX 数据集查询

SSAS 2012 使用维度值过滤其他维度表