メインコンテンツまでスキップ
メインコンテンツまでスキップ

テーブル関数

テーブル関数は、テーブルを構築するためのメソッドです。

ページ説明
azureBlobStorageAzure Blob Storage内のファイルを選択/挿入するためのテーブルのようなインターフェースを提供します。s3関数に似ています。
azureBlobStorageCluster指定されたクラスター内の多数のノードでAzure Blobストレージからファイルを並行処理できるようにします。
clusterAllReplicas分散テーブルを作成せずに、クラスターのすべてのシャード(remote_serversセクションで構成された)にアクセスできるようにします。
deltaLakeAmazon S3内のDelta Lakeテーブルに対する読み取り専用のテーブルのようなインターフェースを提供します。
deltaLakeClusterdeltaLakeテーブル関数への拡張です。
dictionaryClickHouseテーブルとして辞書データを表示します。Dictionaryエンジンと同じように機能します。
executableexecutableテーブル関数は、stdoutに行を出力するスクリプトで定義したユーザー定義関数(UDF)の出力に基づいてテーブルを作成します。
fileファイルからSELECTおよびINSERTするためのテーブルのようなインターフェースを提供するテーブルエンジンで、s3テーブル関数に似ています。ローカルファイルを扱う際にはfile()を、S3やGCS、MinIOなどのオブジェクトストレージのバケットを扱う際にはs3()を使用します。
fileCluster指定されたパスに一致するファイルをクラスター内の複数のノードで同時に処理できるようにします。イニシエーターはワーカーノードに接続し、ファイルパス内のグロブを展開し、ファイル読み込みタスクをワーカーノードに委任します。各ワーカーノードは次のファイルを処理するためにイニシエーターにクエリを送信し、すべてのタスクが完了するまで繰り返します(すべてのファイルが読み込まれるまで)。
format指定された入力形式に従って引数からデータを解析します。構造の引数が指定されていない場合は、データから抽出されます。
gcsGoogle Cloud StorageからデータをSELECTおよびINSERTするためのテーブルのようなインターフェースを提供します。Storage Object User IAMロールが必要です。
fuzzQuery与えられたクエリ文字列をランダムな変動で摂動します。
fuzzJSONJSON文字列をランダムな変動で摂動します。
generateRandom指定されたスキーマでランダムデータを生成します。そのデータでテストテーブルをポピュレートできます。すべての型がサポートされているわけではありません。
mergeTreeProjectionMergeTreeテーブル内のあるプロジェクションの内容を表します。内部構造を確認するために使用できます。
mergeTreeIndexMergeTreeテーブルのインデックスおよびマークファイルの内容を表します。内部構造を確認するために使用できます。
hdfsHDFS内のファイルからテーブルを作成します。このテーブル関数はurlおよびfileテーブル関数に似ています。
hdfsCluster指定されたクラスターの多数のノードからHDFSのファイルを並行処理できるようにします。
hudiAmazon S3内のApache Hudiテーブルに対する読み取り専用のテーブルのようなインターフェースを提供します。
ytsaurusこのテーブル関数を使用すると、YTサウルスクラスターからデータを読み取ることができます。
hudiCluster Table Functionhudiテーブル関数への拡張です。指定されたクラスターの多数のノードでAmazon S3のApache Hudiテーブルからファイルを並行処理できるようにします。
icebergAmazon S3、Azure、HDFS、またはローカルに保存されたApache Icebergテーブルに対する読み取り専用のテーブルのようなインターフェースを提供します。
icebergCluster指定されたクラスターの多数のノードからApache Icebergのファイルを並行処理できるようにするicebergテーブル関数への拡張です。
input特定の構造を持つデータを別の構造のテーブルに効果的に変換して挿入できるテーブル関数です。
jdbcJDBCドライバー経由で接続されたテーブルを返します。
merge一時的なMergeテーブルを作成します。その構造は、基盤となるテーブルのカラムのユニオンを利用して派生し、共通の型を導出します。
mongodbリモートMongoDBサーバーに保存されたデータに対してSELECTクエリを実行できるようにします。
mysqlリモートMySQLサーバーに保存されたデータに対してSELECTおよびINSERTクエリを実行できるようにします。
nullNullテーブルエンジンで指定された構造の一時テーブルを作成します。この関数は、テスト作成やデモの便宜のために使用されます。
timeSeriesMetricstimeSeriesMetricsは、TimeSeriesエンジンであるdb_name.time_series_tableテーブルによって使用されるメトリクステーブルを返します。
timeSeriesSelector指定された間隔内のタイムスタンプでフィルタリングされたTimeSeriesテーブルからタイムシリーズを読み取ります。
timeSeriesTagstimeSeriesTagsテーブル関数は、TimeSeriesエンジンであるdb_name.time_series_tableテーブルによって使用されるタグテーブルを返します。
prometheusQueryRangeTimeSeriesテーブルのデータを使用してprometheusクエリを評価します。
zerosテスト目的で多くの行を生成するための最速の方法として使用されます。system.zerosおよびsystem.zeros_mtシステムテーブルに似ています。
timeSeriesDatatimeSeriesDataは、TimeSeriesエンジンであるdb_name.time_series_tableテーブルによって使用されるデータテーブルを返します。
numbers特定の整数を含む単一のnumberカラムを持つテーブルを返します。
prometheusQueryTimeSeriesテーブルのデータを使用してprometheusクエリを評価します。
generate_series (generateSeries)開始から停止まで(両端を含む)の整数を含む単一のgenerate_seriesカラム(UInt64)を持つテーブルを返します。
odbcODBC経由で接続されたテーブルを返します。
postgresqlリモートPostgreSQLサーバーに保存されたデータに対してSELECTおよびINSERTクエリを実行できるようにします。
redisこのテーブル関数は、ClickHouseとRedisを統合します。
remote, remoteSecureテーブル関数remoteは、分散テーブルを作成せずに、リモートサーバーにオンザフライでアクセスできるようにします。テーブル関数remoteSecureは安全な接続を介したremoteと同様です。
s3 Table FunctionAmazon S3およびGoogle Cloud Storageのファイルを選択/挿入するためのテーブルのようなインターフェースを提供します。このテーブル関数はhdfs関数に似ていますが、S3特有の機能を提供します。
s3Cluster指定されたクラスター内の多数のノードでAmazon S3およびGoogle Cloud Storageのファイルを並行処理できるようにするs3テーブル関数への拡張です。
sqliteSQLiteデータベースに保存されたデータに対してクエリを実行できるようにします。
arrowFlightApache Arrow Flightサーバー経由で公開されたデータに対してクエリを実行できるようにします。
url指定されたformatおよびstructureで与えられたURLからテーブルを作成します。
urlCluster指定されたクラスター内の多数のノードからURLのファイルを並行処理できるようにします。
viewサブクエリをテーブルに変換します。この関数はビューを実装します。
values値でカラムを埋める一時的なストレージを作成します。
loopClickHouseのループテーブル関数は、無限ループでクエリ結果を返すために使用されます。

使用法

テーブル関数は、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設定が無効になっている場合、テーブル関数は使用できません。