Ssas MDX查询“;“与成员一起”;和和问题

Ssas MDX查询“;“与成员一起”;和和问题,ssas,mdx,Ssas,Mdx,我有一个类似的问题 WITH MEMBER [measures].[Count] AS SUM(([Location].[Hierarchy].[Zone].[1].Children),[Measures].[Length]) SELECT {[measures].[Count]} ON 0, {[Location].[Hierarchy].[Zone].&[1].Children} on 1 FROM [NTAP] 我是一个真正的MDX初学者,但从我的

我有一个类似的问题

   WITH MEMBER [measures].[Count] AS 
   SUM(([Location].[Hierarchy].[Zone].[1].Children),[Measures].[Length])
   SELECT {[measures].[Count]} ON 0,
   {[Location].[Hierarchy].[Zone].&[1].Children} on 1
   FROM [NTAP]
我是一个真正的MDX初学者,但从我的理解来看,这应该会给我一个包含所有1:s区儿童的列表,以及所有这些儿童的总和。问题是我得到了一个包含孩子们的列表,以及所有区域1:s长度的总和

我明白了:

1 103026769420
2 103026769420
3 103026769420
4 103026769420
但我想得到的是这样的东西

1 84984958
2 9494949
3 934883
4 9458948588
位置是一个层次结构,如:

分区儿童

1
   1
   2
   3
2
   1
   2
   3
编辑:可能应该说,我对member使用的原因是measure.length将在最终版本中使用Iif。但我甚至不能让它工作:(


edit2:固定拼写

对于区域1的每个子级,您将获得区域1的所有子级的总和

您可以将其改写为:

WITH MEMBER [Measures].[Count] AS 
   SUM([Location].[Hierarchy].CurrentMember.Children, [Measures].[Length])
SELECT {[Measures].[Count]} ON 0,
   {[Location].[Hierarchy].[Zone].&[1].Children} on 1
FROM [NTAP]

顺便说一句,[1]&[1]。如果不使用&指定名称,则使用-key。如果您的情况是key=name,则无需担心。

您将获得区域1中每个子级的所有子级的总和

您可以将其改写为:

WITH MEMBER [Measures].[Count] AS 
   SUM([Location].[Hierarchy].CurrentMember.Children, [Measures].[Length])
SELECT {[Measures].[Count]} ON 0,
   {[Location].[Hierarchy].[Zone].&[1].Children} on 1
FROM [NTAP]

顺便说一句,[1]&[1]。如果不使用&指定名称,则使用-key。如果您的情况是key=name,则无需担心。

使用L>0计算子项的查询将是:

WITH
MEMBER [Measures].[Count of Children with L more than 0] AS
    FILTER([Location].[Hierarchy].CurrentMember.Children,
           [Measures].[Length] > 0).COUNT
SELECT
{
    [Measures].[Count of Children with L more than 0]
} ON 0,
{
    [Location].[Hierarchy].[Zone].&[1]
} ON 1
FROM [Your Cube]

如果您选择行上的子项,这当然不起作用,因为这样会得到空值,因为它们是叶子,并且本身没有子项。

使用L>0计算子项的查询将是:

WITH
MEMBER [Measures].[Count of Children with L more than 0] AS
    FILTER([Location].[Hierarchy].CurrentMember.Children,
           [Measures].[Length] > 0).COUNT
SELECT
{
    [Measures].[Count of Children with L more than 0]
} ON 0,
{
    [Location].[Hierarchy].[Zone].&[1]
} ON 1
FROM [Your Cube]

如果您选择行上的子项,这当然不起作用,因为这样会得到空值,因为它们是叶子,并且本身没有子项。

这不起作用,我这次得到的只是1(空)2(空)3(空)4(空)区域1的子项下是否有子项?或者它们是叶子?如果它们是叶子,则不会得到有意义的结果。若要修复此问题,可以将查询更改为:将成员[Measures].[Count]作为SUM([Location].[Hierarchy].CurrentMember[Measures].[Length])选择0上的{[Measures].[Count},{[Location].[Hierarchy].[Zone].&[1]。children从[NTAP]超级感谢,就是这样,它是区域1下的叶子。我很难理解为什么这样做?对我来说,工作查询中的CurrentMember是区域1,而不是它下的叶子?嗯,在行轴上有区域1的子元素。因此,CurrentMember函数将给你它们,而不是区域1本身。顺便说一句,你可以也跳过SUM调用。如果您请求(location.currentmember,measure)的元组,您应该得到与您只处理一个成员相同的元组。从SUM开始的原因是,我想计算长度>0的区域1的子级,并计划使用SUM([location].[Hierarchy]。currentmember,Iif([Measures].[Length]>0,1,0)但这不起作用,我得到的所有行都是1,知道为什么吗?这不起作用,这次我得到的只是1(空)2(空)3(空)4(空)区域1的子项下是否有子项?或者它们是叶子?如果它们是叶子,则不会得到有意义的结果。若要修复此问题,可以将查询更改为:将成员[Measures].[Count]作为SUM([Location].[Hierarchy].CurrentMember[Measures].[Length])选择0上的{[Measures].[Count},{[Location].[Hierarchy].[Zone].&[1]。children从[NTAP]超级感谢,就是这样,它是区域1下的叶子。我很难理解为什么这样做?对我来说,工作查询中的CurrentMember是区域1,而不是它下的叶子?嗯,在行轴上有区域1的子元素。因此,CurrentMember函数将给你它们,而不是区域1本身。顺便说一句,你可以也跳过SUM调用。如果您请求(location.currentmember,measure)的元组,您应该得到与您只处理一个成员相同的元组。从SUM开始的原因是,我想计算长度>0的区域1的子级,并计划使用SUM([location].[Hierarchy]。currentmember,Iif([Measures].[Length] > 0 ,1,0)但是这不起作用,我得到的所有行都是1,知道为什么吗?对不起,我想我对度量的命名有点不好,度量。长度实际上不是区域1下的单个值。儿童。每个区域1下的长度值实际上可以>10000。儿童和我想计算每个儿童下的长度值。对不起,我的话g糟透了…抱歉,我认为我对度量的命名有点糟糕,度量。在区域1下,长度实际上不是一个单独的值。儿童。在每个区域1下,实际上可以有>10000个长度值。儿童和我想计算每个儿童下的长度值数。抱歉,我的措辞糟透了。。。