Categorias:

Funções do sistema (Informações do sistema)

SYSTEM$LOCATE_DBT_ARTIFACTS

Retorna a localização dos artefatos de uma execução de projeto dbt especificada (por exemplo, manifest.json).

Use essa função com a função DBT_PROJECT_EXECUTION_HISTORY para acessar artefatos e logs dbt programaticamente.

Sintaxe

SYSTEM$LOCATE_DBT_ARTIFACTS ( '<query_id>' )
Copy

Argumentos

query_id

O ID de consulta da execução do projeto dbt cujos arquivos você deseja localizar.

Retornos

A função retorna o caminho do arquivo para artefatos do projeto dbt de uma execução (por exemplo, snow://dbt/DBTEST.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f5a-010b-4d87-0000-53493abb7cce/).

Para obter mais informações e exemplos, consulte Acesso programático a artefatos e logs do dbt.

Requisitos de controle de acesso

Esta função inclui apenas execuções de espaços de trabalho e projetos dbt nos quais você tem os seguintes privilégios:

  • OWNERSHIP ou USAGE em espaços de trabalho

  • OWNERSHIP, USAGE ou MONITOR em projetos dbt

O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema. Observe que uma função com privilégio concedido em um esquema permite que essa função resolva o esquema. Por exemplo, uma função com privilégio CREATE concedido em um esquema pode criar objetos nesse esquema sem também ter USAGE concedido nesse esquema.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • Esta função do sistema funciona apenas em objetos de projeto dbt; ela não está disponível para espaços de trabalho.

  • IDs de consulta gerados a partir de CREATE DBT PROJECT ou ALTER DBT PROJECT … ADD VERSION não são compatíveis com esta função do sistema.

  • Consultas diretas do conteúdo do arquivo (por exemplo, Exemplos de consulta) não são compatíveis.

  • Se query_id for NULL ou não for uma execução dbt, você receberá um erro.

  • Os resultados do projeto dbt ficam disponíveis por até 14 dias.

  • Os arquivos podem ficar indisponíveis se uma execução expirar, for cancelada ou falhar antes de serem carregados. Nesses casos, as execuções aparecem como UNHANDLED ERROR no histórico do dbt.

  • Você não pode usar essa função para obter logs de execuções em andamento, pois o arquivo de logs só fica disponível após a conclusão da execução.

Exemplos

Para visualizar o caminho do estágio em que o Snowflake armazenou os artefatos da execução do projeto dbt (ou seja, a pasta de resultados dessa execução), use a função SYSTEM$LOCATE_DBT_ARTIFACTS, como mostrado no exemplo a seguir. Você pode então usar esse caminho com GET, COPY FILES ou com a CLI do Snowflake para baixar itens como manifest.json, SQL compilado ou logs.

--Look up the most recent dbt Project execution
SET latest_query_id = (SELECT query_id
  FROM TABLE(INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY())
  WHERE OBJECT_NAME = 'MY_DBT_PROJECT'
  ORDER BY query_end_time DESC LIMIT 1);

--Get the dbt run logs for the most recent dbt Project execution
SELECT SYSTEM$GET_DBT_LOG($latest_query_id);
Copy
============================== 15:14:53.100781 | 46d19186-61b8-4442-8339-53c771083f16 ==============================
[0m15:14:53.100781 [info ] [Dummy-1   ]: Running with dbt=1.9.4
...
[0m15:14:58.198545 [debug] [Dummy-1   ]: Command `cli run` succeeded at 15:14:58.198121 after 5.19 seconds
--Get the location of the dbt Project archive ZIP file (see all files)
SELECT SYSTEM$LOCATE_DBT_ARTIFACTS($latest_query_id);
Copy
+-------------------------------------------------------------------------------------------------+
| SYSTEM$LOCATE_DBT_ARTIFACTS($LATEST_QUERY_ID)                                                   |
+-------------------------------------------------------------------------------------------------+
| snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01c01096-010c-0ccb-0000-a99506bd199e/ |
+-------------------------------------------------------------------------------------------------+
--List all the files of the retrieved dbt run
ls 'snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f5a-010b-4d87-0000-53493abb7cce/';
Copy

Você também pode criar uma nova área de preparação interna, localizar o caminho gerenciado pelo Snowflake para os artefatos da execução do projeto dbt especificado e copiar esses artefatos para a sua área de preparação para recuperação, conforme mostrado no exemplo a seguir:

CREATE OR REPLACE STAGE my_dbt_stage ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
Copy

Para obter mais informações, consulte Acesso programático a artefatos e logs do dbt.