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 to connect to an existing dbt project. Deploying adds a new version to the existing dbt project object (equivalent to
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.
Under Select or Create dbt project, select 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: Updates the dbt project object with the current workspace version of the project by using ALTER. This increments the version of the dbt project object by one. For more information, see Versões de 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
Deploy a project named
jaffle_shopfrom a specified directory using a custom profiles directory, a specific dbt version, and enabling external access integrations:snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --default-target prod --dbt-version 1.10.15 --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'The version specifier is required and can be
last(as shown in the previous example),first, or the specifier for any existing version in the formversion$<num>. For more information, see Versões de 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.
The version specifier is required and can be
last,first,live, or the specifier for any existing version in the formversion$<num>. For more information, see Versões de objetos e arquivos de projeto dbt.