Implantação de objetos de projeto dbt¶
Em dbt Projects on Snowflake, a implantação de um objeto de projeto dbt significa copiar o código do projeto dbt no Snowflake para criar ou atualizar o objeto com uma nova versão. Faça isso com o Snowsight ou os comandos CREATE DBT PROJECT ou ALTER DBT PROJECT SQL, ou com o comando snow dbt deploy na Snowflake CLI.
Implantação de objeto de projeto dbt usando o Snowsight¶
A implantação de um objeto de projeto dbt no Snowsight usa o código dbt em seu espaço de trabalho e cria um novo ou atualiza um projeto dbt existente.
Para implantar um objeto de projeto dbt no Snowsight, execute o comando dbt deps e siga estas etapas:
Faça login no Snowsight.
No menu de navegação, selecione Projects » Workspaces.
No menu Workspaces, selecione o espaço de trabalho com seu projeto dbt.
Confirme se todos os arquivos dbt estão presentes.
Para verificar se tudo está funcionando, execute o comando
dbt compile,dbt runou dbt build da seguinte maneira:Abaixo do editor do espaço de trabalho, abra a guia Output para que você possa ver o stdout depois de executar os comandos do dbt no espaço de trabalho.
Na barra de menus acima do editor do espaço de trabalho, confirme se o Project e o Profile corretos estão selecionados.
Na lista de comandos, selecione dbt compile,
dbt runou dbt build e clique no botão de execução. Esta etapa analisa o projeto.
No canto superior direito do espaço de trabalho, selecione Connect e escolha uma das seguintes opções:
Deploy dbt project para conectar um novo projeto dbt. Na primeira implantação, essa opção cria um objeto de projeto dbt no nível do esquema.
:Existing dbt deployment para conexão com um projeto dbt existente. A implantação adiciona uma nova versão ao objeto de projeto dbt existente (equivalente a
ALTER DBT PROJECT … ADD VERSION FROM 'snow://workspace/…/versions/last').
Na janela pop-up Deploy dbt project, selecione o seguinte:
Em Select location, selecione o banco de dados e o esquema.
Em Select or Create dbt projecr, selecione Create dbt project.
Insira um nome e uma descrição.
Se preferir, insira um destino padrão para escolher o perfil que será usado para compilação e execuções subsequentes (por exemplo, prod). Ainda é possível substituir o destino da execução de um projeto dbt por
--targetemARGS.Se preferir, selecione Run dbt deps e escolha a integração de acesso externo para executar
dbt depsautomaticamente durante a implantação.
Selecione Deploy.
A guia Output exibe o comando que é executado no Snowflake, muito semelhante ao seguinte exemplo:
CREATE DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project FROM 'snow://workspace/mydb.my_dbt_projects_schema.sales_model/versions/version$2' EXTERNAL_ACCESS_INTEGRATIONS = ();
my_dbt_project successfully created.O menu Connect agora exibe o nome do objeto de projeto dbt que você criou com as seguintes opções:
Redeploy dbt project: atualiza o objeto de projeto dbt com a versão atual do espaço de trabalho do projeto usando ALTER. Isso incrementa a versão do objeto de projeto dbt em um. Para obter mais informações, consulte Controle de versão para objetos e arquivos de projeto dbt.
Disconnect: desconecta o espaço de trabalho do objeto de projeto dbt, mas não exclui o objeto.
Edit project: atualiza o comentário, o destino padrão e a integração de acesso externo no objeto de projeto dbt.
View project: abre o objeto de projeto dbt no explorador de objetos, em que é possível visualizar o comando CREATE DBT PROJECT para o objeto de projeto dbt e o histórico de execuções do projeto.
Create schedule: mostra opções para você criar uma tarefa que executa o objeto de projeto dbt de acordo com um cronograma. Para obter mais informações, consulte Criação de tarefa para agendar a execução do projeto dbt.
View schedules: abre uma lista de cronogramas (tarefas) que executam o objeto de projeto dbt, com a opção de visualizar os detalhes das tarefas no explorador de objetos.
Para confirmar se o projeto dbt existe, execute o comando SHOW DBT PROJECTS em uma planilha, por exemplo:
SHOW DBT PROJECTS IN DATABASE mydb;
Implantação de objeto de projeto dbt usando os comandos SQL¶
Os comandos CREATE DBT PROJECT e ALTER DBT PROJECT copiam os arquivos especificados na cláusula FROM da instrução para criar e adicionar novas versões a um objeto de projeto dbt, respectivamente.
O comando CREATE DBT PROJECT cria um novo objeto com uma única versão inicial (por exemplo, VERSION$1), conforme mostrado abaixo.
CREATE DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
DEFAULT_TARGET = 'prod'
EXTERNAL_ACCESS_INTEGRATIONS = my_dbt_ext_access
COMMENT = 'Generates sales data models.';
O comando ALTER DBT PROJECT cria uma nova versão dentro do objeto existente com um número de versão incrementado exclusivo (por exemplo, VERSION$2, VERSION$3 etc.).
-- Update the Git repository object to fetch the latest code
ALTER GIT REPOSITORY sales_db.integrations_schema.sales_dbt_git_stage FETCH;
-- Add a new version to the dbt project object based on the updated Git repository object
ALTER DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project
ADD VERSION
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_project';
Implantação de objeto de projeto dbt usando o Snowflake CLI¶
O comando snow dbt deploy carrega arquivos locais para uma área de preparação temporária e cria um novo objeto de projeto dbt, atualiza-o criando uma nova versão ou recria-o por completo. Um projeto dbt válido deve conter dois arquivos:
dbt_project.yml: um arquivo de configuração dbt padrão que especifica o perfil que deve ser usado.profiles.yml: uma definição de perfil de conexão dbt referenciada emdbt_project.yml. Oprofiles.yamldeve definir o banco de dados, a função, o esquema e o tipo.Por padrão, dbt Projects on Snowflake usa o esquema de destino (
target.schema) especificado do seu ambiente ou perfil dbt. Ao contrário do comportamento do dbt Core, o esquema de destino especificado no arquivoprofiles.ymldeve existir antes de você criar o projeto dbt para que ele seja compilado ou executado com sucesso.
<profile_name>: target: dev outputs: dev: database: <database_name> role: <role_name> schema: <schema_name> type: snowflake
Os exemplos a seguir ilustram como usar o comando snow dbt deploy:
Implante um objeto de projeto dbt chamado
jaffle_shop:snow dbt deploy jaffle_shop
Implante um projeto chamado
jaffle_shopde um diretório especificado e crie ou adicione uma nova versão, dependendo se o objeto de projeto dbt já existe ou não:snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --force
Implante um projeto chamado
jaffle_shopde um diretório especificado usando um diretório de perfis personalizados e habilitando as integrações de acesso externo:snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --default-target dev --external-access-integration dbthub-integration --external-access-integration github-integration --force
Locais dos arquivos de origem¶
Os arquivos de origem do projeto dbt podem estar em qualquer um dos seguintes locais:
Uma área de preparação de repositórios Git, por exemplo:
'@my_db.my_schema.my_git_repository_stage/branches/my_branch/path/to/dbt_project_or_projects_parent'Para obter mais informações sobre a criação de um objeto de repositório Git no Snowflake que conecta um repositório Git a um espaço de trabalho para dbt Projects on Snowflake, consulte Criação de espaço de trabalho conectado ao repositório Git. Para obter mais informações sobre como criar e gerenciar um objeto e uma área de preparação do repositório Git sem usar um espaço de trabalho, consulte Uso de um repositório Git no Snowflake e CREATE GIT REPOSITORY.
Uma área de preparação de projetos dbt existente, por exemplo:
'snow://dbt/my_db.my_schema.my_existing_dbt_project_object/versions/last'O especificador de versão é obrigatório e pode ser
last(como mostrado no exemplo anterior),first, ou o especificador de qualquer versão existente no formatoversion$<num>. Para obter mais informações, consulte Controle de versão para objetos e arquivos de projeto dbt.Uma área de preparação interna nomeada, por exemplo:
'@my_db.my_schema.my_internal_named_stage/path/to/dbt_projects_or_projects_parent'Não há suporte para áreas de preparação internas de usuários e áreas de preparação de tabelas.
Um espaço de trabalho para dbt no Snowflake, por exemplo:
'snow://workspace/user$.public."my_workspace_name"/versions/live/path/to/dbt_projects_or_projects_parent'Recomendamos colocar o nome do espaço de trabalho entre aspas duplas porque os nomes do espaço de trabalho diferenciam maiúsculas de minúsculas e podem conter caracteres especiais.
O especificador de versão é obrigatório e pode ser
last,first,liveou o especificador para qualquer versão existente no formatoversion$<num>. Para obter mais informações, consulte Controle de versão para objetos e arquivos de projeto dbt.