FILE Typ

Gilt für:check marked yes Databricks SQL check marked yes Databricks Runtime 18 LTS and above

Important

Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.

Der Typ FILE stellt eine Referenz auf eine unstrukturierte Datei und deren Metadaten dar. Nutzen Sie es, um Dokumente, Bilder und Audiodateien zusammen mit strukturierten Daten im Unity Catalog zu verwalten und zu verarbeiten.

FILE Typ wird nur für Delta Lake-Tabellen unterstützt.

Hinweis

Der Typ FILE wird auf serverlosen Notebooks nicht unterstützt. Es wird auf Notizbüchern unterstützt, die an serverlose Databricks-SQL-Warehouses angeschlossen sind.

Syntax

{ FILE MANAGED | FILE EXTERNAL }

Verwenden FILE MANAGED Sie oder FILE EXTERNAL als Spaltentyp, wenn Sie eine Tabellenspalte mit CREATE TABLEdeklarieren. Man kann eine Tabellenspalte nicht als deklarieren FILE , ohne entweder MANAGED oder EXTERNAL. FILE ist nur als Parameter oder Rückgabetyp in einem UDF, gespeicherter Prozedur oder beim Casting erlaubt.

Für einen Vergleich von FILE EXTERNAL und FILE MANAGED, einschließlich Architekturdiagrammen, siehe FILE EXTERNAL und FILE MANAGED.

Felder

Ein Wert enthält folgende Felder FILE :

Feld Typ Description
uri STRING Die URI der Datei. Dieses Feld kann nicht .null
offset BIGINT Ein Offset in die Datei, in Bytes.
size BIGINT Die Größe der Datei in Bytes.
content_type STRING Der MIME-Typ der Datei, wenn bekannt.
checksum STRING Ein Integritätstoken für die Bytes der Datei, in der Form <algorithm>:<digest>. Für die anerkannten Algorithmen siehe Checksums.

Limits

  • Der Typ FILE garantiert keine Bestellung. Man kann eine Spalte FILE nicht als Partitionierungsspalte, Clustering-Spalte, Schlüssel MAP , Join-Schlüssel oder Gruppierungsausdruck verwenden. Um nach einer Datei zu gruppieren, gruppieren Sie stattdessen nach ihrem uri Feld.

Literals

Um einen FILE Wert zu erstellen, siehe die folgenden Funktionen:

Zu CAST einem VARIANT oder STRUCT Wert zu FILE:

  • A STRUCT muss genau diese Felder besitzen, mit diesen Namen und Typen: struct<uri:string, offset:bigint, size:bigint, content_type:string, checksum:string>.
  • VARIANT Ein Muss das Feld uri einbeziehen. Alle anderen Felder sind optional, und zusätzliche Schlüssel werden ignoriert.

Wirke auf FILE, nicht auf oder FILE EXTERNALFILE MANAGED. Die Zielspalte bestimmt, ob die resultierende Referenz extern oder verwaltet ist. Wenn du eine externe Referenz auf eine Spalte FILE MANAGED schreibst, speichert Databricks sie in den verwalteten Speicher.

Hinweise

  • Als Tabellenspalte auf oberster Ebene muss als FILE MANAGED oder FILE EXTERNALdeklariert werden. FILE Verwendung FILE in allen anderen Fällen:
    • Als Parameter- oder Rückgabetyp in benutzerdefinierten SQL-, Python- und Scala-benutzerdefinierten Funktionen (UDFs) sowie in SQL-gespeicherten Prozeduren.
    • Als Zieltyp von a CAST aus einem VARIANT oder STRUCT Wert.
    • Eingebettet in ein STRUCT, ein ARRAY, der Wert eines MAP, oder eines VARIANT. Nur externe Dateien werden in einem unterstützt.VARIANT
  • Um Dateimetadaten zu lesen, verwenden Sie zum Beispiel die uriFelder , offset, size, content_type, und checksum die Felder mit Punktnotation.file_column.uri
  • Um strukturierte Inhalte aus einer Datei zu extrahieren, gibt man einen FILE Wert an die ai_parse_document Funktionsfunktion .

Examples

Um eine Tabelle mit einer externen FILE Spalte zu deklarieren:

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

Um sie aus Dateien zu füllen, die bereits in einem Volume existieren:

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

Um Dateimetadaten mit Dot-Notation zu lesen:

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

Um einen FILE Wert aus einer Struktur zu konstruieren:

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;