メインコンテンツへスキップ
メインコンテンツへスキップ

テーブル関数

テーブル関数は、テーブルを生成するための関数です。

ページ概要
azureBlobStorageAzure Blob Storage 内のファイルを選択・挿入するためのテーブル形式のインターフェイスを提供します。s3 関数と同様です。
azureBlobStorageCluster指定したクラスタ内の複数のノードで、Azure Blob Storage 上のファイルを並列に処理できるようにします。
clusterAllReplicasremote_servers セクションで設定されたクラスター内のすべての分片に対して、分散テーブルを作成することなくアクセスできるようにします。
deltaLakeAmazon S3 上の Delta Lake テーブルに対する読み取り専用のテーブルライクなインターフェイスを提供します。
deltaLakeClusterこれは deltaLake テーブル関数の拡張機能です。
dictionaryDictionary データを ClickHouse テーブルとして表示します。Dictionary エンジンと同様に動作します。
executableexecutable テーブル関数は、行を stdout に出力するスクリプト内で定義されたユーザー定義関数 (UDF) の出力に基づいてテーブルを作成します。
fileファイルに対して SELECT および INSERT を、テーブルと同様のインターフェースで実行できるテーブルエンジンです。s3 テーブル関数と同様の役割を持ちます。ローカルファイルを扱う場合は file() を使用し、S3、GCS、MinIO などのオブジェクトストレージ内のバケットを扱う場合は s3() を使用します。
fileClusterクラスタ内の複数ノードにまたがって、指定されたパスに一致するファイルを同時並行で処理できるようにします。イニシエータはワーカーノードへの接続を確立し、ファイルパス内のグロブを展開したうえで、ファイル読み取りタスクをワーカーノードに委譲します。各ワーカーノードは、次に処理するファイルを取得するためにイニシエータへ問い合わせを行い、すべてのタスクが完了する(すべてのファイルが読み取られる)までこれを繰り返します。
format指定された入力フォーマットに従って、引数からデータを解析します。structure 引数が指定されていない場合は、構造がデータから抽出されます。
gcsGoogle Cloud Storage 上のデータに対して SELECT および INSERT を行うためのテーブル形式のインターフェースを提供します。Storage Object User IAM ロールが必要です。
fuzzJSONJSON 文字列にランダムな揺らぎを加えます。
fuzzQuery指定されたクエリ文字列にランダムな揺らぎを与えます。
generateRandom指定されたスキーマに基づいてランダムなデータを生成します。そのデータを使ってテスト用テーブルを埋めることができます。すべての型がサポートされているわけではありません。
mergeTreeIndexMergeTree テーブルの index ファイルおよび marks ファイルの内容を表します。内部構造の確認に利用できます。
mergeTreeProjectionMergeTree テーブル内のあるプロジェクションの内容を表します。内部状態の調査に使用できます。
hdfsHDFS 内のファイルからテーブルを作成します。このテーブル関数は、url および file テーブル関数と同様のものです。
hdfsCluster指定したクラスター内の複数ノードから、HDFS 上のファイルを並列処理できるようにします。
hudiAmazon S3 上の Apache Hudi テーブルに対する読み取り専用のテーブル形式インターフェースを提供します。
ytsaurusテーブル関数を使用すると、YTsaurus クラスターからデータを読み込むことができます。
hudiCluster テーブル関数hudi テーブル関数の拡張です。Amazon S3 上の Apache Hudi テーブル内のファイルを、指定したクラスタ内の複数ノードで並列処理できます。
icebergAmazon S3、Azure、HDFS、またはローカルに保存された Apache Iceberg テーブルに対して、テーブルに類似した読み取り専用インターフェースを提供します。
paimonAmazon S3、Azure、HDFS、またはローカルに保存された Apache Paimon テーブルに対する読み取り専用のテーブルライクなインターフェイスを提供します。
icebergCluster指定されたクラスター内の複数ノードから Apache Iceberg のファイルを並列処理できるようにする、iceberg テーブル関数の拡張です。
paimonCluster指定したクラスタ内の複数ノード上で Apache Paimon のファイルを並列処理できるようにする paimon テーブル関数の拡張機能。
inputサーバーに送信された所定の構造のデータを、別の構造を持つテーブルに効率的に変換して挿入するためのテーブル関数。
jdbcJDBC ドライバーを介して接続されているテーブルを返します。
merge一時的な Merge テーブルを作成します。構造は、基になるテーブルのカラムの和集合を取り、共通の型を導出することで決定されます。
mongodbリモートの MongoDB サーバー上に保存されたデータに対して SELECT クエリを実行できるようにします。
mysqlリモート MySQL サーバー上に保存されたデータに対して、SELECT および INSERT クエリを実行できるようにします。
null指定した構造を持つ一時テーブルを Null テーブルエンジンで作成します。テストの記述やデモを行う際の利便性のために使用される関数です。
numbers任意の整数を指定できる単一の number カラムを持つテーブルを返します。
prometheusQueryTimeSeries テーブル内のデータを使用して Prometheus クエリを評価します。
prometheusQueryRangeTimeSeries テーブルのデータを使って Prometheus クエリを評価します。
timeSeriesDatatimeSeriesData は、テーブルエンジンが TimeSeries のテーブル db_name.time_series_table が使用するデータテーブルを返します。
timeSeriesMetricstimeSeriesMetrics は、テーブルエンジンが TimeSeries エンジンであるテーブル db_name.time_series_table で使用されるメトリクステーブルを返します。
timeSeriesSelectorTimeSeries テーブルから、セレクターでフィルタリングされ、指定された期間内のタイムスタンプを持つ時系列データを読み取ります。
timeSeriesTagstimeSeriesTags テーブル関数は、テーブルエンジンが TimeSeries エンジンであるテーブル db_name.time_series_table で使用される tags テーブルを返します。
zerosテスト用途で、短時間に多数の行を生成するために使用されます。system.zeros および system.zeros_mt システムテーブルと同様です。
generate_series (generateSeries)開始値から終了値までの整数(両端を含む)を含む、単一の generate_series カラム (UInt64) を持つテーブルを返します。
odbcODBC 経由で接続されているテーブルを返します。
postgresqlリモートの PostgreSQL サーバーに保存されているデータに対して、SELECT および INSERT クエリを実行できるようにします。
redisこのテーブル関数を使用すると、ClickHouse を Redis と連携させることができます。
remote, remoteSecureテーブル関数 remote を使用すると、分散テーブルを作成することなく、その場でリモートサーバーにアクセスできます。テーブル関数 remoteSecure は、安全な接続を使用する点を除けば、remote と同じです。
S3 テーブル関数Amazon S3 および Google Cloud Storage 内のファイルを選択および挿入するためのテーブルのようなインターフェイスを提供します。このテーブル関数は hdfs 関数と似ていますが、S3 固有の機能を提供します。
s3Clusters3 テーブル関数の拡張機能で、指定したクラスター内の多数のノードを使って、Amazon S3 および Google Cloud Storage 上のファイルを並列処理できます。
sqliteSQLite データベースに保存されたデータに対してクエリを実行できるようにします。
arrowFlightApache Arrow Flight サーバーで公開されたデータに対してクエリを実行できるようにします。
url与えられた formatstructure を用いて URL からテーブルを作成します
urlCluster指定したクラスタ内の多数のノードから、URL 上のファイルを並列に処理できるようにします。
valuesカラムに値を格納する一時ストレージを作成します。
viewサブクエリをテーブルとして扱えるようにします。この関数はビューの機能を実現します。
loopClickHouse の loop テーブル関数は、クエリ結果を無限ループで繰り返し返すために使用されます。

