> ## 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.

> Позволяет одновременно обрабатывать файлы, соответствующие указанному пути, на нескольких узлах кластера. Инициатор устанавливает соединения с узлами-воркерами, раскрывает глоб-шаблоны в пути к файлу и делегирует задачи чтения файлов узлам-воркерам. Каждый узел-воркер запрашивает у инициатора следующий файл для обработки и повторяет это до тех пор, пока не будут выполнены все задачи (то есть пока не будут прочитаны все файлы).

# fileCluster

Позволяет одновременно обрабатывать файлы, соответствующие указанному пути, на нескольких узлах кластера. Инициатор устанавливает соединения с узлами-воркерами, раскрывает глоб-шаблоны в пути к файлу и делегирует задачи чтения файлов узлам-воркерам. Каждый узел-воркер запрашивает у инициатора следующий файл для обработки и повторяет это до тех пор, пока не будут выполнены все задачи (то есть пока не будут прочитаны все файлы).

<Info>
  ***

  Эта функция будет работать *корректно* только в том случае, если набор файлов, соответствующих исходно указанному пути, одинаков на всех узлах, а их содержимое согласовано между узлами.
  Если эти файлы различаются на разных узлах, возвращаемое значение нельзя определить заранее: оно зависит от того, в каком порядке узлы-воркеры запрашивают задачи у инициатора.
</Info>

<div id="syntax">
  ## Синтаксис
</div>

```sql theme={null}
fileCluster(cluster_name, path[, format, structure, compression_method])
```

<div id="arguments">
  ## Аргументы
</div>

| Аргумент             | Описание                                                                                                                                                                            |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `cluster_name`       | Имя кластера, используемое для построения набора адресов и параметров подключения к удалённым и локальным серверам.                                                                 |
| `path`               | Относительный путь к файлу из [user\_files\_path](/ru/reference/settings/server-settings/settings#user_files_path). Путь к файлу также поддерживает [глоб-шаблоны](#globs-in-path). |
| `format`             | [Формат](/ru/reference/formats) файлов. Тип: [String](/ru/reference/data-types/string).                                                                                             |
| `structure`          | Структура таблицы в формате `'UserID UInt64, Name String'`. Определяет имена столбцов и типы. Тип: [String](/ru/reference/data-types/string).                                       |
| `compression_method` | Метод сжатия. Поддерживаются следующие типы сжатия: `gz`, `br`, `xz`, `zst`, `lz4` и `bz2`.                                                                                         |

<div id="returned_value">
  ## Возвращаемое значение
</div>

Таблица с указанными форматом и структурой, содержащая данные из файлов, соответствующих указанному пути.

**Пример**

Для кластера с именем `my_cluster` и при следующем значении настройки `user_files_path`:

```bash theme={null}
$ grep user_files_path /etc/clickhouse-server/config.xml
    <user_files_path>/var/lib/clickhouse/user_files/</user_files_path>
```

Также, если в `user_files_path` каждого узла кластера находятся файлы `test1.csv` и `test2.csv`, а их содержимое одинаково на всех узлах:

```bash theme={null}
$ cat /var/lib/clickhouse/user_files/test1.csv
    1,"file1"
    11,"file11"

$ cat /var/lib/clickhouse/user_files/test2.csv
    2,"file2"
    22,"file22"
```

Например, эти файлы можно создать, выполнив на каждом узле кластера два следующих запроса:

```sql theme={null}
INSERT INTO TABLE FUNCTION file('file1.csv', 'CSV', 'i UInt32, s String') VALUES (1,'file1'), (11,'file11');
INSERT INTO TABLE FUNCTION file('file2.csv', 'CSV', 'i UInt32, s String') VALUES (2,'file2'), (22,'file22');
```

Теперь прочитайте данные из `test1.csv` и `test2.csv` с помощью табличной функции `fileCluster`:

```sql theme={null}
SELECT * FROM fileCluster('my_cluster', 'file{1,2}.csv', 'CSV', 'i UInt32, s String') ORDER BY i, s
```

```response theme={null}
┌──i─┬─s──────┐
│  1 │ file1  │
│ 11 │ file11 │
└────┴────────┘
┌──i─┬─s──────┐
│  2 │ file2  │
│ 22 │ file22 │
└────┴────────┘
```

<div id="globs-in-path">
  ## Глоб-шаблоны в пути
</div>

Все шаблоны, поддерживаемые табличной функцией [File](/ru/reference/functions/table-functions/file#globs-in-path), также поддерживаются в FileCluster.

<div id="related">
  ## См. также
</div>

* [Табличная функция File](/ru/reference/functions/table-functions/file)
