コンテンツにスキップ

ファイルのメタデータスキーマを自動的に検出し、列定義を取得します。

INFER_SCHEMA(
LOCATION => '{ internalStage | externalStage }'
[ PATTERN => '<regex_pattern>']
)

各項目の意味は次のとおりです。

internalStage ::= @<internal_stage_name>[/<path>]
externalStage ::= @<external_stage_name>[/<path>]

一致させるファイル名を指定する、PCRE2ベースの正規表現パターン文字列です。単一引用符で囲みます。例については以下を参照してください。PCRE2の構文については、http://www.pcre.org/current/doc/html/pcre2syntax.html を参照してください。

ステージにParquetファイルを生成します。

CREATE STAGE infer_parquet FILE_FORMAT = (TYPE = PARQUET);
COPY INTO @infer_parquet FROM (SELECT * FROM numbers(10)) FILE_FORMAT = (TYPE = PARQUET);
LIST @infer_parquet;
┌───────────────────────────────────────────────────────┬──────┬────────────────────────────────────┬───────────────────────────────┬─────────┐
│ name │ size │ md5 │ last_modified │ creator │
├───────────────────────────────────────────────────────┼──────┼────────────────────────────────────┼───────────────────────────────┼─────────┤
│ data_e0fd9cba-f45c-4c43-aa07-d6d87d134378_0_0.parquet │ 258 │ "7DCC9FFE04EA1F6882AED2CF9640D3D4" │ 2023-02-09 05:21:52.000 +0000 │ NULL │
└───────────────────────────────────────────────────────┴──────┴────────────────────────────────────┴───────────────────────────────┴─────────┘
SELECT * FROM INFER_SCHEMA(location => '@infer_parquet/data_e0fd9cba-f45c-4c43-aa07-d6d87d134378_0_0.parquet');
┌─────────────┬─────────────────┬──────────┬──────────┐
│ column_name │ type │ nullable │ order_id │
├─────────────┼─────────────────┼──────────┼──────────┤
│ number │ BIGINT UNSIGNED │ 0 │ 0 │
└─────────────┴─────────────────┴──────────┴──────────┘

パターンマッチングを使用した infer_schema

Section titled “パターンマッチングを使用した infer_schema”
SELECT * FROM infer_schema(location => '@infer_parquet/', pattern => '.*parquet');
┌─────────────┬─────────────────┬──────────┬──────────┐
│ column_name │ type │ nullable │ order_id │
├─────────────┼─────────────────┼──────────┼──────────┤
│ number │ BIGINT UNSIGNED │ 0 │ 0 │
└─────────────┴─────────────────┴──────────┴──────────┘

Parquetファイルからテーブルを作成する

Section titled “Parquetファイルからテーブルを作成する”

infer_schema はParquetファイルのスキーマを表示することしかできず、そこからテーブルを作成することはできません。

Parquetファイルからテーブルを作成するには、次のようにします。

CREATE TABLE mytable AS SELECT * FROM @infer_parquet/ (pattern=>'.*parquet') LIMIT 0;
DESC mytable;
┌────────┬─────────────────┬──────┬─────────┬───────┐
│ Field │ Type │ Null │ Default │ Extra │
├────────┼─────────────────┼──────┼─────────┼───────┤
│ number │ BIGINT UNSIGNED │ NO │ 0 │ │
└────────┴─────────────────┴──────┴─────────┴───────┘