Hub documentation

Console SQL: Consulte conjuntos de dados do Hugging Face no seu navegador

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Console SQL: Consulte conjuntos de dados do Hugging Face no seu navegador

Você pode executar consultas SQL no conjunto de dados no navegador usando o SQL Console. O SQL Console é movido por DuckDB WASM e roda inteiramente no navegador. Você pode acessar o SQL Console a partir do Data Studio.

Para saber mais sobre o SQL Console, consulte o post no blog sobre o SQL Console.

Através do Console SQL, você pode:

  • Execute consultas SQL do DuckDB no conjunto de dados (consulte Fragmentos SQL para consultas úteis)
  • Compartilhe os resultados da consulta com outras pessoas por meio de um link (veja este exemplo)
  • Baixe os resultados da consulta para um arquivo Parquet ou CSV
  • Incorpore os resultados da consulta na sua própria página da web usando um iframe
  • Consulte conjuntos de dados com linguagem natural

Você também pode usar o DuckDB localmente por meio da CLI para consultar o dataset via o protocolo hf://. Consulte a documentação do DuckDB Datasets para mais informações. O SQL Console oferece um botão conveniente Copy to DuckDB CLI que gera a consulta SQL para criar views e executar sua consulta na CLI do DuckDB. Alternativamente, execute as mesmas consultas de um terminal ou script com hf datasets sql.

Exemplos

Filtragem

O Console SQL torna o filtragem de datasets muito fácil. Por exemplo, se você deseja filtrar o dataset SkunkworksAI/reasoning-0.01 para instruções e respostas com um comprimento de raciocínio de pelo menos 10, você pode usar a seguinte consulta:

Aqui está o SQL para ordenar pelo comprimento do raciocínio

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

Histograma

Muitos autores de conjuntos de dados escolhem incluir estatísticas sobre a distribuição dos dados no conjunto. Usando a função histogram do DuckDB, podemos plotar um histograma dos valores de uma coluna.

Por exemplo, para plotar um histograma da coluna Rating no dataset Lichess/chess-puzzles, você pode usar a seguinte consulta:

Saiba mais sobre a função `histogram` e os parâmetros aqui.

from histogram(train, Rating)

Correspondência de Expressões Regulares

Um dos recursos mais poderosos do DuckDB é o suporte profundo a expressões regulares. Você pode usar a função regexp para corresponder a padrões nos seus dados.

Usando a função regexp_matches, podemos filtrar o conjunto de dados GeneralReasoning/GeneralThought-195k para instruções que contenham blocos de código em markdown.

Saiba mais sobre as funções de regex do DuckDB aqui.

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

API de Consultas e Embeds Salvos

Você pode criar, atualizar e excluir incorporações do SQL Console programaticamente. As incorporações são consultas salvas que podem ser compartilhadas por meio de link ou incorporadas em outras páginas.

Crie um embed:

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"}]
}

Atualizar um embed:

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
}

Excluir um embed:

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

Detecção de Vazamento

A detecção de vazamento é o processo de identificar se os dados de um conjunto de dados estão presentes em múltiplas partições, por exemplo, se o conjunto de teste está presente no conjunto de treinamento.

Saiba mais sobre a detecção de vazamentos aqui.

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