0

计算不是基于维度的主要属性

我有一个包含两个属性和一个事实表的维度。维度通过主要属性链接到事实表。属性具有相同的性质,即可能值的列表是相同的。其实这些都是相关的代码。

现在我可以从立方体中得到由两个属性分割的下一个结果:

Dim.Item    Dim.LinkedItem  Facts.Amount

Item1       Item3           10

Item2       Item3           20

Item3       Item2           50

如果我使用第二个属性,或者像这样:

Dim.LinkedItem  Facts.Amount

Item2           50

Item3           30

我需要一个可以让我得到下一个结果的计算:

Dim.Item    Dim.LinkedItem  LinkedAmount

Item1       Item3           0

Item2       Item3           50

Item3       Item2           30

换句话说,对于主要属性的每个值,我应该从事实表中获取总和,该值充当第二个属性。

请帮助编写此计算的 MDX 公式。

4

2 回答 2

0

您需要使用 "strtoval","currentmember" 和 "defaultmember" 。您的 Measure 定义如下

with member 
measures.t 
as 
strtoval('(Dim.Item.defaultmember,[Product].[Category].['+Dim.LinkedItem.currentmember.name+'],Facts.Amount)')
于 2019-10-23T15:37:39.417 回答
0

莫阿兹鲁布,

非常感谢您的回答!但我仍然没有得到正确的结果。为了澄清我的情况,我将使用带有真实示例的查询。

(1) 此查询返回 NULL,这是正确的:

select Time.Year.[Calendar 2018] on 0,
[Item].[Item Code].F268955709 on 1
from [SEL DEMO] where (Measures.[SellIn - Qty])

(2) 这将为链接项返回正确的值:

select Time.Year.[Calendar 2018] on 0,
[Item].[Linked Item].F268955709 on 1
from [SEL DEMO] where (Measures.[SellIn - Qty])

(3) 我尝试使用您的建议,但获得所有项目的价值:

with member Measures.[SellIn LI] as 
StrToValue('( Measures.[SellIn - Qty], [Item].[Item Code].DefaultMember, [' + [Item].[Linked Item].CurrentMember.Name + '])')
select crossjoin ([Item].[Item Code].F268955709,
                  Measures.[SellIn LI]) on 0
                  from [SEL DEMO] where (Time.Year.[Calendar 2018])

我尝试使用字符串 StrToValue('(Measures.[SellIn - Qty], [Item].[Item Code].DefaultMember, [' + [Item].[Linked Item].CurrentMember.Name + '])') 作为表达式在 SSAS 多维数据集中进行计算并获得所有项目的价值。

我替换了相同但没有 StrToValue 的代码并获得了相同的值...

with member Measures.[SellIn LI] as 
'([Item].[Item Code].DefaultMember, [Item].[Linked Item].CurrentMember, Measures.[SellIn - Qty])'
select crossjoin ([Item].[Item Code].F268955709,
                  Measures.[SellIn LI]) on 0
                  from [SEL DEMO] where (Time.Year.[Calendar 2018])

也许还有其他想法?我真的很感谢你的帮助。

于 2019-10-25T13:20:17.610 回答