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

ClickHouse中SQL Unpivot操作的更优实现方案咨询

ClickHouse中更简洁高效的Unpivot实现方案

针对你的需求,推荐使用ClickHouse的ARRAY JOIN语法来实现Unpivot,相比多次UNION ALL,这个方案只需要扫描一次表,性能更优,代码也更简洁:

SELECT
    report_date,
    platform,
    metric,
    value
FROM platform_table
ARRAY JOIN
    ['viewers', 'effectivePlaytime', 'revenue'] AS metric,
    [toFloat32(viewers), effectivePlaytime, revenue] AS value

方案优势

  • 性能更优:原UNION ALL方案需要三次扫描表,而该方案仅扫描一次,在数据量较大时性能提升非常明显
  • 代码简洁:指标越多,对比效果越显著,后续新增指标只需在两个数组中添加对应元素即可
  • 类型兼容:通过toFloat32将UInt32类型的viewers转换为Float32,确保所有value字段类型统一,符合目标表结构要求

原方案的不足

多次UNION ALL会导致ClickHouse对同一张表执行多次全表扫描,当表数据量较大时,会增加磁盘IO和CPU消耗,同时代码冗余度高,维护成本也会随着指标数量增加而上升

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:28:14