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

如何在Databricks SQL中动态遍历Delta版本统计product表历史行数?

动态统计Delta表各版本行数(Databricks SQL实现)

当然可以用纯Databricks SQL实现动态统计所有Delta版本的行数,不需要手动逐个编写@vX格式的CTE。核心思路是利用动态SQL,先通过DESCRIBE HISTORY获取全量版本信息,再自动拼接每个版本的行数查询语句,最后执行拼接后的完整SQL。

具体实现代码如下:

-- 定义变量存储动态生成的SQL语句
DECLARE @dynamic_sql STRING;

-- 收集所有版本的版本号、时间戳,拼接成UNION ALL格式的查询语句
WITH delta_versions AS (
  SELECT version, timestamp
  FROM DESCRIBE HISTORY product
)
SELECT STRING_AGG(
  CONCAT(
    'SELECT ', version, ' AS version, ''', timestamp, ''' AS version_timestamp, COUNT(*) AS row_count FROM product@v', version
  ),
  ' UNION ALL '
) INTO @dynamic_sql
FROM delta_versions;

-- 执行动态生成的SQL,返回所有版本的行数统计结果
EXECUTE IMMEDIATE @dynamic_sql;

代码说明:

  1. DESCRIBE HISTORY product:获取目标Delta表的全量版本历史,包含版本号(version)和对应时间戳(timestamp)。
  2. STRING_AGG:将每个版本的行数查询子句拼接成完整的UNION ALL查询,每个子句对应一个版本的行数统计逻辑。
  3. EXECUTE IMMEDIATE:执行动态生成的SQL语句,一次性返回所有版本的版本号、对应时间和行数数据。

如果需要过滤特定时间范围的版本,只需在delta_versions CTE中添加WHERE条件即可,例如:

WITH delta_versions AS (
  SELECT version, timestamp
  FROM DESCRIBE HISTORY product
  WHERE timestamp >= '2024-01-01'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:52:02