Hub documentation

SQL 控制台:在浏览器中查询 Hugging Face 数据集

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SQL 控制台:在浏览器中查询 Hugging Face 数据集

您可以使用 SQL 控制台在浏览器中对数据集运行 SQL 查询。SQL 控制台由 DuckDB WASM 提供支持,完全在浏览器中运行。您可以从 Data Studio 访问 SQL 控制台。

要了解 SQL Console 的更多信息,请参阅 SQL Console 博客文章。

通过 SQL 控制台,您可以:

  • 在数据集上运行 DuckDB SQL 查询(查看 SQL 代码片段 以获取实用查询)
  • 通过链接与他人共享查询结果(查看此示例)
  • 将查询结果下载为 Parquet 或 CSV 文件
  • 使用 iframe 将查询结果嵌入到您自己的网页中
  • 使用自然语言查询数据集

您还可以通过 CLI 在本地使用 DuckDB,通过 hf:// 协议查询数据集。有关更多信息,请参阅 DuckDB Datasets 文档。SQL Console 提供了一个便捷的 Copy to DuckDB CLI 按钮,可生成用于创建视图并在 DuckDB CLI 中执行查询的 SQL 查询。或者,使用 hf datasets sql 在终端或脚本中运行相同的查询。

示例

过滤

SQL 控制台让数据集的筛选变得非常简单。例如,如果你想筛选 SkunkworksAI/reasoning-0.01 数据集中推理长度至少为 10 的指令和响应,可以使用以下查询:

以下是按推理长度排序的 SQL

SELECT *
FROM train
WHERE LENGTH(reasoning_chains) > 10;

直方图

许多数据集作者会选择在数据集中包含有关数据分布的统计信息。使用 DuckDB 的 histogram 函数,我们可以绘制某一列值的直方图。

例如,要绘制 Lichess/chess-puzzles 数据集中 Rating 列的直方图,可以使用以下查询:

有关 histogram 函数及其参数的更多信息,请参见此处。

from histogram(train, Rating)

正则表达式匹配

DuckDB 最强大的功能之一是对正则表达式的深度支持。您可以使用 regexp 函数来匹配数据中的模式。

使用 regexp_matches 函数,我们可以筛选 GeneralReasoning/GeneralThought-195k 数据集中包含 markdown 代码块的指令。

有关 DuckDB 正则表达式函数的更多信息,请参见此处。

SELECT *
FROM train
WHERE regexp_matches(model_answer, '```')
LIMIT 10;

保存的查询和嵌入 API

您可以通过编程方式创建、更新和删除 SQL Console 嵌入。嵌入是已保存的查询,可通过链接共享或嵌入到其他页面中。

创建嵌入:

POST /api/datasets/{namespace}/{repo}/sql-console/embed
Content-Type: application/json
Authorization: Bearer {token}

{
  "sql": "SELECT * FROM train LIMIT 10",
  "title": "Sample rows",
  "private": false,
  "views": [{"key": "default/train", "displayName": "Train", "viewName": "train"}]
}

更新嵌入:

PATCH /api/datasets/{namespace}/{repo}/sql-console/embed/{embed_id}
Content-Type: application/json
Authorization: Bearer {token}

{
  "sql": "SELECT * FROM train LIMIT 20",
  "title": "Updated title",
  "private": true
}

删除嵌入:

DELETE /api/datasets/{namespace}/{repo}/sql-console/embed/{embed_id}
Authorization: Bearer {token}

泄漏检测

泄漏检测是指识别数据集中的数据是否出现在多个划分中的过程,例如,测试集是否出现在训练集中。

有关泄漏检测的更多信息,请参见此处。

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;
Update on GitHub