Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
тип
Область применения:
, проверка 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 значения см. следующие функции:
-
to_fileфункция создаёт ссылкуFILEиз пути. -
try_to_fileфункция создаётFILEссылку из пути и возвращаетNULL, если файл не существует. -
create_fileФункция загружает содержимое на путь и возвращает ссылкуFILE. -
copy_fileфункция копирует файл в целевой путь и возвращает ссылку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из значения aVARIANTили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;