小编Seb*_*THU的帖子

MDX Aggregate() 对单个参数有何作用?

我了解如何使用 MDX Aggregate() 和 Sum() 函数以及它们之间的差异。

(一个有趣的问题是,在层次结构中的较高级别上定义的度量之和超过该级别的子级,将该度量乘以子级的数量 - 而聚合“正确”仅返回在较高级别定义的值)。

MSDN上记录的语法是:

Aggregate(Set_Expression [ ,Numeric_Expression ])
Run Code Online (Sandbox Code Playgroud)

我总是将它与两个参数一起使用。但是,当仅提供 set_expression 参数时,Aggregate 会做什么呢?文档(同样来自 MSDN)非常晦涩:

如果未提供数值表达式,则此函数将使用为每个度量指定的默认聚合运算符来聚合当前查询上下文中的每个度量。

我在 MDX 查询中尝试过,如下所示:

WITH MEMBER WeekSummedTotal AS
Aggregate([Days].[WeeksAndDays].CurrentMember.Children)
SELECT 
{Measures.ThingoCount,Measures.WeekTotal,Measures.WeekSummedTotal} ON 0,
[Days].[WeeksAndDays].[WeekName] ON 1
FROM DateGRoupingTest
Run Code Online (Sandbox Code Playgroud)

这会做什么?聚合会聚合多维数据集的默认度量吗?或者设置Measures.Members?或者在 0 轴上指定的一组其他度量?

都不是!查询运行并返回结果,但计算度量 WeekSumTotal 显示 #Error,并出现完全无意义的错误:

聚合函数不能用于度量维度中的计算成员

现在这是事实,但完全无关紧要。不会计算查询中的任何其他度量,并且实际上多维数据集没有任何计算成员。那么 Aggregate() 在这里到底想做什么呢?此错误消息(再次,在 MDX 中!)是否完全具有误导性?

添加:下面的答案中的@whytheq 建议使用聚合创建计算度量,但在备用维度层次结构中而不是在度量维度中创建它。这有效,但前提是包含与所选“任何旧...”维度的 [All] 成员的交叉连接。在那里创建度量也使得不可能将两个(基本)度量和计算的度量放在同一轴上。如果我尝试这样做:

{Measures.ThingoCount,Measures.WeekTotal,[Ages].[Age Key].WeekSummedTotal} ON 0,
Run Code Online (Sandbox Code Playgroud)

我收到了非常无用的错误消息:

Members, tuples or sets must use the same hierarchies in the  function.
Run Code Online (Sandbox Code Playgroud)

我认为,这意味着“我无法在 Measures 成员和 [Ages].[Age Key] 成员之间使用 , …

ssas mdx

6
推荐指数
2
解决办法
7904
查看次数

MDX函数查找成员IsMemberOf是否有一组

这感觉就像一个非常基本的问题,因为它是我正在寻找的一个非常基本的功能.

我知道你可以这样做:

([Dimension].CurrentMember IS [Dimension].[AParticularMember])
Run Code Online (Sandbox Code Playgroud)

并且您获得逻辑1或0作为函数值.

但是你怎么做这种事情,没有在很多丑陋的OR中连接IS函数:

([Dimension].CurrentMember ISAMEMBEROF 
     {[Dimension].[AMember],[Dimension].[AnotherMember],[Dimension].[YetAnotherMember]}
)
Run Code Online (Sandbox Code Playgroud)

这只是一个基本的集合操作,只是在一个维度上,但我找不到那个该死的函数.我试过这个:

NOT(ISEMPTY(INTERSECT([Dimension].CurrentMember,
{[Dimension].[AMember],[Dimension].[AnotherMember],[Dimension].[YetAnotherMember]})))
Run Code Online (Sandbox Code Playgroud)

但它为每个维度成员返回True.我猜这是因为进入ISEMPTY函数的不是维度成员,而是元组

([Dimension].CurrentMember,[AnotherDimension].DefaultMember,  
[YetAnotherDimension].DefaultMember,... ,Measures.DefaultMember)
Run Code Online (Sandbox Code Playgroud)

我正在寻找的那种功能是否存在于MDX中?

ssas mdx

2
推荐指数
1
解决办法
1633
查看次数

标签 统计

mdx ×2

ssas ×2