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

テーブル関数

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

ページ説明
azureBlobStorageAzure Blob Storage 内のファイルを選択および挿入するためのテーブル形式のインターフェイスを提供します。s3 関数に似ています。
azureBlobStorageCluster指定したクラスタ内の多数のノードで、Azure Blob Storage 上のファイルを並列処理できるようにします。
clusterAllReplicasremote_servers セクションで設定されたクラスター内のすべての分片に、分散テーブルを作成することなくアクセスできるようにします。
deltaLakeAmazon S3 上の Delta Lake テーブルに対する読み取り専用のテーブル形式インターフェイスを提供します。
deltaLakeClusterこれは deltaLake テーブル関数の拡張です。
dictionaryDictionary のデータを ClickHouse テーブルとして参照できます。Dictionary エンジンと同様に動作します。
executableexecutable テーブル関数は、行を stdout(標準出力)に出力するスクリプト内で定義されたユーザー定義関数 (UDF) の出力を基にテーブルを作成します。
files3 テーブル関数と同様に、ファイルに対して SELECT および INSERT を行うためのテーブル形式のインターフェイスを提供するテーブルエンジンです。ローカルファイルを扱う場合は file() を使用し、S3、GCS、MinIO などのオブジェクトストレージ内のバケットを扱う場合は s3() を使用します。
fileCluster指定されたパスに一致するファイルを、クラスタ内の複数ノードで同時に処理できるようにします。イニシエーターはワーカーノードへの接続を確立し、ファイルパス内のグロブを展開し、ファイル読み取りタスクをワーカーノードに委譲します。各ワーカーノードは、次に処理すべきファイルを取得するためイニシエーターに問い合わせを行い、すべてのタスクが完了するまで(すべてのファイルが読み取られるまで)これを繰り返します。
format指定された入力フォーマットに従って、引数で渡されたデータを解析します。structure 引数が指定されていない場合は、構造はデータから自動的に抽出されます。
gcsGoogle Cloud Storage からデータを SELECT および INSERT するためのテーブル形式のインターフェイスを提供します。Storage Object User IAM ロールが必要です。
fuzzJSON指定した JSON 文字列にランダムな変化を加えます。
fuzzQuery指定したクエリ文字列にランダムな変化を加えます。
generateRandom指定したスキーマに従ってランダムなデータを生成します。そのデータでテスト用テーブルを埋めることができます。一部の型はサポートされていません。
mergeTreeIndexMergeTree テーブルの索引ファイルおよびマークファイルの内容を表します。内部の状態を確認するために使用できます。
mergeTreeProjectionMergeTree テーブル内のあるプロジェクションの内容を表します。内部の状態を確認するために使用できます。
hdfsHDFS 上のファイルからテーブルを作成します。このテーブル関数は、url および file テーブル関数と同様です。
hdfsCluster指定したクラスター内の複数ノードから HDFS 上のファイルを並列に処理できるようにします。
hudiAmazon S3 上の Apache Hudi テーブルに対する読み取り専用のテーブル形式インターフェイスを提供します。
ytsaurusYTsaurus クラスターからデータを読み取るためのテーブル関数です。
hudiCluster テーブル関数hudi テーブル関数の拡張です。指定したクラスタ内の多数のノードから、Amazon S3 上の Apache Hudi テーブルのファイルを並列に処理できます。
paimonAmazon S3、Azure、HDFS、またはローカルに保存された Apache Paimon テーブルに対して、読み取り専用のテーブル形式インターフェイスを提供します。
icebergAmazon S3、Azure、HDFS、またはローカルに保存されている Apache Iceberg テーブルに対して、読み取り専用のテーブル形式インターフェースを提供します。
paimonCluster指定したクラスター内の複数ノードから Apache Paimon のファイルを並列処理できるようにする paimon テーブル関数の拡張機能。
icebergCluster指定したクラスター内の複数ノードから Apache Iceberg のファイルを並列処理できるようにする iceberg テーブル関数の拡張です。
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 が利用するメトリクステーブルを返します。
timeSeriesSelectorセレクタでフィルタリングされた TimeSeries テーブルから、指定した時間範囲内のタイムスタンプを持つ時系列データを読み取ります。
timeSeriesTagstimeSeriesTags テーブル関数は、テーブルエンジンが TimeSeries エンジンであるテーブル db_name.time_series_table が使用するタグテーブルを返します。
zerosテスト目的で多数の行を最も高速に生成するために使用されます。system.zeros および system.zeros_mt システムテーブルに類似しています。
generate_series (generateSeries)単一の generate_series カラム (UInt64 型) を持つテーブルを返し、そのカラムには start から stop までの両端を含む整数が格納されます。
odbcODBC を介して接続されたテーブルを返します。
postgresqlリモート PostgreSQL サーバー上に保存されているデータに対して SELECT および INSERT クエリを実行できるようにします。
redisこのテーブル関数を使用すると、ClickHouse を Redis と連携させることができます。
remote, remoteSecureテーブル関数 remote を使用すると、分散テーブルを作成することなく、オンザフライでリモートサーバーにアクセスできます。テーブル関数 remoteSecure は、安全な接続を使用する点を除き、remote と同様です。
S3 テーブル関数Amazon S3 と Google Cloud Storage 内のファイルに対して SELECT/INSERT を行うための、テーブル形式のインターフェイスを提供します。このテーブル関数は hdfs 関数に似ていますが、S3 固有の機能を提供します。
s3Clusters3 テーブル関数を拡張したもので、指定したクラスター内の複数のノードで Amazon S3 および Google Cloud Storage 上のファイルを並列処理できるようにします。
sqliteSQLite データベースに保存されているデータに対してクエリを実行できるようにします。
arrowFlightApache Arrow Flight サーバーで公開されているデータに対してクエリを実行できるようにします。
url指定された formatstructureURL からテーブルを作成します
urlCluster指定したクラスタ内の多数のノードで、URL から取得したファイルを並列処理できるようにします。
valuesカラムを値で埋めるための一時ストレージを作成します。
viewサブクエリをテーブルに変換します。この関数は 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 設定が無効になっている場合、テーブル関数は使用できません。