我在自助式BI工具(Pyramid Analytics,如果有帮助)中工作,它允许使用MDX使用自定义成员。
我正在尝试根据在所选维度“当前订单日期”中选择的值,找到连接到不同维度的度量(与预测周关联的预测金额)。
链接成员函数是我想到的,并且偶然使用。在我之前工作的那个人为计算出的成员提出了这个查询:
<code>
(
LINKMEMBER
(
[Order Date].[Order Calendar].[!@Current Order Date@!].PARENT
, [Forecast Date].[Order Calendar]
)
,[Measures].[Forecast Amount]
,[Order Date].[Order Calendar].[All]
)
</code>
我现在的任务是对此查询进行更多更改(不同的度量和维度等)。
我的问题是上面的整体查询中的第三个参数/参数,[订单日期]。[订单日历。[全部],(不是链接成员位,我知道它是如何工作的)。
我对伪英语中的上述陈述的解释是,&#34;对于由第一个参数(LINKMEMBER语句)生成的成员或成员集,返回相应的度量金额(预测金额)&#34;但是对于我的生活,我无法弄清楚第三个论点的作用以及它是否是多余的。该查询确实以其当前形式工作,因此无论我是否删除它,我都想知道我为什么要这样做。
我试着查看这是否与查询范围有关,但它没有包含SCOPE关键字,并且未在&#34;第三个参数&#34;上找到任何搜索结果。据我所知,这与子立方体等没有关系,但我很高兴能够得到纠正。
非常感谢任何我应该寻找的输入或指示。
(如果我错过了其他一些搜索条件,请道歉)
谢谢, 小号
编辑时添加了以便在测试FrankPI的答案时添加示例
谢谢FrankPI。花了一段时间来消化,但最终通过阅读你的评论并提出一个例子得到它。
如果我理解正确,没有第三个参数,那么由于前两个参数而返回的Measure会被当前行中出现的任何内容(如此)进行子设置(/切片)。如果两者之间存在关系,那就罚款了。
<code>
with
member [measures].[x1] as
(
LINKMEMBER
(
[Order Date].[Order Calendar].[Trading Week].&[2014]&[47]
, [Forecast Date].[Order Calendar]
)
,
[Measures].[Forecast Amount]
)
select
{
[measures].[x1]
}
on 0,
{
[Forecast Date].[Order Calendar].[Trading Week].&[2014]&[47]
}
on 1
from [Cube]
</code>
但是当下面发生(没有关系)时,除非建立了上下文,否则返回Null,如此
<code>
with
member [measures].[y1] as
sum
(
LINKMEMBER
(
[Order Date].[Order Calendar].currentmember
, [Forecast Date].[Order Calendar]
)
,
[Measures].[Forecast Amount]
)
member [measures].[y2] as
(
LINKMEMBER
(
[Order Date].[Order Calendar].currentmember
, [Forecast Date].[Order Calendar]
)
,
[Measures].[Forecast Amount]
,
[Order Date].[Order Calendar].[All]
)
select
{
[measures].[y1] // returns null
,
[measures].[y2] // returns value
}
on 0,
{
[Order Date].[Order Calendar].[Trading Week].&[2014]&[47]
}
on 1
from [Cube]
</code>
感谢您的回答!
答案 0 :(得分:0)
第三个参数更改Order Calendar
层次结构的上下文以使用所有订单日期,而不仅仅是当前订单日期。
LinkMember
更改了计算发生的Forecast Date
当前成员,但不会更改来自环境的任何Order Calendar
currentMember(例如当前行/列,WHERE条件) )。