тип FILE

Область применения:check помечена да , проверка Databricks SQL помечено да Databricks Runtime 18 LTS и выше

Important

Эта функция доступна в бета-версии. Администраторы рабочей области могут управлять доступом к этой функции на странице "Предварительные версии ". См. статью "Управление предварительными версиями Azure Databricks".

Тип FILE представляет собой ссылку на неструктурированный файл и его метаданные. Используйте его для управления и обработки документов, изображений и аудио вместе со структурированными данными в Unity Catalog.

FILE тип поддерживается только для таблиц Delta Lake.

Примечание.

Этот тип не поддерживается на ноутбуках FILE без сервера. Он поддерживается на ноутбуках, подключённых к серверным хранилищам Databricks SQL.

Syntax

{ FILE MANAGED | FILE EXTERNAL }

Используйте FILE MANAGED или FILE EXTERNAL как тип столбца при объявлении столбца таблицы с CREATE TABLE. Вы не можете объявить столбец таблицы как FILE без указания либо MANAGED или EXTERNAL. FILE разрешено только как параметр или тип возврата в UDF, сохранённой процедуре или при кастинге.

Для сравнения , FILE MANAGEDFILE EXTERNALвключая архитектурные диаграммы, см. FILE MANAGED и FILE EXTERNAL.

Поля

Значение FILE содержит следующие поля:

Поле Type Description
uri STRING URI файла. Это поле не может быть null.
offset BIGINT Смещение в файл в байтах.
size BIGINT Размер файла в байтах.
content_type STRING Тип MIME файла, когда он известен.
checksum STRING Токен целостности для байтов файла вида <algorithm>:<digest>. Для распознанных алгоритмов см. Контрольные суммы.

Limits

  • Тип FILE не гарантирует заказ. Вы не можете использовать FILE столбец как столбец для разбивания, столбца кластеризации, MAP ключа, ключа join или выражения группировки. Чтобы сгруппировать по файлу, группируйте по его uri полю.

Literals

Для создания FILE значения см. следующие функции:

В CAST a VARIANT или STRUCT значение в FILE:

  • A STRUCT должен иметь именно эти поля с этими названиями и типами: struct<uri:string, offset:bigint, size:bigint, content_type:string, checksum:string>.
  • Обязательно VARIANT включать поле uri . Все остальные поля являются необязательными, и любые дополнительные ключи игнорируются.

Накладывайте на FILE, а не в FILE EXTERNAL или FILE MANAGED. Целевой столбец определяет, является ли полученная ссылка внешней или управляемой. Когда вы записываете внешнюю ссылку на столбец FILE MANAGED , Databricks загружает её в управляемое хранилище.

Примечания

  • Как столбец верхнего уровня таблицы, FILE должен быть объявлен как FILE MANAGED или FILE EXTERNAL. Использование FILE во всех остальных случаях:
    • В качестве параметра или типа возврата в SQL, Python и пользовательских функциях Scala (UDF), а также в хранимых процедурах SQL.
    • Как целевой тип a CAST из значения a VARIANT или STRUCT значения.
    • Вложенное внутри , STRUCT, ARRAYзначения MAP, VARIANTили . Поддерживаются только внешние файлы внутри VARIANT.
  • Для чтения метаданных файла используйте uriполя , offset, size, content_typeи checksum поля с точечной нотацией, например file_column.uri.
  • Чтобы извлечь структурированное содержимое из файла, передайте FILEзначение функциональнойai_parse_document функции.

Examples

Чтобы объявить таблицу с управляемым FILE столбцом, установить свойство databricks.filespace-preview таблицы на путь тома, который Unity Catalog использует как управляемое хранилище:

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

Чтобы объявить таблицу с внешним FILE столбцем:

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

Чтобы заполнить его из уже существующих файлов в томе:

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

Чтобы прочитать метаданные файла с помощью точечной нотации:

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

Чтобы построить FILE значение из структуры:

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;