Перейти к основному содержанию
Динамический выбор столбцов — это мощная, но недооценённая возможность ClickHouse, которая позволяет выбирать столбцы с помощью регулярных выражений вместо того, чтобы перечислять каждый столбец отдельно. Вы также можете применять функции к совпадающим столбцам с помощью модификатора APPLY, что делает эту возможность особенно полезной для задач анализа и преобразования данных. Мы разберём, как использовать эту возможность, на примере датасета New York taxis, который также доступен в Песочнице ClickHouse.

Выбор столбцов, соответствующих шаблону регулярного выражения

Начнём с распространённого сценария: выберем только столбцы с _amount из набора данных NYC taxi. Вместо того чтобы вручную вводить имя каждого столбца, можно использовать выражение COLUMNS с регулярным выражением:
Попробуйте этот запрос в Песочнице ClickHouse
Этот запрос возвращает первые 10 строк и только те столбцы, чьи имена соответствуют шаблону регулярного выражения .*_amount (любые символы, за которыми следует “_amount”).
Допустим, мы также хотим вернуть столбцы, содержащие fee или tax. Мы можем обновить регулярное выражение, чтобы добавить их:
Попробуйте выполнить этот запрос в Песочнице ClickHouse

Выбор по нескольким шаблонам

Мы можем объединить несколько шаблонов столбцов в одном запросе:
Попробуйте этот запрос в Песочнице ClickHouse

Применение функций ко всем столбцам

Мы также можем использовать модификатор APPLY, чтобы применять функции сразу ко всем столбцам. Например, если мы хотим найти максимальное значение для каждого из этих столбцов, можно выполнить следующий запрос:
Попробуйте выполнить этот запрос в Песочнице ClickHouse
Или, возможно, вместо этого мы хотим увидеть среднее значение:
Попробуйте выполнить этот запрос в Песочнице ClickHouse
В этих значениях много знаков после запятой, но это легко исправить, объединив функции в цепочку. В этом случае мы сначала применим функцию avg, а затем — функцию round:
Выполните этот запрос в Песочнице ClickHouse
Но при этом средние значения округляются до целых чисел. Если мы хотим округлять, например, до 2 знаков после запятой, это тоже можно сделать. Помимо функций, модификатор APPLY принимает лямбда-выражение, что позволяет функции round округлять средние значения до 2 знаков после запятой:
Попробуйте выполнить этот запрос в Песочнице ClickHouse

Замена столбцов

Пока всё хорошо. Но предположим, что мы хотим изменить одно из значений, оставив остальные как есть. Например, мы хотим удвоить общую сумму и разделить налог MTA на 1.1. Это можно сделать с помощью модификатора REPLACE, который заменяет один столбец, не затрагивая остальные.
Попробуйте выполнить этот запрос в Песочнице ClickHouse

Исключение столбцов

Мы также можем исключить столбец с помощью модификатора EXCEPT. Например, чтобы убрать столбец tolls_amount, нужно написать следующий запрос:
Попробуйте этот запрос в Песочнице ClickHouse
Последнее изменение 12 июня 2026 г.