You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MDX结果集过滤求助:仅保留Dimension A Value 1计数为1的行

MDX过滤:仅保留Dimension A Value 1对应的Count为1的行

我明白刚从SQL转MDX的痛苦——多维思维确实需要一点转换。你的需求是只保留那些**[Dimension A].[Value 1]对应的Count度量值等于1**的Entity行,完全忽略[Value 2]的Count数值,对吧?

先整理下你的结果集(修正了期望结果集中的笔误,核心逻辑不变):

原始结果集

Dimension A Value 1Dimension A Value 2Entity IDCount(Value1对应)Count(Value2对应)
11178190
110111141
11811251134
114011611
169118612

期望过滤后的结果集

Dimension A Value 1Dimension A Value 2Entity IDCount(Value1对应)Count(Value2对应)
11178190
11811251134
169118612

修改后的MDX语句

WITH 
SET [~COLUMNS] AS {[Dimension A].[Dimension A].[Value 1], [Dimension A].[Dimension A].[Value 2]}
SET [~ROWS] AS {[Entity].[Entity].[Entity ID].Members}
SELECT 
  NON EMPTY CrossJoin([~COLUMNS], {[Measures].[Count]}) ON COLUMNS,
  NON EMPTY Filter(
    [~ROWS],
    -- 核心过滤条件:当前行的Entity在Value1维度下的Count等于1
    ([Dimension A].[Dimension A].[Value 1], [Measures].[Count]) = 1
  ) ON ROWS
FROM [My Cube]

关键逻辑解释

  1. Filter函数的核心作用:MDX的Filter是对集合(这里是所有Entity ID成员)逐行判断条件,只有符合条件的成员才会留在最终的行集中。
  2. 多维上下文的指定:([Dimension A].[Dimension A].[Value 1], [Measures].[Count]) 是MDX的典型写法——它表示:针对当前行的Entity,计算当列维度固定为Value1时的Count值。这就是和SQL的核心区别:你需要明确指定要计算的维度上下文,而不是像SQL那样只写列名。
  3. 为什么之前的尝试失败:NonEmpty只会过滤掉所有度量值都为空的行,无法按特定维度成员的度量值筛选;如果Filter的条件没指定Value1的上下文,就无法精准定位到你要判断的那个Count值。

内容的提问来源于stack exchange,提问作者nooboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:18:16