一份让我生出“要是有这玩意儿就好了”的强烈冲动的 Junkdrawer 页面,就是 Quack Drawer v2。
回到数据工程还比较古老的年代,比如 2020 年,快速探索性数据分析通常意味着:启动 Jupyter、导入 pandas、抽样几行、检查 schema、数空值、跟日期列搏斗,然后问那个神圣的问题:“这个 CSV 又是什么新地狱?”
那个工作流至今仍然有用。Quack Drawer v2 不是要取代 notebook、pandas、Polars、数据仓库、dbt 或真正的数据管线。它解决的是更小、更早的问题:这个文件里到底有什么?
拖入一个 CSV、JSON、NDJSON 或 Parquet 文件,直接在浏览器里用 SQL 查询。无需服务器。无需上传。无需安装数据库。无需为了回答别人发给你的一个文件的简单问题而搞一堆仪式。
神奇之处在于 DuckDB 被编译成了 WebAssembly。DuckDB 为浏览器提供了真正的分析型 SQL 引擎,而 WebAssembly 让这个引擎在你的机器上本地运行。一个浏览器标签页就成了轻量级数据工作台。
这才是真正有用的部分。你可以检查 schema、统计行数、抽样记录、查看列类型、查找空值、找唯一值、按类别分组、过滤日期、验证假设,以及导出结果。V2 版本新增了列分析、更丰富的图表、地图、查询历史、保存的查询、Markdown 报告、设置项以及可选的 AI Analyst(AI 分析师)。
AI 层是可选的,这一点做得恰到好处。核心价值是本地检查。你的数据只留在浏览器里,除非你明确选择启用 AI。先看一眼行数据,自己跑一遍合理性检查。然后,如果觉得有用,再让 AI 帮你建议 SQL、解释结果、标记数据质量问题、推荐图表,或者帮你起草一份报告叙述。
这种组合在当下这个时代显得很合理。AI 现在能做很多 EDA 的重活,但我依然想亲自看看引擎盖下面。我希望模型的建议是经过实际文件验证的,而不是基于感觉。Quack Drawer v2 给了我在本地干这事的地方。
CSV 支持处理那种经典的“某人从某处导出这个文件,现在成了你的问题”的情况。JSON 和 NDJSON 适用于日志、API 输出和半结构化数据转储。Parquet 支持则是数据工程师们觉得有趣的部分,因为能在浏览器里打开一个 Parquet 文件并对它执行 SQL 查询,至今仍然有种科幻感。
这不是一个完整的数据平台,也不是你构建最终答案的地方。它是让你找到方向的地方。它存在于“在电子表格里打开文件然后受罪”和“启动一个正经 notebook”之间的空隙中。
这就是 Junkdrawer 的用途:不是取代正经工具,而是填补它们之间那些烦人的空白。
是的,这个名字就是你以为的那个意思。DuckDB 驱动查询引擎,Junkdrawer 提供理念。所以:Quack Drawer(呱呱抽屉)。
这就是当数据工程师在禽类相关的数据库品牌命名面前无人看管时会发生的事。
Quack Drawer v2: https://hmarquardt.github.io/junkdrawer/quack\_drawer\_v2.html
Junkdrawer 仓库: https://github.com/hmarquardt/junkdrawer