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

url テーブル関数

url 関数は、指定された format および structure を使用して、URL からテーブルを作成します。

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

構文

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

パラメータ

ParameterDescription
URLシングルクォートで囲まれた HTTP または HTTPS サーバーアドレス。GET または POST リクエスト (それぞれ SELECT または INSERT クエリに対応) を受け付ける必要があります。型: String
formatデータのフォーマット。型: String
structure'UserID UInt64, Name String' 形式のテーブル構造。カラム名と型を決定します。型: String
headers'headers('key1'='value1', 'key2'='value2')' 形式のヘッダー。HTTP 呼び出しで使用するヘッダーを設定できます。

戻り値

指定された形式と構造を持ち、定義された URL からのデータを含むテーブル。

String 列と UInt32 型の列を含むテーブルの先頭 3 行を、CSV 形式で応答する HTTP サーバーから取得します。

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))

use_hive_partitioning 設定

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;

相対URLの解決

url_base 設定を使用すると、url 関数に相対URLを渡せます。url_base が設定されており、関数の引数が相対参照である場合は、RFC 3986 に従ってベースURLに対して解決されます。

解決ルールは次のとおりです。

  • パス相対 (例: data.csv) : ベースURLのパスにマージされ、ベースパスの最後の / より後ろはすべて置き換えられます。末尾のスラッシュの有無は重要です。https://example.com/dir/ + data.csvhttps://example.com/dir/data.csv になりますが、https://example.com/dir + data.csvhttps://example.com/data.csv になります。ドットセグメント (./../) は正規化されます。
  • ホスト相対 (例: /test/data.csv) : ベースURLのスキームとホストを使って解決されます。
  • スキーム相対 (例: //other.com/test/data.csv) : ベースURLのスキームを使って解決されます。
  • クエリのみ (例: ?x=1) : ベースパス全体の末尾に追加され、既存のクエリまたはフラグメントは置き換えられます。
  • フラグメントのみ (例: #frag) : ベースURLの末尾に追加され、クエリは保持され、既存のフラグメントは置き換えられます。
  • : フラグメントを除いたベースURLを返します。
  • 絶対URL: そのまま渡され、url_base は無視されます。

SET url_base = 'https://raw.githubusercontent.com/ClickHouse/ClickHouse/master/';
SELECT * FROM url('tests/queries/0_stateless/data_csv/data.csv', CSV) LIMIT 3;

ストレージ設定

  • engine_url_skip_empty_files - 読み込み時に空のファイルをスキップします。デフォルトでは無効です。
  • enable_url_encoding - URI 内のパスのデコード/エンコードを有効/無効にします。デフォルトでは有効です。
  • url_base - url 関数に渡される相対 URL を解決するためのベース URL です。

権限

url 関数には CREATE TEMPORARY TABLE 権限が必要です。そのため、readonly = 1 に設定されているユーザーでは動作しません。少なくとも readonly = 2 が必要です。