> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Форматирует строки в каждой группе с помощью формата вывода и возвращает отформатированные данные в виде строки.

# groupFormat

Форматирует строки в каждой группе с помощью формата вывода и возвращает отформатированные данные в виде строки. Это похоже на `formatRow`, но работает со всей группой и может использовать форматы на основе блоков.

<Warning>
  Все строки каждой группы накапливаются в памяти до формирования отформатированной строки. Для групп с очень большим количеством строк это может привести к значительному расходу памяти. Рассмотрите возможность использования `LIMIT` внутри подзапросов или разбиения больших групп, чтобы держать использование памяти под контролем.
</Warning>

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

```sql theme={null}
groupFormat(format)(x, y, ...)
```

<div id="parameters">
  ## Параметры
</div>

* `format` — Имя формата вывода, например `JSONEachRow`, `CSV`, `TabSeparated`.

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

* `x, y, ...` — Выражения, которые нужно представить в формате строк. Требуется как минимум один аргумент.

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

* [String](/docs/ru/reference/data-types/string) со строкой, содержащей форматированный вывод для группы.

<Note>
  Имена столбцов в форматированном выводе генерируются как `c1`, `c2`, ... в порядке следования аргументов.

  Порядок строк в форматированном выводе не гарантируется.

  Настройки формата запроса (например, `format_csv_delimiter` или `output_format_json_quote_64bit_integers`) сохраняются при инициализации агрегатной функции и используются для формирования вывода. Настройка `output_format_write_statistics` всегда принудительно отключена, поэтому форматированная строка никогда не содержит раздела статистики.
</Note>

<div id="null-handling">
  ## Обработка NULL
</div>

Как и `groupArray` и `groupConcat`, `groupFormat` пропускает строку, если любой из его аргументов равен `NULL`; такие строки не попадают в форматированный вывод. Если аргумент имеет тип Nullable, тип результата — `Nullable(String)`, а группа, в которой пропущены все строки, — так же, как и литеральный нетипизированный аргумент `NULL` типа `Nullable(Nothing)`, — возвращает `NULL` через универсальный комбинатор Null.

```sql theme={null}
SELECT groupFormat('JSONEachRow')(if(number = 0, NULL, number))
FROM numbers(3);
-- {"c1":1}
-- {"c1":2}
```

<div id="examples">
  ## Примеры
</div>

<div id="example-json">
  ### Базовое использование с JSONEachRow
</div>

```sql theme={null}
SELECT groupFormat('JSONEachRow')(number, toString(number))
FROM numbers(3);
```

Результат:

```text theme={null}
{"c1":0,"c2":"0"}
{"c1":1,"c2":"1"}
{"c1":2,"c2":"2"}
```

<div id="groupFormat">
  ## groupFormat
</div>

Добавленный в: v

Форматирует строки в каждой группе в указанном формате вывода и возвращает результат в виде строки.

Имя формата передаётся как параметр, а столбцы для форматирования — как аргументы.
В форматированном выводе имена столбцов генерируются как c1, c2, ...

**Синтаксис**

```sql theme={null}
groupFormat(format)(x, y, ...)
```

**Параметры**

* `format` — Имя формата вывода. Например, JSONEachRow, CSV, TabSeparated. [`String`](/docs/ru/reference/data-types/string)

**Аргументы**

* `x, y, ...` — Выражения, которые нужно отформатировать как строки. [`Any`](/docs/ru/reference/data-types/index)

**Возвращаемое значение**

Форматированный вывод для группы. [`String`](/docs/ru/reference/data-types/string)

**Примеры**

**Базовое использование**

```sql title=Query theme={null}
SELECT groupFormat('JSONEachRow')(number, toString(number))
FROM numbers(3)
```

```response title=Response theme={null}
{"c1":0,"c2":"0"}
{"c1":1,"c2":"1"}
{"c1":2,"c2":"2"}
```
