Skip to main content
動的カラム選択 は、各カラムを個別に指定する代わりに正規表現を使ってカラムを選択できる、強力でありながらあまり活用されていない ClickHouse の機能です。さらに、APPLY 修飾子を使って一致したカラムに関数を適用することもできるため、データ分析や変換作業で非常に役立ちます。 この機能の使い方を、ニューヨークのタクシーデータセット を使って学んでいきます。このデータセットは ClickHouse SQL playground でも確認できます。

パターンに一致するカラムを選択する

まずはよくある例から始めましょう。NYC taxi データセットから、_amount を含むカラムだけを選択します。各カラム名を手入力する代わりに、正規表現を使った COLUMNS 式を使用できます。
このクエリを SQL Playground で試す
このクエリは最初の 10 行を返しますが、名前がパターン .*_amount (任意の文字列の後に “_amount” が続く) に一致するカラムだけを対象にしています。
fee または tax を含むカラムも返したいとします。 その場合は、それらも含めるように正規表現を更新できます。
SQL Playgroundでこのクエリを試す

複数のパターンの選択

1つのクエリで複数のカラムパターンを組み合わせることができます:
このクエリをSQL Playgroundで試す

すべてのカラムに関数を適用する

APPLY 修飾子を使うと、すべてのカラムに対して関数を適用することもできます。 たとえば、それぞれのカラムの最大値を求めるには、次のクエリを実行します。
このクエリを SQL Playground で試す
あるいは、代わりに平均を見てみましょう:
このクエリをSQL Playgroundで試す
これらの値には小数点以下の桁が多く含まれていますが、幸い、関数を組み合わせることで調整できます。この場合は、まず avg 関数を適用し、その後に round 関数を適用します。
このクエリを SQL Playground で試す
ただし、これでは平均値が整数に丸められてしまいます。たとえば小数点以下2桁に丸めたい場合も、同様に対応できます。APPLY 修飾子は関数だけでなくラムダも受け取れるため、平均値を小数点以下2桁に丸めるように round 関数を柔軟に適用できます:
このクエリをSQL Playgroundで試す

カラムの置き換え

ここまでは順調です。では、ほかの値はそのままにして、そのうちの1つだけを調整したいとします。たとえば、合計金額を2倍にし、MTA tax を1.1で割りたい場合です。これには REPLACE 修飾子を使用します。これにより、ほかのカラムはそのままにして、1つのカラムだけを置き換えられます。
SQL Playgroundでこのクエリを試す

カラムの除外

EXCEPT 修飾子を使って、カラムを除外することもできます。たとえば、tolls_amount カラムを除外するには、次のクエリを記述します。
SQL Playgroundでこのクエリを試す
最終更新日 2026年7月3日