INFER_SCHEMA (Lakehouse v1)
Detecta automáticamente el esquema de metadatos del archivo y recupera las definiciones de columnas.
Sintaxis de SQL
Sección titulada «Sintaxis de SQL»INFER_SCHEMA( LOCATION => '{ internalStage | externalStage }' [ PATTERN => '<regex_pattern>'])Donde:
Internalstage
Sección titulada «Internalstage»internalStage ::= @<internal_stage_name>[/<path>]Externalstage
Sección titulada «Externalstage»externalStage ::= @<external_stage_name>[/<path>]PATTERN = ‘regex_pattern’
Sección titulada «PATTERN = ‘regex_pattern’»Una cadena de patrón de expresión regular basada en PCRE2, entre comillas simples, que especifica los nombres de archivo que deben coincidir. Consulte más abajo para ver un ejemplo. Para la sintaxis de PCRE2, consulte http://www.pcre.org/current/doc/html/pcre2syntax.html.
Ejemplos de SQL
Sección titulada «Ejemplos de SQL»Genere un archivo parquet en una etapa:
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
Sección titulada «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 con coincidencia de patrones
Sección titulada «infer_schema con coincidencia de patrones»SELECT * FROM infer_schema(location => '@infer_parquet/', pattern => '.*parquet');┌─────────────┬─────────────────┬──────────┬──────────┐│ column_name │ type │ nullable │ order_id │├─────────────┼─────────────────┼──────────┼──────────┤│ number │ BIGINT UNSIGNED │ 0 │ 0 │└─────────────┴─────────────────┴──────────┴──────────┘Creación de una tabla a partir de un archivo Parquet
Sección titulada «Creación de una tabla a partir de un archivo Parquet»infer_schema solo puede mostrar el esquema de un archivo parquet y no puede crear una tabla a partir de él.
Para crear una tabla a partir de un archivo 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 │ │└────────┴─────────────────┴──────┴─────────┴───────┘