代码之家  ›  专栏  ›  技术社区  ›  vldmrrdjcc

MDX:统计在筛选器中选择的成员数

  •  2
  • vldmrrdjcc  · 技术社区  · 7 年前

    我有一个要放入过滤器中的维度,并创建了计算成员,该成员应动态显示维度中所选成员的数量。

    维度没有“全部”成员。

    所以这是我的尝试

    with member [Measures].[Count1] as count(existing(([MyDimension].[MyDimensionHierarchy].members)))
    
    select  [Measures].[Count1] on 0
    from [MyCube] --  gives me 1 
    

    这个会给我2个正确的答案:

    with member [Measures].[Count1] as count(existing(([MyDimension].[MyDimensionHierarchy].members)))
    
    select  [Measures].[Count1] on 0
    from [MyCube]
    where ({[MyDimension].[MyDimensionHierarchy].[Member1], [MyDimension].[MyDimensionHierarchy].[Member2]})
    

    但是, 问题 当我使用上面的公式创建计算成员,并将count1拖动到Excel数据透视表中,并将myDimension拖动为筛选器时,当我对维度成员进行多次选择时,我希望该计数随着所选成员数的更改而动态更改。

    但count1始终等于1。

    1 回复  |  直到 7 年前
        1
  •  0
  •   vldmrrdjcc    7 年前

    与此同时,我找到了一个答案:

    我在问题中编写的查询实际上不是Excel透视表发送给多维数据集的查询。Excel透视表生成如下查询:

    SELECT  FROM (SELECT ({[MyDimension].[MyDimensionHierarchy].[Member1],[MyDimension].[MyDimensionHierarchy].[Member2]}) ON COLUMNS  
    FROM [MyCube]) 
    WHERE ([Measures].[Count1]) 
    

    这样做的方法是使用包含筛选成员的动态集:

    create dynamic set [SelectedMembers] as existing( [MyDimension].[MyDimensionHierarchy].members )
    

    然后:

    create member Measures.SelectedMembersCount as count([SelectedMembers])
    

    因此,当在过滤器中选择不同的成员时,这个集合会动态地更改,而selectedMembersCount也会随之动态地更改。