ssas - MDX:计算过滤器中选择的成员数
问题描述
我有一个要放入过滤器的维度,并创建了计算成员,该成员应动态显示该维度中选定成员的数量。
该维度没有 All 成员。
所以这是我的尝试
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。
解决方案
与此同时,我找到了答案:
我在问题中写的查询实际上不是 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 会随之动态变化。
推荐阅读
- python - 爬取数据基于自动访问基于href的多个页面
- rabbitmq - RawRabbit 的问题:自主发送各种消息
- python - 仅在一列中导出制表符分隔的 CSV 文件
- arrays - 从 makeItem 崩溃中向下转换 NSCollectionViewItem
- google-sheets - 对范围 A:C 中最接近输入值 y 的值进行条件格式化
- python - 在 PyCharm 之外运行 PyCharm 项目
- excel - 使用 VBA 在特定列中打开具有选定数据的多个文本文件
- python - 连接python字典中的值
- databricks - Databricks 文件保存
- python - 在 docker 文件中将环境变量添加到 PYTHONPATH