---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/user-guide/data-processing/operations/merge.md
  - https://ytsaurus.tech/docs/ru/user-guide/data-processing/operations/merge.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/user-guide/data-processing/operations/merge.md -->
# Merge

Операция Merge производит слияние входных таблиц в одну. На выходе получается таблица, множество строк которой равно объединению всех строк исходных таблиц. В зависимости от опции `mode` слияние выполняется по-разному:

* `mode = unordered` — происходит только объединение списков чанков исходных таблиц. Такой режим слияния работает по умолчанию;
* `mode = sorted` — производится объединение исходных таблиц с сохранением сортированности. Колонки, по которым должна быть отсортирована выходная таблица, задаются параметром `merge_by`;
* `mode = ordered` — сохраняется порядок чанков списка исходных таблиц. То есть если `T1 = (A1, A2), T2 = (B1, B2, B3)`, то `Merge(T1, T2) = (A1, A2, B1, B2, B3)`.

Общие параметры для всех типов операций описаны в разделе [Настройки операций](https://ytsaurus.tech/docs/ru/user-guide/data-processing/operations/operations-options.md).

У операции Merge поддерживаются следующие дополнительные параметры (в скобках указаны значения по умолчанию, если заданы):

* `mode` (unordered) — тип операции Merge, может принимать значения: `unordered`, `sorted`, `ordered`;
* `input_table_paths` — список входных таблиц с указанием полных путей (не может быть пустым);
* `output_table_path` — полный путь к выходной таблице;
* `combine_chunks` (false) — настройка, активирующая укрупнение чанков;
* `force_transform` (false) — принудительно прочесть все данные исходных таблиц;
* `merge_by` — список колонок, по которому следует производить sorted merge;
* `job_count`, `data_weight_per_job` (256 Mb) — опции, которые указывают сколько джобов должно быть запущено, имеют рекомендательный характер. Опция `job_count` имеет приоритет над `data_weight_per_job`. Если указать `job_count` меньшим, либо равным `total_input_row_count`, то для unordered и ordered merge гарантируется, что количество джобов будет точно соблюдено, если это не противоречит ограничению на максимальное число джобов в операции. В частности, если `job_count` равен `total_input_row_count`, то в каждый джоб попадёт ровно одна строка, если `job_count` равен единице, то будет запущен ровно один джоб. 
* `schema_inference_mode` (auto) — режим определения схемы. Доступные значения: auto, from_input, from_output. Подробности в разделе [Схема данных](https://ytsaurus.tech/docs/ru/user-guide/storage/static-schema.md#schema_inference).

В случае, когда опция `force_transform` имеет значение `false`, операция выполняется так, чтобы минимизировать количество запущенных джобов. В лучшем случае, объединение будет произведено на уровне метаинформации. Иначе все чанки обязательно будут прочитаны.

Помимо места на диске, данные расходуют чанковую квоту аккаунта, в котором находятся. Операцию Merge имеет смысл запускать и над одной таблицей, чтобы «укрупнить» существующие чанки. Для этого необходимо выставить опцию `combine_chunks=true`. Подробнее про квоты аккаунтов в разделе [Квоты](https://ytsaurus.tech/docs/ru/user-guide/storage/quotas.md).

## Пример спецификации

```yaml
{
  pool = "my_cool_pool";
  mode = "sorted";
  merge_by = [ "field1"; "field2" ];
  job_count = 100;
  input_table_paths = [ "//tmp/input_table1"; "//tmp/input_table2" ];
  output_table_path = "//tmp/output_table";
  combine_chunks = %true;
}
```
<!-- endsource: ru/_includes/user-guide/data-processing/operations/merge.md -->