> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> HDFS 内のファイルからテーブルを作成します。このテーブル関数は、 url および file のテーブル関数に似ています。

# hdfs テーブル関数

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Not supported in ClickHouse Cloud
        </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Experimental feature. <u><a href="/docs/beta-and-experimental-features#experimental-features">Learn more.</a></u>
        </div>;
};

HDFS 内のファイルからテーブルを作成します。このテーブル関数は、[url](/ja/reference/functions/table-functions/url) および [file](/ja/reference/functions/table-functions/file) のテーブル関数に似ています。

<div id="syntax">
  ## 構文
</div>

```sql theme={null}
hdfs(URI, format, structure)
```

<div id="arguments">
  ## 引数
</div>

| 引数          | 説明                                                                                                                          |
| ----------- | --------------------------------------------------------------------------------------------------------------------------- |
| `URI`       | HDFS 内のファイルへの相対 URI。ファイルパスでは、読み取り専用モードで次のグロブを使用できます: `*`, `?`, `{abc,def}`、`{N..M}`。ここで、`N`、`M` は数値、`'abc'`、`'def'` は文字列です。 |
| `format`    | ファイルの[フォーマット](/ja/reference/formats)。                                                                                       |
| `structure` | テーブルの構造。形式は `'column1_name column1_type, column2_name column2_type, ...'` です。                                               |

<div id="returned_value">
  ## 戻り値
</div>

指定したファイル内のデータを読み書きするための、指定した構造のテーブル。

**例**

`hdfs://hdfs1:9000/test` にあるテーブルと、そこから先頭2行を選択する例:

```sql theme={null}
SELECT *
FROM hdfs('hdfs://hdfs1:9000/test', 'TSV', 'column1 UInt32, column2 UInt32, column3 UInt32')
LIMIT 2
```

```text theme={null}
┌─column1─┬─column2─┬─column3─┐
│       1 │       2 │       3 │
│       3 │       2 │       1 │
└─────────┴─────────┴─────────┘
```

<div id="globs_in_path">
  ## path 内のグロブ
</div>

パスではグロブを使用できます。ファイルは、接尾辞やプレフィックスだけでなく、パターン全体のパスに一致する必要があります。

* `*` — 空文字列を含み、`/` を除く任意の長さの文字列を表します。
* `**` — フォルダー内のすべてのファイルを再帰的に表します。
* `?` — 任意の 1 文字を表します。
* `{some_string,another_string,yet_another_one}` — `'some_string'`、`'another_string'`、`'yet_another_one'` のいずれかの文字列に展開されます。これらの文字列には `/` 記号を含めることができます。
* `{N..M}` — `>= N` かつ `<= M` の任意の数値を表します。

`{}` を使った構文は、[remote](/ja/reference/functions/table-functions/remote) および [file](/ja/reference/functions/table-functions/file) テーブル関数と似ています。

**例**

1. HDFS 上に次の URI を持つファイルがいくつかあるとします。

* 'hdfs\://hdfs1:9000/some\_dir/some\_file\_1'
* 'hdfs\://hdfs1:9000/some\_dir/some\_file\_2'
* 'hdfs\://hdfs1:9000/some\_dir/some\_file\_3'
* 'hdfs\://hdfs1:9000/another\_dir/some\_file\_1'
* 'hdfs\://hdfs1:9000/another\_dir/some\_file\_2'
* 'hdfs\://hdfs1:9000/another\_dir/some\_file\_3'

2. これらのファイルの行数を取得します。

```sql theme={null}
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')
```

3. これら2つのディレクトリ内のすべてのファイルの行数を確認します:

```sql theme={null}
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')
```

<Note>
  ファイル一覧に先頭がゼロの数値範囲が含まれる場合は、各桁ごとに波括弧を使った構文を使用するか、`?` を使用してください。
</Note>

**例**

`file000`、`file001`、...、`file999` という名前のファイルからデータを取得します:

```sql theme={null}
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/big_dir/file{0..9}{0..9}{0..9}', 'CSV', 'name String, value UInt32')
```

<div id="virtual-columns">
  ## 仮想カラム
</div>

* `_path` — ファイルのパス。型: `LowCardinality(String)`。
* `_file` — ファイル名。型: `LowCardinality(String)`。
* `_size` — ファイルサイズ (バイト単位) 。型: `Nullable(UInt64)`。サイズが不明な場合、値は `NULL` です。
* `_time` — ファイルの最終更新時刻。型: `Nullable(DateTime)`。時刻が不明な場合、値は `NULL` です。

<div id="hive-style-partitioning">
  ## use\_hive\_partitioning 設定
</div>

`use_hive_partitioning` を 1 に設定すると、ClickHouse はパス (`/name=value/`) 内の Hive スタイルのパーティション化を検出し、クエリでパーティションカラムを仮想カラムとして使用できるようになります。これらの仮想カラムには、パーティション化されたパス内と同じ名前が付きます。

**例**

Hive スタイルのパーティション化で作成された仮想カラムを使用する

```sql theme={null}
SELECT * FROM HDFS('hdfs://hdfs1:9000/data/path/date=*/country=*/code=*/*.parquet') WHERE date > '2020-01-01' AND country = 'Netherlands' AND code = 42;
```

<div id="storage-settings">
  ## ストレージ設定
</div>

* [hdfs\_truncate\_on\_insert](/ja/reference/settings/session-settings#hdfs_truncate_on_insert) - insert 前にファイルを切り詰めることを許可します。デフォルトでは無効です。
* [hdfs\_create\_new\_file\_on\_insert](/ja/reference/settings/session-settings#hdfs_create_new_file_on_insert) - フォーマットに接尾辞がある場合、insert のたびに新しいファイルを作成することを許可します。デフォルトでは無効です。
* [hdfs\_skip\_empty\_files](/ja/reference/settings/session-settings#hdfs_skip_empty_files) - 読み取り時に空のファイルをスキップすることを許可します。デフォルトでは無効です。

<div id="related">
  ## 関連項目
</div>

* [仮想カラム](/ja/reference/engines/table-engines#table_engines-virtual_columns)
