INFER_SCHEMA (Lakehouse v1)
自动检测文件元数据架构并获取列定义。
SQL 语法
Section titled “SQL 语法”INFER_SCHEMA( LOCATION => '{ internalStage | externalStage }' [ PATTERN => '<regex_pattern>'])其中:
internalStage ::= @<internal_stage_name>[/<path>]externalStage ::= @<external_stage_name>[/<path>]PATTERN = ‘regex_pattern’
Section titled “PATTERN = ‘regex_pattern’”基于 PCRE2 的正则表达式模式字符串,用单引号括起,指定要匹配的文件名。示例请参见下文。PCRE2 语法请参阅 http://www.pcre.org/current/doc/html/pcre2syntax.html。
SQL 示例
Section titled “SQL 示例”在暂存区中生成一个 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 │└───────────────────────────────────────────────────────┴──────┴────────────────────────────────────┴───────────────────────────────┴─────────┘infer_schema
Section titled “infer_schema”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 │ │└────────┴─────────────────┴──────┴─────────┴───────┘