Hub documentation

SQL Console : interroger les jeux de données Hugging Face dans votre navigateur

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SQL Console : interroger les jeux de données Hugging Face dans votre navigateur

Vous pouvez exécuter des requêtes SQL sur le jeu de données dans le navigateur à l’aide de la console SQL. La console SQL est propulsée par DuckDB WASM et s’exécute entièrement dans le navigateur. Vous pouvez accéder à la console SQL depuis Data Studio.

Pour en savoir plus sur la console SQL, consultez le article de blog sur la console SQL.

Via la console SQL, vous pouvez :

  • Exécuter des requêtes SQL DuckDB sur le jeu de données (consultez SQL Snippets pour des requêtes utiles)
  • Partager les résultats de la requête avec d'autres personnes via un lien (consultez cet exemple)
  • Télécharger les résultats de la requête dans un fichier Parquet ou CSV
  • Intégrez les résultats de la requête dans votre propre page web à l'aide d'une balise iframe
  • Interroger des jeux de données avec du langage naturel

Vous pouvez également utiliser DuckDB localement via l’interface en ligne de commande pour interroger le jeu de données via le protocole hf://. Consultez la documentation DuckDB Datasets pour plus d’informations. La console SQL propose un bouton pratique Copy to DuckDB CLI qui génère la requête SQL pour créer des vues et exécuter votre requête dans l’interface en ligne de commande DuckDB. Sinon, exécutez les mêmes requêtes depuis un terminal ou un script avec hf datasets sql.

Exemples

Filtrage

La console SQL facilite grandement le filtrage des jeux de données. Par exemple, si vous souhaitez filtrer le jeu de données SkunkworksAI/reasoning-0.01 pour les instructions et les réponses dont la longueur du raisonnement est d'au moins 10, vous pouvez utiliser la requête suivante :

Voici le SQL pour trier par longueur du raisonnement

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

Histogramme

De nombreux auteurs de jeux de données choisissent d’y inclure des statistiques sur la distribution des données. En utilisant la fonction histogram de DuckDB, nous pouvons tracer un histogramme des valeurs d’une colonne.

Par exemple, pour tracer un histogramme de la colonne Rating du jeu de données Lichess/chess-puzzles, vous pouvez utiliser la requête suivante :

En savoir plus sur la fonction `histogram` et ses paramètres ici.

from histogram(train, Rating)

Correspondance par expression régulière

L'une des fonctionnalités les plus puissantes de DuckDB est le support approfondi des expressions régulières. Vous pouvez utiliser la fonction regexp pour correspondre à des motifs dans vos données.

À l'aide de la fonction regexp_matches, nous pouvons filtrer le jeu de données GeneralReasoning/GeneralThought-195k pour les instructions contenant des blocs de code markdown.

En savoir plus sur les fonctions regex de DuckDB ici.

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

API des requêtes et des embeddings enregistrés

Vous pouvez créer, mettre à jour et supprimer des intégrations SQL Console de manière programmatique. Les intégrations sont des requêtes enregistrées qui peuvent être partagées par lien ou intégrées dans d'autres pages.

Créer un 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"}]
}

Mettre à jour un 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
}

Supprimer un embed :

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

Détection de fuites

La détection de fuite est le processus consistant à identifier si des données d'un jeu de données sont présentes dans plusieurs partitions, par exemple, si le jeu de test est présent dans le jeu d'entraînement.

En savoir plus sur la détection de fuites ici.

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