文章 查看内容

如何实现维度重复分组合并统计数值数据的场景

如何实现维度重复分组合并统计数值数据的场景

106 0 产品实操 2026-3-18 16:58 发布者: 观小益

背景有些业务分析场景,需要对维度进行分组,一个维度可能被多次分组,并且需要合并统计数值数据,然后在筛选器里也需要可以选择设置的分组进行查询,这个可以如何实现?卡片自带的新建分组字段,虽然可以对字段进行 ...

背景

有些业务分析场景,需要对维度进行分组,一个维度可能被多次分组,并且需要合并统计数值数据,然后在筛选器里也需要可以选择设置的分组进行查询,这个可以如何实现?
卡片自带的新建分组字段,虽然可以对字段进行分组,但是一个维度值只能在一个分组内,无法实现重复分组。下面介绍如何通过新建计算实现一个字段值重复分组的需求。

一、业务需求说明

1. 原始字段

字段:大区

取值示例:其它、华北、西南、华东、华中、华南

2. 自定义分组规则

分组1:华东 + 华北

分组2:华东 + 华南

分组3:其他(除华东、华北、华南之外)

👉 特点:

  • 一个大区可以属于多个分组(如:华东)

  • 分组之间有重叠(华东在分组1和分组2)

3. 目标

实现以下能力:

  • ✔ 每个分组的数值汇总

  • ✔ 支持筛选器按分组查询

  • ✔ 支持一个大区被多个分组复用

二、实现总体方案

核心思路(三步):

1️⃣ 构造“分组数组”

2️⃣ explode 打平(多对多展开)

3️⃣ 按分组聚合统计

三、关键函数说明

1、条件判断,构造分组数组 if(大区 in (...), '分组名', null)

2、构造数组 array(...)

3、过滤空值  filter(array, x -> x is not null)

4、行展开  explode(...)

5、分组聚合  sum() over (partition by ...)

四、实操

1、在etl中新建计算字段 group_name
explode(
filter(
array(
if(大区 in ('华东','华北'), '分组1', null),
if(大区 in ('华东','华南'), '分组2', null),
if(大区 not in ('华东','华北','华南'), '分组3', null)
),
x -> x is not null
)
)
最终形成数据结构如下
  • 华东 → 同时属于 分组1 + 分组2

  • 华北 → 只属于 分组1

  • 华南 → 只属于 分组2

  • 其他 → 分组3

2、计算大区在各个分组内合并统计数值数据
sum([销售金额])over(partition by [group_name])

3、使用这个处理后数据集做卡片和筛选器,筛选字段 group_name,支持选择分组1 / 分组2 / 分组3,也可以用大区筛选,按实际业务需求选择。

本方案解决了:

✔ 多分组复用
✔ 分组重叠
✔ 分组筛选
✔ 聚合统计

核心一句话总结:用 array 构造分组 → explode 打平 → group by 聚合


路过

雷人

握手

鲜花

鸡蛋

评论

您需要登录后才可以发表言论 登录立即注册
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去评论 去发文 返回顶部
返回顶部