Interrogation de tables de répertoire

Cette rubrique explique comment interroger une table de répertoire pour récupérer une liste de tous les fichiers d’une zone de préparation avec des métadonnées, telles que l’URL de fichier Snowflake, pour chaque fichier.

Syntaxe pour interroger une table de répertoire :

SELECT * FROM DIRECTORY( @<stage_name> )
Copy

Où :

stage_name

Nom d’une zone de préparation qui a une table de répertoire activée.

Pour plus d’informations sur SELECT en tant qu’instruction, et sur les autres clauses de cette instruction, voir Syntaxe de requête dans la référence de commande SQL Snowflake.

Sortie

La sortie d’une requête de table de répertoire peut inclure les colonnes suivantes :

Colonne

Type de données

Description

RELATIVE_PATH

TEXT

Chemin vers les fichiers auxquels accéder en utilisant l’URL de fichier.

SIZE

NUMBER

Taille du fichier (en octets).

LAST_MODIFIED

TIMESTAMP_LTZ

Horodatage de la dernière mise à jour du fichier dans la zone de préparation.

MD5

HEX

MD5 somme de contrôle pour le fichier.

ETAG

HEX

ETag en-tête pour le fichier.

FILE_URL

TEXT

URL du fichier hébergé par Snowflake vers le fichier.

L’URL de fichier a le format suivant :

https://<account_identifier>/api/files/<db_name>.<schema_name>.<stage_name>/<relative_path>
Copy

Où :

account_identifier

Nom d’hôte du compte Snowflake pour votre zone de préparation. Le nom d’hôte commence par un localisateur de compte (fourni par Snowflake) et se termine par le domaine Snowflake (snowflakecomputing.com) :

account_locator.snowflakecomputing.com

Pour plus de détails, voir Identificateurs de compte.

Note

Pour les comptes Business Critical , un segment privatelink est ajouté à l’URL juste avant snowflakecomputing.com (privatelink.snowflakecomputing.com), même si la connectivité privée au service Snowflake n’est pas activée pour votre compte.

db_name

Nom de la base de données qui contient la zone de préparation où se trouvent vos fichiers.

schema_name

Nom du schéma qui contient la zone de préparation où se trouvent vos fichiers.

stage_name

Nom de la zone de préparation où se trouvent vos fichiers.

relative_path

Chemin vers les fichiers auxquels accéder en utilisant l’URL de fichier.

Notes sur l’utilisation

  • Si les fichiers téléchargés à partir d’une zone de préparation interne sont corrompus, vérifiez avec le créateur de zone de préparation que ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE') est défini pour la zone de préparation.

Exemples

L’exemple récupère toutes les colonnes de métadonnées dans une table de répertoire pour une zone de préparation nommée mystage :

SELECT * FROM DIRECTORY(@mystage);
Copy

Cet exemple récupère les valeurs de colonne FILE_URL d’une table de répertoire pour les fichiers d’une taille supérieure à 100 Ko :

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE SIZE > 100000;
Copy

Cet exemple récupère les valeurs de colonne FILE_URL d’une table de répertoire pour les fichiers de valeurs séparées par des virgules :

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE RELATIVE_PATH LIKE '%.csv';
Copy

Création d’une vue pour les données non structurées à l’aide d’une table de répertoire

Vous pouvez joindre une table de répertoire à d’autres tables Snowflake pour produire une vue de données non structurées qui combine des URLs de fichiers avec des métadonnées sur les fichiers.

Le diagramme suivant illustre comment utiliser une zone de préparation avec une table de répertoire activée avec une table de données distincte pour créer une vue complète des fichiers non structurés sur une zone de préparation.

Création d'une vue complète des données non structurées en joignant une table de répertoire et une autre table Snowflake

Exemple : Création d’une vue de fichiers PDF et de leurs données

L’exemple suivant crée une vue appelée reports_information en joignant une table de répertoire sur une zone de préparation nommée my_pdf_stage avec une table nommée report_metadata à l’aide de la clé file_url. La zone de préparation contient des rapports en PDF, tandis que la table report_metadata contient des informations structurées sur chaque rapport en PDF, tels que author et publish_date. La vue résultante fournit un moyen d’obtenir des informations sur les PDFs non structurés et leurs métadonnées structurées associées.

CREATE VIEW reports_information AS
  SELECT
    file_url as report_link,
    author,
    publish_date,
    approved_date,
    geography,
    num_of_pages
  FROM directory(@my_pdf_stage) s
  JOIN report_metadata m
  ON s.file_url = m.file_url
Copy