Tipo de FILE

Aplica-se a:check marked yes Databricks SQL check marked yes Databricks Runtime 18 LTS and above

Importante

Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.

O FILE tipo representa uma referência a um arquivo não estruturado e seus metadados. Use-o para gerenciar e processar documentos, imagens e áudio junto com dados estruturados no Unity Catalog.

FILE o tipo é suportado apenas para tabelas Delta Lake.

Observação

Esse FILE tipo não é suportado em notebooks serverless. É suportado em notebooks conectados a armazenados SQL serverless Databricks.

Sintaxe

{ FILE MANAGED | FILE EXTERNAL }

Use FILE MANAGED ou FILE EXTERNAL como tipo de coluna quando você declara uma coluna de tabela com CREATE TABLE. Você não pode declarar uma coluna de tabela como FILE sem especificar um ou MANAGEDEXTERNALoutro. FILE é permitido apenas como parâmetro ou tipo de retorno em um UDF, procedimento armazenado ou durante o casting.

Para uma comparação de FILE EXTERNAL e FILE MANAGED, incluindo diagramas de arquitetura, veja FILE EXTERNAL e FILE MANAGED.

Campos

Um FILE valor contém os seguintes campos:

Campo Tipo Description
uri STRING O URI do arquivo. Esse campo não pode ser null.
offset BIGINT Um deslocamento para dentro do arquivo, em bytes.
size BIGINT O tamanho do arquivo em bytes.
content_type STRING O tipo MIME do arquivo, quando conhecido.
checksum STRING Um token de integridade para os bytes do arquivo, da forma <algorithm>:<digest>. Para os algoritmos reconhecidos, veja Checksums.

Limits

  • Esse FILE tipo não garante o pedido. Você não pode usar uma FILE coluna como coluna de particionamento, coluna de clustering, chave MAP , chave de junção ou expressão de agrupamento. Para agrupar por um arquivo, agrupe pelo campo uri em vez disso.

Literals

Para criar um FILE valor, veja as seguintes funções:

Para CAST um VARIANT valor ou STRUCT para FILE:

  • A STRUCT deve ter exatamente esses campos, com os seguintes nomes e tipos: struct<uri:string, offset:bigint, size:bigint, content_type:string, checksum:string>.
  • É VARIANT obrigatório incluir o uri campo. Todos os outros campos são opcionais, e quaisquer teclas adicionais são ignoradas.

Cast para FILE, não para FILE EXTERNAL ou FILE MANAGED. A coluna alvo determina se a referência resultante é externa ou gerenciada. Quando você escreve uma referência externa para uma FILE MANAGED coluna, o Databricks a ingere no armazenamento gerenciado.

Observações

  • Como uma coluna de tabela de nível superior, FILE deve ser declarado como FILE MANAGED ou FILE EXTERNAL. Uso FILE em todos os outros casos:
    • Como um tipo de parâmetro ou retorno em SQL, Python e Scala funções definidas pelo usuário (UDFs) e em procedimentos armazenados em SQL.
    • Como o tipo alvo de a CAST de um VARIANT valor ou STRUCT de a.
    • Aninhado dentro de um STRUCT, um ARRAY, o valor de um MAP, ou um VARIANT. Apenas arquivos externos são suportados dentro de um VARIANTarquivo .
  • Para ler metadados de arquivos, use os uricampos , offset, size, content_type, e checksum com notação pontual, file_column.uripor exemplo.
  • Para extrair conteúdo estruturado de um arquivo, passe um FILE valor para a ai_parse_document função de função.

Examples

Para declarar uma tabela com uma coluna externa FILE :

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

Para preenchê-lo a partir de arquivos que já existem em um 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');

Para ler metadados de arquivos usando notação ponto:

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

Para construir um FILE valor a partir de um struct:

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;