DuckDB · The DuckDB team
Faster String Aggregations with Dimension Tables
Faster String Aggregations with Dimension Tables是DuckDB的免费实践教程(en)。前置条件:需要会写基本 SQL(GROUP BY、JOIN、窗口函数)并能在 DuckDB 中建表与导入 Parquet。
学会用星型模型的维表 + 窄整数键,改写按长重复字符串分组的分析查询,降低哈希聚合的成本与内存占用。
- 难度
- 见前置条件
- 类型
- 博客与教程 · 实践教程
- 语言
- en
- 规模
- 1 个课节
- 内容费用
- 免费
- 动手
- 需要动手环境
使用限制
浏览器即可在 DuckDB web shell 中跟做练习,无需账号;也可安装 DuckDB CLI 本地运行。
- 练习与作业
- 开课提示词尚未实际运行验证
学完你能
- 解释为什么在 DuckDB 中按长字符串 GROUP BY 比按整数键代价更高(哈希、逐字节比较、复制字符串、缓存与溢出)
- 用 count(DISTINCT ...) 测量列基数,并据此选择最窄的无符号整数类型(UTINYINT/USMALLINT/UINTEGER)作为键
- 用 row_number() OVER (ORDER BY ...) 为每个不同字符串生成有序、确定性的整数键,构建维表
- 用 LEFT JOIN 把事实表的字符串列替换为整数键,并说明 NULL 值在维表中的处理方式
- 在整数键上做聚合,必要时在最后一步再 join 回字符串,得到与原先相同的查询结果
- 了解完美哈希聚合(perfect_ht_threshold)在小而稠密的键范围下如何避免哈希
适合你吗
适合
适合已有 SQL 基础、使用 DuckDB 做分析型查询并关注分组聚合性能的数据工程或数据分析学习者。
暂不适合
不适合完全没写过 SQL、或想系统学习数据库理论而不打算实际跑查询的初学者。
需要先会
需要会写基本 SQL(GROUP BY、JOIN、窗口函数)并能在 DuckDB 中建表与导入 Parquet。
课程特点
- 内容侧重
- 按内容目录判断
- 练习与项目
- 按博文步骤在本地或网页 shell 复现两种写法,用 EXPLAIN ANALYZE 比较耗时与哈希表大小。
- 学习时长
- 1 个课节原站未给出统一学习时长;实际用时取决于已有基础。
- 内容费用
- 免费节选可直接读到完整教程正文与 SQL 示例,无付费墙或登录拦截。
常见问题
免费吗?
免费:节选可直接读到完整教程正文与 SQL 示例,无付费墙或登录拦截。实践无额外费用:示例数据从公开 Parquet URL 读取,DuckDB 与网页 shell 免费,网页未提及其他付费资源。
需要什么基础?
需要会写基本 SQL(GROUP BY、JOIN、窗口函数)并能在 DuckDB 中建表与导入 Parquet。软件、账号与硬件:无需特殊硬件;可用 DuckDB CLI 或网页版 shell,能联网读取示例 Parquet 数据即可。
有中文吗?
本站记录的语言是en;是否有中文字幕或译本本站未核实,请以原站为准。
怎么开始?
从原始资源入口开始:https://duckdb.org/2026/10/02/dimension-tables.html。本页“学前准备”列出环境与工具,“学习指南”给出开课提示词,可以在自己的电脑上按步骤开始。开课提示词尚未完整验证。练习与作业需要自备:开课提示词尚未实际运行验证。
来源与使用须知
版权与转载
- 课程材料未标明许可:仅供个人学习,转载、修改或商用前请先联系原作者。
- 本站只提供原始链接和学习指南,不转载、不镜像课程材料;引用时请注明原作者与出处。