Catégories :

Fonctions de table

INFER_SCHEMA

Détecte automatiquement le schéma de métadonnées de fichier dans un ensemble de fichiers de données mis en zone de préparation qui contiennent des données semi-structurées et récupère les définitions de colonnes. Utilisez les définitions de colonnes pour simplifier la création d’une table de destination ou d’une table externe pour interroger les données.

Note

Cette fonctionnalité est actuellement limitée à Apache Parquet, Apache Avro et aux fichiers ORC.

Syntaxe

INFER_SCHEMA(
  LOCATION => '{ internalStage | externalStage }'
  , FILE_FORMAT => '<format_name>'
)

Où :

internalStage ::=
    @[<namespace>.]<int_stage_name>[/<path>][/<filename>]
  | @~[/<path>][/<filename>]
externalStage ::=
  @[<namespace>.]<ext_stage_name>[/<path>][/<filename>]

Arguments

LOCATION => '...'

Nom de la zone de préparation interne ou externe où les fichiers sont stockés. Vous pouvez inclure un chemin d’accès à un ou plusieurs fichiers dans l’emplacement de stockage dans le Cloud ; sinon, la fonction INFER_SCHEMA analyse les fichiers dans tous les sous-répertoires de la zone de préparation :

@[espace_noms.]nom_zone_de_préparation_interne[/chemin][/nom_fichier]

Les fichiers se trouvent dans la zone de préparation interne nommée spécifiée.

@[espace_noms.]nom_zone_de_préparation_externe[/chemin][/nom_fichier]

Les fichiers se trouvent dans la zone de préparation externe nommée spécifiée.

@~[/chemin][/nom_fichier]

Les fichiers sont mis en zone de préparation pour l’utilisateur actuel.

Note

Cette fonction SQL ne prend en charge que les zones de préparation nommées (internes ou externes) et les zones de préparation utilisateur. Elle ne prend pas en charge les zones de préparation de table.

FILE_FORMAT => 'nom_format'

Nom de l’objet de format de fichier qui décrit les données contenues dans les fichiers en zone de préparation. Pour plus d’informations, voir CREATE FILE FORMAT.

Notes sur l’utilisation

Aucun.

Sortie

La fonction renvoie les colonnes suivantes :

Nom de la colonne

Type de données

Description

COLUMN_NAME

TEXT

Nom d’une colonne dans les fichiers en zone de préparation.

TYPE

TEXT

Type de données de la colonne.

NULLABLE

BOOLEAN

Spécifie si les lignes de la colonne peuvent stocker NULL au lieu d’une valeur. Actuellement, la nullité déduite d’une colonne peut s’appliquer à un fichier de données, mais pas aux autres dans le jeu analysé.

EXPRESSION

TEXT

Expression de la colonne au format $1:COLUMN_NAME::TYPE (principalement pour les tables externes).

FILENAMES

TEXT

Noms des fichiers qui contiennent la colonne.

Exemples

Récupérez les définitions de colonnes pour les fichiers Parquet dans la zone de préparation mystage :

-- Create a file format that sets the file type as Parquet.
CREATE FILE FORMAT my_parquet_format
  TYPE = parquet;

-- Query the INFER_SCHEMA function.
SELECT *
  FROM TABLE(
    INFER_SCHEMA(
      LOCATION=>'@mystage'
      , FILE_FORMAT=>'my_parquet_format'
      )
    );

+-------------+---------+----------+---------------------+--------------------------+
| COLUMN_NAME | TYPE    | NULLABLE | EXPRESSION          | FILENAMES                |
|-------------+---------+----------+---------------------+--------------------------|
| continent   | TEXT    | True     | $1:continent::TEXT  | geography/cities.parquet |
| country     | VARIANT | True     | $1:country::VARIANT | geography/cities.parquet |
+-------------+---------+----------+---------------------+--------------------------+

Similaire à l’exemple précédent, mais spécifiez un seul fichier Parquet dans la zone de préparation mystage :

-- Query the INFER_SCHEMA function.
SELECT *
  FROM TABLE(
    INFER_SCHEMA(
      LOCATION=>'@mystage/geography/cities.parquet'
      , FILE_FORMAT=>'my_parquet_format'
      )
    );

+-------------+---------+----------+---------------------+--------------------------+
| COLUMN_NAME | TYPE    | NULLABLE | EXPRESSION          | FILENAMES                |
|-------------+---------+----------+---------------------+--------------------------|
| continent   | TEXT    | True     | $1:continent::TEXT  | geography/cities.parquet |
| country     | VARIANT | True     | $1:country::VARIANT | geography/cities.parquet |
+-------------+---------+----------+---------------------+--------------------------+