メインコンテンツまでスキップ
に最終更新

HTTP

HTTP テーブル値関数(TVF)を使用すると、任意の HTTP エンドポイントから返されたデータを、リレーショナルテーブルのデータのように読み取れます。返されたデータが対応形式であれば、SQL で直接クエリおよび分析できます。現在、csv/csv_with_names/csv_with_names_and_types/json/parquet/orc のデータ形式に対応しています。

主な用途は次のとおりです。

  • HTTP/HTTPS 上でホストされているデータファイル(GitHub、S3 など)をクエリする。
  • JSON 形式のデータを返す HTTP API エンドポイントを直接クエリする。
  • Hugging Face 上でホストされているデータセットにアクセスする。
注記

バージョン 4.0.2 以降でサポートされています。

構文​

HTTP(
"uri" = "<uri>",
"format" = "<format>"
[, "<optional_property_key>" = "<optional_property_value>" [, ...] ]
)

必須パラメータ​

パラメータ説明
uriアクセス先の HTTP アドレスです。http、https、hf プロトコルに対応します。データファイルの URL、またはデータを返す API エンドポイントを指定できます。
formatHTTP エンドポイントから返された内容を解析するデータ形式です。csv/csv_with_names/csv_with_names_and_types/json/parquet/orc に対応します。

hf://(Hugging Face)については、Hugging Face データの分析を参照してください。

オプションパラメータ​

パラメータ説明備考
http.header.xxx任意の HTTP ヘッダーを指定し、HTTP クライアントにそのまま渡します。例:"http.header.Authorization" = "Bearer hf_MWYzOJJoZEymb..." を指定すると、ヘッダーは Authorization: Bearer hf_MWYzOJJoZEymb... になります。
http.enable.range.requestHTTP サービスへのアクセスに範囲リクエストを使用するかどうかを指定します。デフォルトは true です。
http.max.request.size.bytes範囲リクエストを使用しないモードでの最大アクセスサイズです。デフォルトは 100 MB です。

http.enable.range.request が true の場合、システムは最初に範囲リクエストで HTTP サービスへのアクセスを試みます。HTTP サービスが範囲リクエストに対応していない場合は、自動的に範囲リクエストを使用しないモードに切り替わります。アクセスできるデータの最大サイズは http.max.request.size.bytes によって制限されます。

例​

HTTP 経由でデータファイルを読み取る​

  • GitHub 上の CSV データを読み取る

    SELECT COUNT(*) FROM
    HTTP(
    "uri" = "https://raw.githubusercontent.com/apache/doris/refs/heads/master/regression-test/data/load_p0/http_stream/all_types.csv",
    "format" = "csv",
    "column_separator" = ","
    );
  • GitHub 上の Parquet データを読み取る

    SELECT arr_map, id FROM
    HTTP(
    "uri" = "https://raw.githubusercontent.com/apache/doris/refs/heads/master/regression-test/data/external_table_p0/tvf/t.parquet",
    "format" = "parquet"
    );
  • GitHub 上の JSON データを読み取り、DESC FUNCTION でスキーマを確認する

    DESC FUNCTION
    HTTP(
    "uri" = "https://raw.githubusercontent.com/apache/doris/refs/heads/master/regression-test/data/load_p0/stream_load/basic_data.json",
    "format" = "json",
    "strip_outer_array" = "true"
    );

HTTP API エンドポイントをクエリする​

HTTP テーブル関数を使用すると、JSON 形式のデータを返す HTTP API エンドポイントを直接クエリできます。たとえば、JSON データを返す REST API は次のようにクエリします。

SELECT * FROM
HTTP(
"uri" = "https://api.example.com/v1/data",
"format" = "json",
"http.header.Authorization" = "Bearer your_token",
"strip_outer_array" = "true"
);
ヒント

範囲リクエストに対応していない HTTP API エンドポイントでは、システムは自動的に範囲リクエストを使用しないモードに切り替わります。http.enable.range.request パラメータを使用して、範囲リクエストを手動で無効にすることもできます。