Hub documentation
SQL Console : interroger les jeux de données Hugging Face dans votre navigateur
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 pratiqueCopy to DuckDB CLIqui 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 avechf 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;