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

HTTP

HTTP table-valued-function (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>" [, ...] ]
)

必須パラメータ

ParameterDescription
uriアクセスするHTTPアドレス。httphttpshfプロトコルをサポート。データファイルへのURLまたはデータを返すAPIエンドポイントを指定可能。
formatデータ形式、つまりHTTPエンドポイントが返すコンテンツの解析方法。csv/csv_with_names/csv_with_names_and_types/json/parquet/orcをサポート。

hf://(Hugging Face)については、Analyzing Hugging Face Dataを参照してください。

オプションパラメータ

ParameterDescriptionNotes
http.header.xxx任意のHTTP Headerを指定するために使用され、HTTP Clientに直接渡される。例:"http.header.Authorization" = "Bearer hf_MWYzOJJoZEymb..."の場合、結果のHeaderはAuthorization: Bearer hf_MWYzOJJoZEymb...となる
http.enable.range.requestHTTPサービスへのアクセスにrange requestを使用するかどうか。デフォルトはtrue
http.max.request.size.bytesnon-range requestモード使用時の最大アクセスサイズ制限。デフォルトは100 MB。

http.enable.range.requesttrueの場合、システムは最初にrange requestを使用してHTTPサービスへのアクセスを試行します。HTTPサービスがrange requestをサポートしていない場合、自動的にnon-range requestモードにフォールバックします。データアクセスの最大サイズは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 table function を使用して、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"
);
ヒント

Range RequestsをサポートしていないHTTP APIエンドポイントの場合、システムは自動的に非Range Requestモードにフォールバックします。http.enable.range.requestパラメータを使用してRange Requestsを手動で無効にすることができます。