SQL 控制台:在浏览器中查询 Hugging Face 数据集
您可以使用 SQL 控制台在浏览器中对数据集运行 SQL 查询。SQL 控制台由 DuckDB WASM 提供支持,并在浏览器中完全运行。您可以通过单击数据集页面上的“**SQL 控制台**”徽章访问 SQL 控制台。
要了解有关 SQL 控制台的更多信息,请参阅 SQL 控制台博文。
通过 SQL 控制台,您可以
- 运行 DuckDB SQL 查询 在数据集上(查看 SQL 代码片段 获取有用的查询)
- 通过链接与他人共享查询结果(查看 此示例)
- 将查询结果下载到 parquet 文件
- 使用 iframe 将查询结果嵌入到您自己的网页中
您还可以通过 CLI 在本地使用 DuckDB,通过 `hf://` 协议查询数据集。有关更多信息,请参阅 DuckDB 数据集文档。SQL 控制台提供了一个方便的“复制到 DuckDB CLI”按钮,用于生成创建视图并在 DuckDB CLI 中执行查询的 SQL 查询。
示例
过滤
SQL 控制台使过滤数据集变得非常容易。例如,如果您想过滤 `SkunkworksAI/reasoning-0.01` 数据集中推理长度至少为 10 的指令和回复,您可以使用以下查询
在查询中,我们可以使用 `len` 函数获取 `reasoning_chains` 列的长度,并使用 `bar` 函数创建推理长度的条形图。
SELECT len(reasoning_chains) AS reason_len, bar(reason_len, 0, 100), *
FROM train
WHERE reason_len > 10
ORDER BY reason_len DESC
该 bar 函数是一个简洁的内置 DuckDB 函数,用于创建推理长度的条形图。
直方图
许多数据集作者选择在数据集中包含有关数据分布的统计信息。使用 DuckDB 的 `histogram` 函数,我们可以绘制列值的直方图。
例如,要绘制 `SkunkworksAI/reasoning-0.01` 数据集中 `reason_len` 列的直方图,您可以使用以下查询
了解有关 `histogram` 函数和参数的更多信息 此处。
FROM histogram(train, len(reasoning_chains))
正则表达式匹配
DuckDB 最强大的功能之一是对正则表达式的深度支持。您可以使用 `regexp` 函数匹配数据中的模式。
使用 regexp_matches 函数,我们可以过滤 `SkunkworksAI/reasoning-0.01` 数据集中包含 Markdown 代码块的指令。
了解有关 DuckDB 正则表达式函数的更多信息 此处。
SELECT *
FROM train
WHERE regexp_matches(instruction, '```[a-z]*\n')
limit 100
泄漏检测
泄漏检测是识别数据集中数据是否出现在多个拆分中的过程,例如,测试集是否出现在训练集中。
了解有关泄漏检测的更多信息 此处。
WITH
overlapping_rows AS (
SELECT COALESCE(
(SELECT COUNT(*) AS overlap_count
FROM train
INTERSECT
SELECT COUNT(*) AS overlap_count
FROM test),
0
) AS overlap_count
),
total_unique_rows AS (
SELECT COUNT(*) AS total_count
FROM (
SELECT * FROM train
UNION
SELECT * FROM test
) combined
)
SELECT
overlap_count,
total_count,
CASE
WHEN total_count > 0 THEN (overlap_count * 100.0 / total_count)
ELSE 0
END AS overlap_percentage
FROM overlapping_rows, total_unique_rows;