Type FILE

S’applique à :check marqué oui Databricks SQL check marqué oui Databricks Runtime 18 LTS et versions ultérieures

Important

Cette fonctionnalité est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.

Le FILE type représente une référence à un fichier non structuré et à ses métadonnées. Utilisez-le pour gérer et traiter des documents, des images et des audios en parallèle des données structurées dans Unity Catalog.

FILE type est pris en charge uniquement pour les tables Delta Lake.

Remarque

Ce FILE type n’est pas pris en charge sur les portables serverless. Il est pris en charge sur les notebooks connectés aux entrepôts SQL Databricks serverless.

Syntax

{ FILE MANAGED | FILE EXTERNAL }

Utilisez FILE MANAGED ou FILE EXTERNAL comme type de colonne lorsque vous déclarez une colonne de table avec CREATE TABLE. Vous ne pouvez pas déclarer une colonne de tableau comme FILE sans spécifier ni l’un ni MANAGEDEXTERNALl’autre . FILE est autorisé uniquement comme paramètre ou type de retour dans une UDF, une procédure stockée ou lors du lancement.

Pour une comparaison de FILE MANAGED et FILE EXTERNAL, y compris les diagrammes d’architecture, voir FILE MANAGED et FILE EXTERNAL.

Champs

Une FILE valeur contient les champs suivants :

Champ Type Description
uri STRING L’URI du fichier. Ce domaine ne peut pas être null.
offset BIGINT Un décalage dans le fichier, en octets.
size BIGINT Taille du fichier en octets.
content_type STRING Le type MIME du fichier, quand il est connu.
checksum STRING Un jeton d’intégrité pour les octets du fichier, de la forme <algorithm>:<digest>. Pour les algorithmes reconnus, voir Sommes de contrôle.

Limites

  • Ce FILE type ne garantit pas la commande. Vous ne pouvez pas utiliser une FILE colonne comme colonne de partition, colonne de clustering, MAP clé, clé de jointure ou expression de groupement. Pour regrouper par un fichier, regroupez plutôt par son uri champ.

Literals

Pour créer une FILE valeur, voir les fonctions suivantes :

À CAST une VARIANT valeur STRUCT à FILE:

  • A STRUCT doit avoir exactement ces champs, avec ces noms et types : struct<uri:string, offset:bigint, size:bigint, content_type:string, checksum:string>.
  • A VARIANT doit inclure le uri champ. Tous les autres champs sont optionnels, et toute touche supplémentaire est ignorée.

Lancer vers FILE, pas vers FILE EXTERNAL ou FILE MANAGED. La colonne cible détermine si la référence résultante est externe ou gérée. Lorsque vous écrivez une référence externe à une FILE MANAGED colonne, Databricks l’intègre dans un stockage géré.

Remarques

  • En tant que colonne de table de premier niveau, FILE doit être déclaré comme FILE MANAGED ou FILE EXTERNAL. Utilisation FILE dans tous les autres cas :
    • Comme paramètre ou type de retour dans SQL, Python et Scala fonctions définies par l’utilisateur (UDF) et dans les procédures stockées SQL.
    • Comme type cible de a CAST à partir d’une VARIANT valeur STRUCT ou
    • Imbriqués à l’intérieur d’un STRUCT, un ARRAY, la valeur d’un MAP, ou un VARIANT. Seuls les fichiers externes sont pris en charge dans un VARIANTfichier .
  • Pour lire les métadonnées des fichiers, utilisez les urichamps , offset, size, content_type, et checksum les champs avec notation en points, par file_column.uriexemple .
  • Pour extraire du contenu structuré d’un fichier, passez une FILE valeur à laai_parse_document fonction fonction.

Examples

Pour déclarer une table avec une colonne gérée FILE , définissez la databricks.filespace-preview propriété de la table sur le chemin de volume que Unity Catalogue utilise comme stockage géré :

CREATE TABLE reports (id BIGINT, attachment FILE MANAGED)
  TBLPROPERTIES ('databricks.filespace-preview' = '/Volumes/my_catalog/my_schema/filespace/');

Pour déclarer une table avec une colonne externe FILE :

CREATE TABLE attachments (id BIGINT, attachment FILE EXTERNAL);

Pour le peupler à partir de fichiers déjà existants dans un volume :

INSERT INTO attachments
  SELECT row_number() OVER (ORDER BY file.uri), file
  FROM read_files('/Volumes/my_catalog/my_schema/my_volume/', format => 'file');

Pour lire les métadonnées de fichiers en notation à points :

SELECT attachment.uri, attachment.size, attachment.checksum
  FROM attachments;

Pour construire une FILE valeur à partir d’une struc :

SELECT named_struct(
  'uri', '/Volumes/my_catalog/my_schema/my_volume/report.pdf',
  'offset', null,
  'size', CAST(19494 AS BIGINT),
  'content_type', 'application/pdf',
  'checksum', 'ETAG:v1')::FILE;