メインコンテンツまでスキップ

Hugging Faceデータの分析

Hugging Faceは、ユーザーが機械学習モデル、データセット、その他のリソースを保存、共有、および協力して構築できる人気の集中型プラットフォームです。Hugging Face Datasetリポジトリには、CSV、Parquet、JSONLなどの様々な形式のデータファイルが含まれている場合があります。

DorisはSQLを使用してHTTP table Valued Functionを通じてHugging Faceデータセットのデータに直接アクセスし、分析することができます。

注記

この機能はバージョン4.0.2以降でサポートされています。

機能

機能説明
アクセスプロトコルHTTPプロトコル経由でHugging Face Datasetにアクセス
型推論自動型推論をサポート
サポートされるファイル形式CSV、JSON、Parquet、ORC
データ操作CREATE TABLE AS SELECTINSERT INTO ... SELECTをサポート

パラメータはFile table Valued Functionと同じです。

URI構文

Hugging FaceデータセットにアクセスするためのURI形式は以下の通りです:

hf://datasets/<owner>/<repo>[@<branch>]/<path>
コンポーネント説明必須
ownerデータセット所有者Yes
repoデータセットリポジトリ名Yes
branchブランチ名、デフォルトは mainNo
pathファイルパス、ワイルドカードをサポートYes

ワイルドカード説明:

ワイルドカード説明
*単一ディレクトリレベル内の任意の文字にマッチ*/*.parquet は第1レベルサブディレクトリ内のすべてのParquetファイルにマッチ
**複数のディレクトリレベルを再帰的にマッチ**/*.parquet はすべてのレベルのParquetファイルにマッチ
[...]文字セット内の任意の単一文字にマッチtest-0000[0-9].parquet はtest-00000からtest-00009にマッチ

使用例

ケース1: 迅速なデータクエリ

ファイルをダウンロードせずに、SQLを使用してHugging Face上の公開データセットを直接クエリします。

例: fka/awesome-chatgpt-prompts リポジトリからCSVデータをクエリ:

SELECT COUNT(*) FROM
HTTP(
"uri" = "hf://datasets/fka/awesome-chatgpt-prompts/blob/main/prompts.csv",
"format" = "csv"
);

対応するデータファイル: https://huggingface.co/datasets/fka/awesome-chatgpt-prompts/blob/main/prompts.csv

例: ワイルドカードを使用して複数のファイルにマッチさせ、stanfordnlp/imdbリポジトリからParquetファイルをクエリする:

SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@main/*/*.parquet",
"format" = "parquet"
) ORDER BY text LIMIT 1;

対応するデータファイル: https://huggingface.co/datasets/stanfordnlp/imdb/blob/main/plain_text/test-00000-of-00001.parquet

ケース2: ローカルテーブルへのデータインポート

後続の分析のためにHugging FaceデータセットをDorisテーブルにインポートします。

方法1: CREATE TABLE AS SELECTを使用して新しいテーブルを作成し、データをインポートします:

CREATE TABLE hf_table AS
SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@script/dataset_infos.json",
"format" = "json"
);

対応するデータファイル: https://huggingface.co/datasets/stanfordnlp/imdb/blob/script/dataset_infos.json

方法2: INSERT INTO ... SELECTを使用して既存のテーブルにデータを挿入する:

INSERT INTO hf_table
SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@main/**/test-00000-of-0000[1].parquet",
"format" = "parquet"
) ORDER BY text LIMIT 1;

対応するデータファイル: https://huggingface.co/datasets/stanfordnlp/imdb/blob/main/plain_text/test-00000-of-00001.parquet

Case 3: プライベートデータセットへのアクセス

認証が必要なデータセットの場合、リクエストにToken認証を追加する必要があります。

手順:

  1. Hugging Faceアカウントにログインし、Access Token(hf_で始まる)を取得します。
  2. SQLのhttp.header.Authorizationプロパティを通じてTokenを渡します。

例:

SELECT * FROM
HTTP(
"uri" = "hf://datasets/gaia-benchmark/GAIA/blob/main/2023/validation/metadata.level1.parquet",
"format" = "parquet",
"http.header.Authorization" = "Bearer hf_MWYzOJJoZEymb..."
) LIMIT 1\G