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

url テーブル関数

url 関数は、指定された formatstructure を持つ URL からテーブルを作成します。

url 関数は、URL テーブル内のデータに対する SELECT および INSERT クエリで使用できます。

構文

url(URL [,format] [,structure] [,headers])

パラメータ

パラメータ説明
URLGET または POST リクエストを受け付ける HTTP または HTTPS サーバーのアドレス(それぞれ SELECT または INSERT クエリ用)。型: String
formatデータのフォーマット。型: String
structure'UserID UInt64, Name String' フォーマットのテーブル構造。カラム名と型を決定します。型: String
headers'headers('key1'='value1', 'key2'='value2')' フォーマットのヘッダー。HTTP 呼び出し用のヘッダーを設定できます。

戻り値

指定されたフォーマットと構造、及び定義された URL からのデータを持つテーブル。

HTTP サーバーからの String および UInt32 タイプのカラムを含むテーブルの最初の 3 行を取得します。サーバーは CSV フォーマットで応答します。

SELECT * FROM url('http://127.0.0.1:12345/', CSV, 'column1 String, column2 UInt32', headers('Accept'='text/csv; charset=utf-8')) LIMIT 3;

URL からテーブルへのデータ挿入:

CREATE TABLE test_table (column1 String, column2 UInt32) ENGINE=Memory;
INSERT INTO FUNCTION url('http://127.0.0.1:8123/?query=INSERT+INTO+test_table+FORMAT+CSV', 'CSV', 'column1 String, column2 UInt32') VALUES ('http interface', 42);
SELECT * FROM test_table;

URL におけるグロブ

中括弧 { } 内のパターンは、シャードのセットを生成したり、フェイルオーバーアドレスを指定するために使用されます。サポートされているパターンタイプと例は、remote 関数の説明で確認できます。 パターン内の文字 | はフェイルオーバーアドレスを指定するために使用され、リストの順序で反復されます。生成されるアドレスの数は、glob_expansion_max_elements 設定によって制限されています。

仮想カラム

  • _pathURL へのパス。型: LowCardinality(String)
  • _fileURL のリソース名。型: LowCardinality(String)
  • _size — リソースのサイズ(バイト単位)。型: Nullable(UInt64)。サイズが不明な場合、値は NULL です。
  • _time — ファイルの最終変更時刻。型: Nullable(DateTime)。時間が不明な場合、値は NULL です。
  • _headers - HTTP 応答ヘッダー。型: Map(LowCardinality(String), LowCardinality(String))

Hive スタイルのパーティショニング

use_hive_partitioning を 1 に設定すると、ClickHouse はパス内の Hive スタイルのパーティショニング (/name=value/) を検出し、クエリ内でパーティションカラムを仮想カラムとして使用できるようにします。これらの仮想カラムは、パーティション化されたパスと同じ名前ですが、_ で始まります。

Hive スタイルのパーティショニングで作成された仮想カラムを使用

SELECT * from url('http://data/path/date=*/country=*/code=*/*.parquet') where _date > '2020-01-01' and _country = 'Netherlands' and _code = 42;

ストレージ設定

  • engine_url_skip_empty_files - 読み取り時に空のファイルをスキップすることを許可します。デフォルトでは無効です。
  • enable_url_encoding - URI のパスのデコード/エンコードを有効/無効にすることを許可します。デフォルトでは有効です。

権限

url 関数は CREATE TEMPORARY TABLE 権限を必要とします。そのため - readonly = 1 設定のユーザーには機能しません。少なくとも readonly = 2 が必要です。