SQL Console: 브라우저에서 Hugging Face 데이터셋 쿼리하기
SQL Console: 브라우저에서 Hugging Face 데이터셋 쿼리하기
SQL Console을 사용해 브라우저에서 데이터셋에 대해 SQL 쿼리를 실행할 수 있어요. SQL Console은 DuckDB WASM으로 구동되며 전적으로 브라우저에서 실행돼요. Data Studio에서 SQL Console에 접근할 수 있어요.
SQL Console에 대해 더 알아보려면 SQL Console 블로그 포스트를 확인해요.
출처: 문서
본문
SQL Console을 통해 다음을 할 수 있어요:
- 데이터셋에서 DuckDB SQL 쿼리 실행 (유용한 쿼리는 SQL Snippets 참고)
- 링크로 쿼리 결과를 다른 사람과 공유 (이 예시 확인)
- 쿼리 결과를 Parquet 또는 CSV 파일로 다운로드
- iframe을 사용해 쿼리 결과를 자신의 웹페이지에 임베드
- 자연어로 데이터셋 쿼리
[!TIP] DuckDB를 CLI를 통해 로컬에서 사용해
hf://프로토콜로 데이터셋을 쿼리할 수도 있어요. 자세한 내용은 DuckDB Datasets 문서를 참고해요. SQL Console은 뷰 생성과 DuckDB CLI에서 쿼리 실행을 위한 SQL을 생성해주는 편리한Copy to DuckDB CLI버튼을 제공해요. 또는hf datasets sql로 터미널·스크립트에서 같은 쿼리를 실행해요.
예시들
필터링
SQL Console은 데이터셋 필터링을 정말 쉽게 만들어줘요. 예를 들어 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 데이터셋에서 마크다운 코드 블록을 포함하는 명령을 필터링할 수 있어요.
DuckDB regex 함수에 대해 더 알아보세요.
SELECT *
FROM train
WHERE regexp_matches(model_answer, '```')
LIMIT 10;
저장된 쿼리와 Embeds API
SQL Console 임베드를 프로그래밍 방식으로 생성·업데이트·삭제할 수 있어요. 임베드는 링크로 공유하거나 다른 페이지에 임베드할 수 있는 저장된 쿼리예요.
임베드 생성:
POST /api/datasets/{namespace}/{repo}/sql-console/embed
Content-Type: application/json
Authorization: Bearer ***
{
"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 ***
{
"sql": "SELECT * FROM train LIMIT 20",
"title": "Updated title",
"private": true
}
임베드 삭제:
DELETE /api/datasets/{namespace}/{repo}/sql-console/embed/{embed_id}
Authorization: Bearer ***
누출 감지 (Leakage Detection)
누출 감지는 데이터셋의 데이터가 여러 스플릿에 존재하는지 식별하는 과정이에요. 예를 들어 테스트 세트가 학습 세트에도 있는지 여부를요.
누출 감지에 대해 자세히 알아보세요.
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;
더 알아보기 (Learn more)
- SQL Console은 DuckDB WASM 기반이라 브라우저에서 데이터셋 전체를 SQL로 쿼리해요.
- 쿼리 결과는 링크 공유·Parquet/CSV 다운로드·iframe 임베드가 가능해요.
- DuckDB 문서에서 SQL 문법을 더 확인해 보세요.