DOMO平台如何将同维度多行日期数据合并为单行展示
DOMO 环境下同订单多行数据聚合成单行实现方案
你的需求核心是以order、Model、ord date三个字段为唯一分组键,将同组下分散在不同行的非空日期值合并到单行,同时对rec date按时间升序拆分出带序号的3列,以下是两种可直接落地的实现方式:
方法一:Magic ETL 上游数据预处理(推荐,适配性强)
这个方法是在数据流层面完成聚合,输出的数据集可以给所有卡片复用,性能更稳定,适合数据量较大、后续可能有订单记录数变动的场景,操作步骤如下:
- 配置分组聚合规则
拖入「Group By」组件,分组维度勾选order、Model、ord date,对剩余字段配置聚合规则:cur prm、prm date -7D、prm date -14 D、prm date -28 D四个字段全部选择MAX聚合,该规则会自动忽略空值,提取同组下唯一的非空日期值;聚合后可以直接把带多余空格的字段重命名为目标结构要求的prm date -14D、prm date -28D
- 生成rec date排序序号
拖入「Rank & Window」窗口函数组件,分区维度保持和分组维度一致(order、Model、ord date),排序规则选择rec date升序,计算类型选行号(Row Number),生成临时字段rec_rank,同组下的三条记录会自动被标记为1、2、3,对应最早到最晚的收货日期 - 行转列生成序号收货日期列
拖入「Pivot Rows to Columns」行转列组件,分区维度保持三个分组键不变,转置列选择刚生成的rec_rank,值字段选择rec date,聚合方式选MAX,转置后会自动生成rec date_1、rec date_2、rec date_3三个字段,重命名为目标要求的rec date 1、rec date 2、rec date 3即可 - 字段拼接对齐
将前面聚合得到的prm系列字段、cur prm字段,和行转列得到的rec date系列字段,通过三个分组键做内连接,调整字段顺序和目标表结构一致后输出即可。
方法二:卡片层Beast Mode直接计算(轻量场景适用)
如果不需要修改上游数据集,仅单张可视化卡片需要展示聚合后的结构,可以直接在卡片编辑页配置计算字段,操作步骤如下:
- 先将
order、Model、ord date三个字段拖入维度栏,聚合方式设置为「维度」(不做聚合) - 依次新建以下Beast Mode计算字段,直接拖入指标栏即可:
- 最新prm及历史prm字段,全部用MAX聚合提取非空值:
-- cur prm MAX(`cur prm`) -- prm date -7D MAX(`prm date -7D`) -- prm date -14D MAX(`prm date -14 D`) -- prm date -28D MAX(`prm date -28 D`)- 三个收货日期字段,利用日期统计函数直接提取对应值:
-- rec date 1 最早的收货日期 MIN(`rec date`) -- rec date 2 中间时间的收货日期 MEDIAN(`rec date`) -- rec date 3 最晚的收货日期 MAX(`rec date`)
注意:该方法仅适合同一个订单固定对应3条收货记录的场景,如果后续每个订单的收货记录数有变动,中位数、最大最小值的逻辑会出错,优先用Magic ETL的方案。
内容的提问来源于stack exchange,提问作者user3369545
相关产品推荐
相关产品推荐

