Configurando o projeto dbt e carregando dados

Estudo de caso: criando modelos de dados de e-commerce com dbt

Susan Sun

Freelance Data Scientist

Revisão: configuração e inicialização do dbt

Instale o dbt

pip install dbt

Inicialize o projeto dbt looker_ecommerce

dbt init looker_ecommerce

Verifique se deu certo

cd looker_ecommerce
dbt debug

Diretório de arquivos gerados automaticamente pelo dbt:

Uma repetição da captura de tela da lição anterior. Inclui uma série de diretórios de arquivos gerados automaticamente por dbt init. A pasta de nível superior se chama looker e-commerce. As pastas filhas são analyses, macros, models, seeds, snapshots e tests. Há também três arquivos diversos: gitignore, dbt project yaml e um readme markdown.

Estudo de caso: criando modelos de dados de e-commerce com dbt

Conhecendo os dados: centros de distribuição

  • distribution_centers.csv é pequeno e estático, com apenas 10 linhas

  • Uma amostra do arquivo bruto distribution_centers.csv

Uma prévia do arquivo de centros de distribuição contendo três linhas de dados e 4 colunas. Os nomes das colunas são id, name, latitude e longitude.

  • id: Identificador único de cada centro de distribuição
  • name: Nome do centro de distribuição
  • latitude: Coordenada de latitude do centro de distribuição
  • longitude: Coordenada de longitude do centro de distribuição
Estudo de caso: criando modelos de dados de e-commerce com dbt

Conhecendo os dados: pedidos

orders.csv é grande e está sempre atualizando, com 125.000 linhas e 9 colunas

  • order_id: ID único de cada item do pedido
  • user_id: ID do usuário que fez o pedido
  • status: Status do pedido
  • gender: Gênero do usuário
  • created_at: Timestamp de criação do pedido
  • returned_at: Timestamp de devolução do pedido
  • shipped_at: Timestamp de envio do pedido
  • delivered_at: Timestamp de entrega do pedido
  • num_of_items: Número de itens em cada pedido
Estudo de caso: criando modelos de dados de e-commerce com dbt

Conhecendo os dados: pedidos

Uma amostra do arquivo bruto orders.csv:

Uma prévia do arquivo de pedidos contendo duas linhas de dados e 9 colunas. Os nomes das colunas são order id, user id, status, gender, created at, returned at, shipped at, delivered at e num of items.

Estudo de caso: criando modelos de dados de e-commerce com dbt

Configurando fontes brutas e dados seed

Arquivo bruto de dados de centro de distribuição:

  • Características dos dados:
    • Arquivo pequeno e simples (csv)
    • Dados de mudança lenta

Arquivo bruto de dados de pedidos:

  • Características dos dados:
    • Conjunto de dados grande
    • Dados de mudança rápida
  • Método de carga no dbt:
    • dbt seed
    • Carregar uma única vez
  • Método de carga no dbt:
    • dbt source
    • Conector para DuckDB
Estudo de caso: criando modelos de dados de e-commerce com dbt

Configurando fontes brutas e dados seed

dbt init gera automaticamente a estrutura básica de arquivos:

looker_ecommerce/
  macros/
  models/
  seeds/
  snapshots/
  tests/
  dbt_project.yml
Estudo de caso: criando modelos de dados de e-commerce com dbt

Configurando fontes brutas e dados seed

Carregue distribution_center como seed:

looker_ecommerce/
  macros/
  models/
    stg_looker__distribution_centers.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml

Em stg_looker__distribution_centers.sql:

SELECT 
  id,
  name,
  latitude,
  longitude
FROM 
 {{ref('looker__distribution_centers')}}
Estudo de caso: criando modelos de dados de e-commerce com dbt

Configurando fontes brutas e dados seed

Carregue orders como source:

looker_ecommerce/
  macros/
  models/
    stg_looker__orders.sql
  seeds/
  snapshots/
  tests/
  dbt_project.yml

Em stg_looker__orders.sql:

SELECT *
FROM 
{{source('looker_ecommerce', 'orders')}}
Estudo de caso: criando modelos de dados de e-commerce com dbt

Documentando sources e modelos de staging

Para documentar sources:

looker_ecommerce/
  macros/
  models/
    _looker__sources.yml
  seeds/
  snapshots/
  tests/
  dbt_project.yml

Em _looker__sources.yml:

version: 2

sources:
  - name: looker_ecommerce
    tables:
      - name: orders
Estudo de caso: criando modelos de dados de e-commerce com dbt

Documentando sources e modelo de staging

  • Exemplo de arquivo _looker__models.yml no mesmo diretório models:
version: 2

models:
  - name: stg_looker__distribution_centers
    description: Nome e localização do centro de distribuição    

  - name: stg_looker__orders
    description: Informações do pedido, como status
Estudo de caso: criando modelos de dados de e-commerce com dbt

Sources, seeds, modelos e yaml

looker_ecommerce/
  macros/
  models/
    _looker__models.yml
    _looker__sources.yml
    stg_looker__distribution_centers.sql
    stg_looker__orders.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml
Estudo de caso: criando modelos de dados de e-commerce com dbt

Revisão: subcomandos do dbt

Carrega arquivos csv como seeds

dbt seed

Cria ou atualiza todos os modelos do projeto dbt

dbt run

Cria ou atualiza o modelo especificado

dbt run --select model

Executa todos os testes do projeto dbt

dbt test 

Executa testes para o modelo especificado

dbt test --select model

Combina dbt run e dbt test em um só!

dbt build
dbt build --select model
Estudo de caso: criando modelos de dados de e-commerce com dbt

Revisão: guias de boas práticas

estrutura de nomes de models:

  • usa dois underlines para separar a fonte de dados do nome do modelo
  • <data_source>__<model_name>.sql

ex.:

  • stg_looker__distribution_centers.sql
  • stg_looker__orders.sql

estrutura de nomes de arquivos yaml:

  • começa com um underline
  • usa dois underlines para separar a fonte de dados do tipo de artefato
  • _<data_source>__<artifact_type>.yml

ex.:

  • _looker__models.yml
  • _looker__sources.yml
1 https://docs.getdbt.com/best-practices
Estudo de caso: criando modelos de dados de e-commerce com dbt

Vamos praticar!

Estudo de caso: criando modelos de dados de e-commerce com dbt

Preparing Video For Download...