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

Power BI中如何按条件汇总列并生成指定规则的汇总表?

在Power BI中按规则创建汇总表的解决方案

嘿,我刚好处理过类似的需求,这就给你一步步拆解怎么实现:

核心需求回顾

我们要从原始表生成满足以下规则的汇总表:

  • 每个id只保留唯一记录
  • 按id和今日日期分组,选出该id下出现次数最多的screen name
  • 如果同一个id下有多个screen name出现次数相同,取原始表中首次出现的那个

实现步骤&DAX代码

直接用Power BI的计算表功能,粘贴下面的DAX公式即可(记得把原始表替换成你实际的表名):

汇总表 = 
VAR 今日日期 = TODAY()
// 第一步:统计每个id+screen组合的出现次数
VAR 屏幕计数表 = 
    ADDCOLUMNS(
        SUMMARIZE(原始表, 原始表[id], 原始表[screen name]),
        "出现次数", CALCULATE(COUNT(原始表[id]), ALLEXCEPT(原始表, 原始表[id], 原始表[screen name]))
    )
// 第二步:给每个id下的screen按「出现次数降序+首次出现时间升序」排序
VAR 带排序的计数表 = 
    ADDCOLUMNS(
        屏幕计数表,
        "排序优先级",
        // 先按出现次数降序排名,次数越高排名越靠前
        RANKX(
            FILTER(屏幕计数表, [id] = EARLIER([id])),
            [出现次数],, DESC, DENSE
        ) +
        // 次数相同时,按首次出现时间升序,把首次出现的screen排在前面(除以1000避免影响主排名)
        RANKX(
            FILTER(屏幕计数表, [id] = EARLIER([id]) && [出现次数] = EARLIER([出现次数])),
            CALCULATE(MIN(原始表[记录日期]), ALLEXCEPT(原始表, 原始表[id], 原始表[screen name])),, ASC, DENSE
        ) / 1000
    )
// 第三步:筛选出每个id下排序优先级最高的记录,整理成汇总表
RETURN
    SELECTCOLUMNS(
        FILTER(带排序的计数表, [排序优先级] = 1),
        "唯一ID", [id],
        "统计日期", 今日日期,
        "最频繁屏幕名称", [screen name],
        "最高出现次数", [出现次数]
    )

代码细节解释

  1. 规则1(distinct ids):最后一步筛选排序优先级=1的记录,每个id只会保留一条符合要求的记录,自动实现去重。
  2. 规则2(取计数最高的screen):用RANKX按出现次数降序排名,确保出现次数最多的screen排在第一位。
  3. 规则3(计数相同取第一个screen):当出现次数相同时,额外按该screen name在原始表中的首次出现日期升序排序,这样最早出现的screen会被优先选中。如果你的原始表没有日期列,也可以换成MIN(原始表[行号])(需要先给原始表添加索引列),同样能实现取第一个出现的screen。

内容的提问来源于stack exchange,提问作者KARTHIKEYAN.A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 07:44:07