# Daft

[Daft](https://daft.ai/)は、あらゆるモダリティと規模に対して、シンプルで信頼性の高いデータ処理を提供する高性能なデータエンジンです。Daftは、Hugging Face datasetsからの読み取りおよび書き込みにネイティブで対応しています。

## はじめる

まずは、`huggingface`機能を有効にして`daft`をpipでインストールしてください:

```bash
pip install 'daft[huggingface]'
```

## 読み取る

Daft は、[`daft.read_huggingface()`](https://docs.daft.ai/en/stable/api/io/#daft.read_huggingface) 関数または `hf://datasets/` プロトコルを介して、Hugging Face Hub からデータセットを直接読み込むことができます。

### データセット全体を読み込む

[`daft.read_huggingface()`](https://docs.daft.ai/en/stable/api/io/#daft.read_huggingface) を使用すると、データセットを簡単に読み込むことができます。

```python
import daft

df = daft.read_huggingface("username/dataset_name")
```

これにより、データセット全体がDataFrameに読み込まれます。

### 特定のファイルの読み取り

データセット全体を読み込むだけでなく、データセットリポジトリ内の個々のファイルも読み込むことができます。[`daft.read_parquet()`](https://docs.daft.ai/en/stable/api/io/#daft.read_parquet)、[`daft.read_csv()`](https://docs.daft.ai/en/stable/api/io/#daft.read_csv)、[`daft.read_json()`](https://docs.daft.ai/en/stable/api/io/#daft.read_json) のようにパスを受け取る読み込み関数を使用し、`hf://datasets/` プレフィックスを指定して Hugging Face データセットのパスを指定します:

```python
import daft

# read a specific Parquet file
df = daft.read_parquet("hf://datasets/username/dataset_name/file_name.parquet")

# or a csv file
df = daft.read_csv("hf://datasets/username/dataset_name/file_name.csv")

# or a set of Parquet files using a glob pattern
df = daft.read_parquet("hf://datasets/username/dataset_name/**/*.parquet")
```

## 書き込み

Daftは、[`daft.DataFrame.write_huggingface`](https://docs.daft.ai/en/stable/api/dataframe/#daft.DataFrame.write_deltalake)を使用して、Hugging FaceのデータセットリポジトリにParquetファイルを書き込むことができます。Daftは、より高速な重複排除書き込みのために、[Content-Defined Chunking](https://huggingface.co/blog/parquet-cdc)と[Xet](https://huggingface.co/blog/xet-on-the-hub)をサポートしています。

基本的な使用方法:

```python
import daft

df: daft.DataFrame = ...

df.write_huggingface("username/dataset_name")
```

詳細については、[`DataFrame.write_huggingface`](https://docs.daft.ai/en/stable/api/dataframe/#daft.DataFrame.write_huggingface) の API ページを参照してください。

## 認証

[`daft.io.HuggingFaceConfig`](https://docs.daft.ai/en/stable/api/config/#daft.io.HuggingFaceConfig) の `token` パラメータは、認証が必要なリクエスト（プライベートなデータセットリポジトリの読み取りや、データセットリポジトリへの書き込みなど）に使用する Hugging Face のアクセストークンを指定するために使用できます。

指定されたトークンでデータセットを読み込む例:

```python
from daft.io import IOConfig, HuggingFaceConfig

io_config = IOConfig(hf=HuggingFaceConfig(token="your_token"))
df = daft.read_parquet("hf://datasets/username/dataset_name", io_config=io_config)
```

