Types de données non structurées¶
Snowflake prend en charge trois types de données différents :
Les données structurées (comme un fichier CSV) suivent un schéma tabulaire strict. Les données structurées peuvent être facilement chargées dans les tables SQL.
Les données semi-structurées (comme un fichier JSON ou XML) ont un schéma flexible. Snowflake peut accéder aux champs des données semi-structurées à l’aide de fonctions spéciales, mais les données ne sont pas aussi faciles à interroger que les données structurées. Les données semi-structurées peuvent être chargées dans les tables SQL à l’aide des colonnes VARIANT.
Les données non structurées (comme un document, une image ou un fichier audio) n’ont pas de schéma inhérent. Les données non structurées peuvent néanmoins présenter une structure interne (par exemple, les fichiers d’images PNG doivent respecter un format documenté), mais ces détails techniques ne sont généralement pas liés aux informations contenues dans le fichier.
Snowflake fournit des moyens de travailler avec des données dans des fichiers non structurés, tels que la fonction AI COMPLETE et Document AI.
Pour utiliser des données non structurées dans Snowflake, elles doivent d’abord être mises en zone de préparation interne ou externe. La fonction Snowflake qui traite les données non structurées les lit à partir de là. Selon la fonction, vous spécifiez le fichier d’une ou de plusieurs des manières suivantes :
En transmettant un nom de zone de préparation et un chemin relatif vers le fichier comme deux arguments distincts vers la fonction qui l’utilisera.
En transmettant une URL de zone de préparation ou limitée (URL) en tant que chaîne.
En passant un objet FILE créé à l’aide de la fonction TO_FILE ou TRY_TO_FILE.
Type de données FILE¶
Snowflake fournit le type de données FILE pour les données non structurées. Une valeur FILE représente un fichier stocké dans une zone de préparation interne ou externe, mais ne stocke pas les données du fichier, seulement une référence à celui-ci. Il comprend les métadonnées suivantes :
STAGE : le nom de la zone de préparation sur laquelle se trouve le fichier.
RELATIVE_PATH : le chemin relatif du fichier dans sa zone de préparation.
STAGE_FILE_URL : l’URL de la zone de préparation.
SCOPED_FILE_URL : l’URL de fichier limitée.
CONTENT_TYPE : le type MIME du fichier.
SIZE : la taille, en octets, du fichier.
ETAG : un hachage unique du contenu du fichier.
LAST_MODIFIED : l’horodatage auquel le fichier a été modifié pour la dernière fois.
Tous ces champs ne sont pas obligatoires. Un FILE doit comporter les champs CONTENT_TYPE, SIZE, ETAG et LAST_MODIFIED, ainsi que l’emplacement du fichier spécifié par STAGE plus RELATIVE_PATH, STAGE_FILE_URL ou SCOPED_FILE_URL.
Vous pouvez créer un fichier en transmettant une URL de fichier limitée, une zone de préparation et un chemin ou un objet de métadonnées à la fonction TO_FILE ou TRY_TO_FILE.
Fonctions FILE¶
Sous-catégorie |
Fonction |
---|---|
Constructeurs |
|
Accesseurs |
|
Fonctions utilitaires |
|
Notes sur l’utilisation¶
Les valeurs FILE peuvent devenir incohérentes avec les fichiers en zone de préparation sous-jacents. Les valeurs FILE ne sont pas mises à jour lorsque vous modifiez ou supprimez le fichier sous-jacent. Inversement, si une valeur FILE est supprimée d’une table, le fichier sous-jacent n’est pas affecté.
Les autorisations sur les fichiers sous-jacents sont régies par le type d’URL spécifié lors de la création du FILE. Les URLs de fichier de la zone de préparation et les combinaisons zone de préparation/chemin donnent une autorisation permanente aux appelants qui ont accès à la zone de préparation associée. Les URLs limitées donnent un accès temporaire, basé sur l’utilisateur, au fichier sous-jacent pour une période de 24 heures.
Utilisation de données non structurées dans Snowflake via SQL¶
Créez une table avec une colonne FILE.
CREATE TABLE images_table(img FILE);
Chargez les données dans la table depuis une zone de préparation externe my_images
qui contient des fichiers d’images. mpy_images
peut être une zone de préparation interne ou externe.
Note
Cette procédure nécessite la prise en charge des tables de répertoire sur la zone de préparation. Activez-la, si nécessaire, à l’aide de l’instruction SQL ci-dessous :
ALTER STAGE my_images DIRECTORY=(ENABLE=true);
Chargez les données dans la table Snowflake.
INSERT INTO images_table
SELECT TO_FILE(file_url) FROM DIRECTORY(@my_images);
Exécutez les instructions SQL par rapport à images_table
. Par exemple, la requête suivante renvoie le chemin relatif de chaque fichier de la table qui a été modifié pour la dernière fois entre le 1er janvier 2021 et le 1er janvier 2023.
SELECT FL_GET_RELATIVE_PATH(f)
FROM images_table
WHERE FL_GET_LAST_MODIFIED(f) BETWEEN '2021-01-01' and '2023-01-01';
Limitations connues¶
Le type de données FILE ne peut actuellement pas être utilisé dans les éléments suivants :
Clauses CLUSTER BY, GROUP BY et ORDER BY
Tables hybrides, tables Iceberg et tables externes
SnowScript
Vues sécurisées
Liaisons
Optimisation de la recherche
Clients et connecteurs à l’exception de Snowpark Python