如何将计算成员添加到级别的所有成员?

Posted

技术标签:

【中文标题】如何将计算成员添加到级别的所有成员?【英文标题】:How to add a calculated member to all members of a level? 【发布时间】:2019-01-04 10:03:14 【问题描述】:

为了更详细地描述,我有一个立方体,其中包含有关大型财团(几家公司)的工人工资和其他费用的数据。因此,我创建了维度 Time、FeeType 和 CompanyWorkers。

我还在 CompanyWorkers 维度中创建了 CompanyHierarchy,显然是Company->Worker

现在我需要获取每家公司的费用平均值。我想这意味着我必须在 CompanyHierarchy 中创建一个计算成员。

我知道如何为单个成员做到这一点:

创建会员 CURRENTCUBE.[CompanyWorkers].[CompanyHierarchy].[Company].&1.[Average] 作为 ....

为我的多维数据集中的每个公司复制这行代码似乎不正确。我可以编写一个命令将平均值添加到每个公司吗?

UPD:我想要达到的结果是这样的: Sample

【问题讨论】:

【参考方案1】:

您需要有一个具有平均逻辑的计算度量。现在为您的层次结构调用此度量,它将为您提供每家公司的平均值。您不需要为每个成员添加它。要添加计算度量,您需要转到多维数据集中的计算选项卡。

编辑:添加了一个示例查询

您可以查看下面的示例,我更喜欢以这种方式计算平均值并将它们排列在 UI 上,使其看起来像您共享的屏幕截图

with member 
[Measures].[Reseller Sales AmountAverage]
as
case when [Geography].[Geography].currentmember is [Geography].[Geography].defaultmember then null 
else 
([Geography].[Geography].currentmember.parent,[Measures].[Reseller Sales Amount])/([Geography].[Geography].currentmember.parent,[Measures].[Reseller Order Quantity])
end
select 
[Measures].[Reseller Sales Amount],[Measures].[Reseller Order Quantity],[Measures].[Reseller Sales AmountAverage]
on columns,
[Geography].[Geography].members 
on rows 
from [Adventure Works]

现在,如果您想让它完全像您的图片一样显示,那么您可以采用您建议的方法,在每个级别添加平均成员。

【讨论】:

你为我的层次结构调用这个度量是什么意思?如果我添加这样的计算度量(为简单起见,我省略了平均逻辑): CREATE MEMBER CURRENTCUBE.[Measures].[Average] AS 1000, VISIBLE = 1;接下来我该怎么办? @Yuriy 我建议,与其将成员添加到您的 中,不如将其添加为衡量标准。该衡量标准背后的逻辑是工资总和除以不同员工的数量。现在,您还可以限制此度量以仅在使用您的公司维度时返回结果。这可以通过检查当前成员的默认值来完成。我希望我能够解释。如果您仍然遇到问题,请分享结果的屏幕截图,我将提供示例查询 感谢您的解释。也许我可以按照您提供的方式计算平均值,但方式有点不同。我已经用截图更新了这个问题。非常感谢一些示例查询 @Yuriy 不客气。当然我给你一个样品。我现在有点忙,但我一有时间就会尝试做。 @Yuriy 上面的查询有帮助吗?

以上是关于如何将计算成员添加到级别的所有成员?的主要内容,如果未能解决你的问题,请参考以下文章

将价值应用于 Pandas 枢轴级别的所有成员

Discord Py - 如何使用文本命令向公会的所有成员添加多个角色

SSAS - 类别维度 - 未知成员

Azure DevOps 集合级别自定义组

具有多个属性层次结构的计算成员 - MDX

Effective Java 3