使用方法

テーブル関数は、SELECT クエリの FROM 句で使用できます。たとえば、file テーブル関数を使ってローカルマシン上のファイルから データを SELECT できます。

echo "1, 2, 3" > example.csv
./clickhouse client
:) SELECT * FROM file('example.csv')
┌─c1─┬─c2─┬─c3─┐
│  1 │  2 │  3 │
└────┴────┴────┘

現在のクエリ内でのみ利用可能な一時テーブルを作成するために、テーブル関数を使用することもできます。例えば、次のようにします。

SELECT * FROM generateSeries(1,5);
┌─generate_series─┐
│               1 │
│               2 │
│               3 │
│               4 │
│               5 │
└─────────────────┘

クエリの実行が完了すると、テーブルは削除されます。

テーブル関数を使うと、次の構文でテーブルを作成できます。

CREATE TABLE [IF NOT EXISTS] [db.]table_name AS table_function()

例:

CREATE TABLE series AS generateSeries(1, 5);
SELECT * FROM series;
┌─generate_series─┐
│               1 │
│               2 │
│               3 │
│               4 │
│               5 │
└─────────────────┘

最後に、テーブル関数を使用してテーブルにデータを INSERT することができます。例えば、前の例で作成したテーブルの内容を、再び file テーブル関数を使ってディスク上のファイルに書き出すことができます。

INSERT INTO FUNCTION file('numbers.csv', 'CSV') SELECT * FROM series;
cat numbers.csv
1
2
3
4
5
注記

allow_ddl 設定が無効になっている場合、テーブル関数は使用できません。