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

Rank窗口函数异常:仅返回1值的问题排查求助

问题分析与解决方案

问题根源

你编写的RANK函数返回全1的原因是:内部的SUMMARIZECOLUMNS继承了外部SUMMARIZECOLUMNS的筛选上下文——也就是当前行的Year和Quarter,导致每个行对应的排名范围仅包含自身一行,因此每一行的排名都是1。

修正后的DAX代码

方案一:保留原RANK函数结构优化

EVALUATE
SUMMARIZECOLUMNS(
    'Calendar'[Year],
    'Calendar'[Quarter],
    "% Change Quarter", [% Change Quarter],
    "RNK", 
    RANK(
        DENSE,
        -- 清除当前季度筛选,保留年份筛选,获取当前年份下所有季度数据
        CALCULATETABLE(
            SUMMARIZECOLUMNS(
                'Calendar'[Year],
                'Calendar'[Quarter],
                "% Change Quarter", [% Change Quarter]
            ),
            ALL('Calendar'[Quarter])
        ),
        ORDERBY([% Change Quarter], DESC),
        PARTITIONBY('Calendar'[Year])
    )
)

方案二:使用更直观的RANKX函数

EVALUATE
SUMMARIZECOLUMNS(
    'Calendar'[Year],
    'Calendar'[Quarter],
    "% Change Quarter", [% Change Quarter],
    "RNK",
    RANKX(
        -- 定义当前年份下的所有季度为排名范围
        CALCULATETABLE(
            VALUES('Calendar'[Quarter]),
            ALLSELECTED('Calendar'[Year])
        ),
        [% Change Quarter],
        ,
        DESC,
        DENSE
    )
)

关键说明

核心是扩展排名范围:通过CALCULATETABLE + ALL('Calendar'[Quarter])清除当前行的季度筛选,让排名计算覆盖当前年份下的所有季度数据,这样就能得到正确的分区排名结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:16:12