Giter Site home page Giter Site logo

dbt_practica's Introduction

dbt_practice

  1. создаем проект в pycharm
  2. создаем python -m venv .venv или автоматически
  3. активируем окружение source .venv/bin/activate
  4. грузим библиотеки pip install dbt pip install markupsafe==2.0.1
  5. проверяем версию dbt --version
  6. инициализируем проект dbt init [имя проекта] создастся одноименная папка с костяком ососбое внимание к файлу dbt-project.yml
  7. создем docker-compose.yml там пропишем:
  • версию postgres
  • логин пароль с postgres
  • путь к папке с РАСПАКОВАННЫМ бэкапом.zip или .tar с базой postgres типа - ./dvdrental:/dvdrental
  • путь к папке с базой типа - .db/:/var/lib/postgresql/data
  • прописываем порты типа [любой]:5432
  • комментируем в файле build и context
  • docker-compose up --build
  • должен запуститься контейнер
  1. переходим в контейнер docker exec -it [id container] bash
  2. там восстанавливаем базу pg_restore -U postgres -d dvdrental /dvdrental где:
  • -U это пользователь
  • -d это имя базы
  • /папка с разархивированным бэкапом
  1. либо эта база будет исходной сырой базой, которую будем транформировать в витрины
  2. создаем профиль в корневой папке компа .dbt файл profile.yml
  3. название профиля должно совпадать с названием проекта и названием profile: 'имя проекта=профиля' в файле dbt-project.yml из пункта 6.
  4. транформации=модели=задачки находятся в папке models в которой есть подпапки
  5. в папке с моделями создаем файл и описанием источника sourcr.yml
  6. перед запуском помпилируем модели dbt compile
  7. модели запускаются dbt run. Если профиль прописан нормально, то запустятся абсолютно все
  8. запустить конкрктную модель dbt run -m [имя модели без .sql]
  9. чтобы результирующие сущности материализовывались в таблицы или вьюхи проиписываем это в файле dbt-project.yml в разделе models: либо в самом файле с моделью типа {{ config(materialized='table') }}
  10. снапшоты задаем в папке snapshots как файлы.sql
  11. там прописываем целевую схему со снапшотами столбуц с ключом и и временной меткой
  12. Запускаем командой dbt snapshot
  13. в результате в снапшотной схеме появится таблица похожая на исходную со спец полями по стандарту SCD2
  14. использует добавление новой строки и дополнительных столбцов. Такой подход позволяет сохранить историчность.
  15. для запуска вебинтерфрейса dbt docs generate для создания документа с документацией без него не будет работать
  16. потом dbt docs serve --port 8001 обычно порт занят под airflow так что принудительно задаем иной порт
  17. как писал ранее все преобразования прописаны в sql файлах в моделях
  18. лучше все делать по принципу ELT т.е. простыми селектами переносить из исходной схемы в стэйджинговую нужные таблицы а потом дугими моделями делать более слежные штуки с джойнами и проч хуйней через конструкции типа select *, from {{ref("tab1")}} t1 join {{ref("tab2")}} t2 on t1.id = t2.id
  19. эти цепочки отделных задачак будут видны в ДАГах в UI
  20. тэги задаются в файле dbt-project.yml в разделе с моделями
  21. удобно будет запускать dbt run -m tag:[имя тэга] чтоб не хуярить все подряд
  22. тесты пишем как запросы в sql файлах в папке tests. Если тест что-то вернул значит он провалился т.е. если нам нужно отловить пропуск мы пишем select * from {{ref ("таблица")}} where поле is null если пропуск в этой таблице этом поле есть вернется что-то значит тест провалился так можно записывать любую хуйню. типа:
  • дата конца меньше чем дата начала,
  • сумма > какого-то порога
  • количество < 0
  • и т.д.
  1. Устанавливаем расширения добавлением в папку проекта файл pakages.yml

dbt_practica's People

Contributors

choodnovsky avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.