← Voltar ao arquivo

Databricks

Databricks - File Metadata column - Você usa?

Databricks - File Metadata column - Você usa?

Fala dataholics, na dica de hoje falaremos sobre File Metadata column, ou em português coluna de metadados dos arquivos, esse recurso é extremamente útil e quando bem empregado pode ajudar muito em casos de Troubleshooting e auditoria.

Em um post anterior falei sobre a função input_file_name():

https://www.datainaction.dev/post/databricks-como-identificar-de-qual-arquivo-veio-um-determinado-registro

Essa função está marcada como Deprecated, ou seja, em um futuro ela poderá deixar de existir e a recomendação é utilizar o File Metadata column.

Vamos montar um lab parecido com o desse último post.

Carregando 10 arquivos Json para nossa camada RAW, eles foram gerados com dados Fake, abaixo o script de geração que esta no meu Github.

Arquivos gerados:

Visualizar os arquivos usando a função LIST em sql.

Bom, agora carregaremos nossos dados para um Dataframe e depois gravaremos em uma tabela Delta:

Aqui volto a pergunta: "Como saber de qual arquivo cada pessoa veio?"

Parece irrelevante no primeiro momento, embora, é muito útil para casos de investigação de problemas ou auditoria, seja problema de replicação de dados, diferenças de valores e por aí vai, exemplo a ordem de chegada dos arquivos no Lake pode influenciar bastante, logo tendo esse metadado salvo na sua tabela pode ajudar bastante.

No post anterior a resposta foi usar a função Input_File_Name(), mas como já mencionei ela foi depreciada e o ideal agora é usarmos File Metadata column.

Em Python ficaria assim:

Acessando todos os metadados através da coluna _metadata.

Temos informações bem relevantes nessa coluna, como:

  • File path

  • File name

  • File size

  • File Modification time

Como essa é uma coluna que poderá receber novos atributos, para que não tenha problema nos seus pipelines o recomendado é você explicitar as colunas desejadas assim:

Agora podemos rastrear de qual arquivo um determinado registro veio.

Também podemos fazer o mesmo com SQL.

Ao contrário da função Input_File_Name() o File Metadata column é totalmente suportado dentro do Unity Catalog.

Não é necessariamente uma recomendação ou boa prática, mas ter esses metadados pelo menos na sua camada inicial, seja bronze, raw ou nome que você desejar, pode ajudar e muito em problemas futuro, claro que deve considerar que é mais espaço em uso no Storage.

Espero que ajude.

Fique bem e até a próxima.

Referencias:

https://learn.microsoft.com/en-us/azure/databricks/ingestion/file-metadata-column

Gostou? Tem mais no YouTube e no LinkedIn.

← Voltar ao arquivo