Consulta de tabelas de diretório

Este tópico aborda como consultar uma tabela de diretório para recuperar uma lista de todos os arquivos em um estágio com metadados, como o URL de arquivo Snowflake, para cada arquivo.

Sintaxe para consultar uma tabela de diretório:

SELECT * FROM DIRECTORY( @<stage_name> )
Copy

Onde:

stage_name

Nome de um estágio que tem uma tabela de diretório ativada.

Para obter mais informações sobre SELECT como uma instrução e as outras cláusulas dentro da instrução, consulte Sintaxe de consulta na Referência de comandos SQL Snowflake.

Saída

A saída de uma consulta de tabela de diretório pode incluir as seguintes colunas:

Coluna

Tipo de dados

Descrição

RELATIVE_PATH

TEXT

Caminho para os arquivos a serem acessados usando o URL do arquivo.

SIZE

NUMBER

Tamanho do arquivo (em bytes).

LAST_MODIFIED

TIMESTAMP_LTZ

Carimbo de data/hora em que o arquivo foi atualizado pela última vez no estágio.

MD5

HEX

Soma de verificação MD5 para o arquivo.

ETAG

HEX

Cabeçalho ETag para o arquivo.

FILE_URL

TEXT

URL do arquivo Snowflake para o arquivo.

O URL do arquivo tem o seguinte formato:

https://<account_identifier>/api/files/<db_name>.<schema_name>.<stage_name>/<relative_path>
Copy

Onde:

account_identifier

Nome do host da conta Snowflake para seu estágio. O nome do host começa com um localizador de conta (fornecido pelo Snowflake) e termina com o domínio Snowflake (snowflakecomputing.com):

account_locator.snowflakecomputing.com

Para obter mais detalhes, consulte Identificadores de conta.

Nota

Para contas Business Critical, um segmento privatelink é anexado ao URL logo antes de snowflakecomputing.com (privatelink.snowflakecomputing.com), mesmo se a conectividade privada ao serviço Snowflake são estiver habilitado para sua conta.

db_name

Nome do banco de dados que contém o estágio em que seus arquivos estão localizados.

schema_name

Nome do esquema que contém o estágio em que seus arquivos estão localizados.

stage_name

Nome do estágio em que seus arquivos estão localizados.

relative_path

Caminho para os arquivos a serem acessados usando o URL do arquivo.

Notas de uso

  • Se os arquivos baixados de um estágio interno estiverem corrompidos, verifique com o criador do estágio se ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE') está definido para o estágio.

Exemplos

Este exemplo recupera todas as colunas de metadados em uma tabela de diretório para um estágio chamado mystage:

SELECT * FROM DIRECTORY(@mystage);
Copy

Este exemplo recupera os valores da coluna FILE_URL de uma tabela de diretório para arquivos com tamanho superior a 100 K bytes:

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE SIZE > 100000;
Copy

Este exemplo recupera os valores da coluna FILE_URL de uma tabela de diretório para arquivos de valores separados por vírgula:

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE RELATIVE_PATH LIKE '%.csv';
Copy

Criação de uma exibição para dados não estruturados usando uma tabela de diretório

Você pode unir uma tabela de diretório a outras tabelas Snowflake para produzir uma exibição de dados não estruturados que combine os URLs de arquivo com metadados sobre os arquivos.

O diagrama a seguir ilustra como é possível usar um estágio com uma tabela de diretório ativada juntamente com uma tabela de dados separada para criar uma exibição abrangente para arquivos não estruturados em um estágio.

Create a comprehensive view of unstructured data by joining a directory table with another Snowflake table

Exemplo: Criação de uma exibição de arquivos PDF e seus dados

O exemplo a seguir cria uma exibição chamada reports_information unindo uma tabela de diretório em um estágio chamado my_pdf_stage com uma tabela chamada report_metadata usando a chave file_url. O estágio contém relatórios de PDF, enquanto a tabela report_metadata contém informações estruturadas sobre cada relatório de PDF, como author e publish_date. A exibição resultante fornece uma maneira de obter informações sobre PDFs não estruturado e seus metadados estruturados relacionados.

CREATE VIEW reports_information AS
  SELECT
    file_url as report_link,
    author,
    publish_date,
    approved_date,
    geography,
    num_of_pages
  FROM directory(@my_pdf_stage) s
  JOIN report_metadata m
  ON s.file_url = m.file_url
Copy