我有如下表的数据,其中 Expected Shipment Amount New 实际上是每次 claim 计数的平均发货量,但我无法正确汇总(总计应为 26.3
,不是 0
)。有谁知道如何做到这一点?
CliID | Claim Count | Expected Shipment Amount | CliId Count Expected Shipment Amount New
All | 5 | 61.8 | 2 | 0
159061| (null) | (null) | (null) | (null)
159063| (null) | (null) | (null) | (null)
166759| 2 | 34.2 | 1 | 17.1
166769| (null) | (null) | (null) | (null)
223983| 3 | 27.6 | 1 | 9.2
这个预成员(member)应该计算每个单独的 CliID 的平均值,如果没有 Expected Shipment Amount 则返回 null:
CREATE MEMBER CURRENTCUBE.[Measures].[Expected Shipment Amount Pre]
AS IIf(IsLeaf([Claim].[CliID].currentmember),
([措施].[预期装运量]/[措施].[ claim 数量]),0),
可见 = 0;
然后这是应该可见的,以便正确聚合所有内容:
CREATE MEMBER CURRENTCUBE.[Measures].[Expected Shipment Amount 新]
AS SUM([措施].[预期装运量预]),
VISIBLE=1;
很明显,在聚合级别,它正在查看 Expected Shipment Amount Pre
并返回 0
,因为聚合本身不是叶子,但对于聚合我希望它计算出所有的 child ,然后将它们加起来。我怎样才能做到这一点?
最佳答案
在你的第二步,你应该使用
CREATE MEMBER CURRENTCUBE.[Measures].[Expected Shipment Amount New]
AS SUM(EXISTING [Claim].[CliID].[CliID].Members, [Measures].[Expected Shipment Amount Pre]),
VISIBLE=1;
我。 e.对 CliID
级别的成员求和。
编辑
您可以尝试加快速度的方法是更多地依赖内置的 Analysis Services 聚合。为此,根据事实表中的 Expected Shipment Amount
列创建一个物理度量 Expected Shipment Amount New
,并设置其聚合函数求和。然后,在计算脚本中,只需添加
SCOPE([Claim].[CliID].[CliID].Members);
[Measures].[Expected Shipment Amount New] = [Measures].[Expected Shipment Amount] / [Measures].[Claim Count];
END SCOPE;
这将用平均计算覆盖叶级别上“新的预期装运量”的计算,但不会说明有关 CliID
属性层次结构的 All
级别的任何内容.因此,对于此级别,应该进行指定的度量聚合,即 sum
。
关于mdx - 在 MDX 中,如何对子成员执行计算然后聚合这些子成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26489471/