-
Notifications
You must be signed in to change notification settings - Fork 13
Rodar modelos dbt localmente
Laura Amaral edited this page May 2, 2024
·
1 revision
-
Clonar o diretório
queries-basedosdados-dev
-
Acessar o diretório
queries-basedosdados-dev
cd <path/do/seu/clone/queries-basedosdados-dev>
- Atualizar o
pip
É muito importante garantir que a versão do pip está atualizada antes dos próximos passos.
python -m pip install --upgrade pip
- Instalar o poetry
pip install poetry
- Criar o ambiente virtual e instalar as dependências
poetry install --with=dev && pre-commit install
- Ative o ambiente virtual
poetry shell
- Instalar os pacotes do dbt no ambiente local
dbt deps
Para que o teste dos modelos seja feito localmente é necessário mudar o caminho das credenciais que ficam no arquivo profiles.yml
.
- Criar uma cópia do arquivo
profiles.yml
original fora do repoqueries-basedosdados-dev
, - No campo
keyfile
altera o caminho para a credencial local (se vc já usou o pacotebasedosdados
ela deve estar em/home/<user>/.basedosdados/credentials/prod.json
)
Pronto! agora você já tem seu ambiente configurado para desenvolver e rodar os modelos no seu ambiente local.
Mais informações: https://docs.getdbt.com/reference/node-selection/syntax
# materializa um único modelo pelo nome
$ dbt run --select dataset_id__table_id --profiles-dir <path/to/profiles.yml>
# materializa todos os modelos em uma pasta
$ dbt run --select model.dateset_id.table_id --profiles-dir <path/to/profiles.yml>
# materializa todos os modelos no caminho
$ dbt run --select /models/dataset_id --profiles-dir <path/to/profiles.yml>
# materializa um único modelo pelo caminho sql
$ dbt run --select /models/dataset/table_id.sql --profiles-dir <path/to/profiles.yml>
- Comando para executar o modelo:
dbt test --select <path/to/dataset> --profiles-dir <path/to/profiles.yml>
-
Obs: Como os testes ficam no arquivo
schema.yml
não é possível passar o caminho do.sql
para realizar testes, mas
Caso você esteja com esse erro:
- Rode
which dbt
- Exclua a
virtualenv
do repositório - Reinstale o processo o
poetry
e crie outravirtualenv
Unable to generate access token, if you're using impersonate_service_account,
make sure your initial account has the "roles/iam.serviceAccountTokenCreator"
role on the account you are trying to impersonate.
{'error': 'invalid_grant',
'error_description':
'Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe.
Check your iat and exp values in the JWT claim.'})
- O erro ocorre em virtude de um descompasso do horário do WSL2 com o horário do Windows. Por alguns motivos o horário do WSL pode ficar defasado. Como os tokens de validação de acesso da service account duram 60 minutos, se o horário local do WSL2 tiver uma defasagem maior ocorre o erro.*
Uma das alternativas para resolver o erro acima é seguir os passos abaixo (para mais detalhes acessar esse guia):
- No console do Powershell rode o comando abaixo para ver o horário no windows e o horário no WSL2;
Get-Date; wsl.exe date
- No console do WSL
#instale
sudo apt install ntpdate
#rode o comando para sincronizar os horários
sudo ntpdate time.windows.com