BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по Greenplum » Как ускорить процесс аналитики данных с помощью Greenplum и dbt

Как ускорить процесс аналитики данных с помощью Greenplum и dbt

Подробное руководство, созданное для того, чтобы помочь Вам создать и развернуть свой первый проект dbt на базе хранилища данных Greenplum.

 

Dbt (Data Build Tool) — это инструмент трансформации данных в конвейере ELT, позволяющий командам преобразовывать данные, используя лучшие практики программной инженерии. Благодаря встроенной поддержке подключения ко многим хранилищам данных dbt выполняет SQL-запросы к платформам данных,  а также к хранилищам данных, позволяя материализовать данные в виде таблиц и представлений.

Данный инструмент используется для написания модульного и централизованного кода хранилища данных, позволяя командам совместно работать над моделями данных, версионировать их, тестировать и документировать запросы, до того, как  модели будут развернуты в производственной среде.

 

В этой статье мы рассмотрим, как тандем Greenplum и dbt может обеспечить надежную и эффективную работу с Big Data и c с легкостью трансформировать их благодаря адаптеру dbt-greenplum, созданному сообществом Greenplum.

 

Что такое хранилище данных Greenplum?

Greenplum - это передовое MPP-хранилище данных с открытым исходным кодом на базе PostgreSQL. Оно обеспечивает мощную и высокоэффективную аналитику Big Data.

В Greenplum используется самый передовой в мире оптимизатор запросов обеспечивающий высокую производительность выполнения аналитических запросов к Big Data.

Более подробная информация доступна по ссылке.

 

Ключевые характеристики Greenplum:

  • Возможность развертывания в публичном или частном облаке, а также опция локального развертывания;
  • Аналитика данных: от BI до ИИ;
  • Простата при работе  с потоковыми данными и корпоративным ETL;
  • Гарантия целостности данных;
  • Лучшие в отрасли показатели  производительности;
  • Обработка данных, исчисляемых петабайтами;
  • Основан на проектах с открытым исходным кодом, таких как PostgreSQL, позволяющих интеграцию с популярными инструментами;
  • Массивно-параллельная архитектура
  • Поставляется с библиотеками, позволяющими обрабатывать геопространственные данные, текст, ML, графы, временные ряды и ИИ;
  • Параллельный доступ к данным с высокой пропускной способностью и обработка запросов к различным источникам данных - от объектных хранилищ, таких как AWS S3, GCS и Azure Blob Storage, до внешних баз данных, таких как PostgreSQL, SQL Server и Oracle.

 

 

dbt + Greenplum

Использование Greenplum и dbt в комплексе позволяет организациям сосредоточиться на данных, не заботясь при этом о настройке производительности, распределении ресурсов, тестировании, управлении изменениями, составлении документации и т.д.

Поскольку Greenplum - это хранилище данных на базе PostgreSQL, клиенты могут использовать адаптер dbt-postgres, разработанный и поддерживаемый компанией dbt Labs. Также доступен адаптер dbt-greenplum: https://docs.getdbt.com/reference/warehouse-setups/greenplum-setup.

Именно он предоставляет доступ к одному из мощнейших хранилищ данных. Его достаточно легко настроить – поверьте, подключение к Greenplum еще никогда не было таким простым, в том числе благодаря большому количеству настроек, установленных по умолчанию.

Благодаря совмещению данных продуктов можно использовать все преимущества мощного хранилища данных. Его очень легко настроить - подключение к Greenplum еще никогда не было таким простым.

 

Итак, не будем медлить и приступим к работе:

Шаг 1: Настройка среды

Установка dbt-greenplum:

  1. В первую очередь мы должны создать новое окружение Python, а затем установить dbt-greenplum с помощью pip3 - это самый простой способ установки адаптера. Установка dbt-greenplum потребует установки dbt-core, а также других зависимостей.
     
$ python3 -m venv dbt-env
$ source dbt-env/bin/activate
$ pip install dbt-greenplum

 

  1. Теперь Вы можете проверить, правильно ли Вы все сделали, запустив команду dbt - version.
$ dbt --version
Core:
  - installed: 1.2.0
  - latest:    1.4.1 - Update available!

  Your version of dbt-core is out of date!
  You can find instructions for upgrading here:
  https://docs.getdbt.com/docs/installation

Plugins:
  - postgres:  1.2.0 - Update available!
  - greenplum: 1.2.0 - Up to date!

  At least one plugin is out of date or incompatible with dbt-core.
  You can find instructions for upgrading here:
  https://docs.getdbt.com/docs/installation

 

  1. Запустите проект greenplum_demo с помощью команды init:
$ dbt init greenplum_demo
$ cd greenplum_demo

 

  1. В результате Вы увидите проект dbt, имеющий следующую структуру:

 

Подключение к конфигурации Greenplum:

На этом шаге мы настроим соединение между dbt и Greenplum с помощью профайла и YAML-файла, содержащего все  деталями соединения с хранилищем данных Greenplum.

  1. Создайте файл в каталоге ~/.dbt/ и назовите его profiles.yml
$ vi ~/.dbt/profile.yml

 

  1. Скопируйте следующие строки и вставьте их в файл profiles.yml.
greenplum_demo:
  target: dev
  outputs:
    dev:
      type: greenplum
      host: [hostname]
      user: [username]
      password: [password]
      port: [port]
      database: [database name]
      schema: [dbt schema]

 

Файл профиля, используемого в данной статье:

 

  1. Запустите команду debug для того, чтобы убедиться в том, что Вы можете установить подключение:
$ dbt debug

 

 

Шаг 2: Запуск dbt

В проекте dbt есть несколько примеров моделей. Для того, чтобы убедиться в том, что все в порядке, проверим, можно ли запустить эти модели.

  1. Введите команду run:
$ d​bt run

 

Если результат будет выглядеть следующим образом, это просто идеально!

 

Шаг 3: Построение dbt-greenplum моделей​:

Адаптер dbt-greenplum поможет пользователям оптимизировать работу с таблицами. Пользователи могут выбрать подходящую им модель хранения (ориентированную на столбцы или строки, оптимизированную для таблиц с приложениями и т.д.), распределение, разделение и стратегию сжатия данных.

Настало время построить модель dbt-greenplum с более продвинутыми  настройками!

  1. Откройте свой проект в предпочитаемом Вами редакторе кода и создайте первую модель dbt;
  2. Создайте два SQL-файла - classic_dbt_model.sql и greenplum_dbt_model.sql, в каталоге моделей.

 

Для того, чтобы создать большую таблицу, которая будет содержать около 265 миллионов строк (!), используем функции Greenplum, такие как generate_series и random.

SELECT time, device_id, random()*100 as cpu_usage
   FROM generate_series(
     now() - INTERVAL '6 months',
      now(),
      INTERVAL '1 minute'
     ) as time,
   generate_series(1,1000) device_id;

 

Создайте файл models/classic_dbt_model.sql и вставьте в него следующий код:

{{ config(materialized='table') }}

with source_data as (

  SELECT time, device_id, random()*100 as cpu_usage
  FROM generate_series(
    now() - INTERVAL '6 months',
     now(),
     INTERVAL '1 minute'
    ) as time,
  generate_series(1,1000) device_id

)
select *
from source_data

 

Эта модель создаст случайно распределенную таблицу Greenplum без расширенных функций.

Затем создайте еще один файл - models/greenplum_dbt_model.sql и вставьте в него следующий код:

{% set fields_string %}
    time timestamp NULL,
    device_id int null,
    cpu_usage double precision
{% endset %}

{% set raw_partition %}
   PARTITION BY RANGE (time)
   (
       START ('2022-06-01'::timestamp) INCLUSIVE
       END ('2024-01-01'::timestamp) EXCLUSIVE
       EVERY (INTERVAL '1 day'),
       DEFAULT PARTITION extra
   );
{% endset %}

{{
   config(
       materialized='table',
       distributed_by='device_id',
       appendonly='true',
       orientation='column',
       compresstype='ZLIB',
       compresslevel=3,
       fields_string=fields_string,
       raw_partition=raw_partition,
       default_partition_name='other_data'
   )
}}

with source_data as (

   SELECT time, device_id, random()*100 as cpu_usage
   FROM generate_series(
     now() - INTERVAL '6 months',
      now(),
      INTERVAL '1 minute'
     ) as time,
   generate_series(1,1000) device_id

)
select *
from source_data

 

Эта модель создаст таблицу Greenplum, ориентированную на столбцы и оптимизированную для приложений. Она будет разбита на столбцы по времени с ежедневным интервалом, что значительно упрощает управление данными и выполнение запросов. Также в ней будет использоваться алгоритм ZLIB с уровнем сжатия = 3.

 

  1. Запустим модели dbt:
$ dbt run

 

 

4. Чтобы увидеть сгенерированный dbt SQL, который был запущен на Greenplum, перейдите в каталог /target/run:

- classic_dbt_model.sql:

 

 

В этой модели была создана таблица с 265 миллионами строк, распределенных случайным образом, с параметрами Greenplum, установленными по умолчанию.

 

greenplum_dbt_model.sql:

 

Во второй таблице данные будут распределены по столбцу device_id. Данная таблица будет ориентирована на столбцы и разбита на разделы с помощью сжатия ZLIB.

 

  1. Когда мы вернемся к консоли Greenplum, мы сможем выбрать одну из этих моделей:

 

Анализ производительности и результатов запросов

Как видите, таблицы в Greenplum имеют мощные конфигурации оптимизации, которые способны повысить производительность запросов в разы. Чтобы сравнить производительность запросов между нашими созданными таблицами dbt, мы запустим запросы к этим двум большим таблицам, содержащим 265 миллионов записей.

- SELECT MAX (cpu_usage) FROM dbt. ***_dbt_model где время >= '2023-01-01'::timestamp:

 

 

  • SELECT COUNT(*) FROM dbt.****_dbt_model WHERE cpu_usage >= 99 AND (время между ‘2023–02–18’::timestamp and ‘2023–02–20’::timestamp):

 

Как и ожидалось, благодаря расширенным возможностям Greenplum аналитические запросы к таблице greenplum_dbt_model, содержащей 265 записей,  выполняются гораздо быстрее – выполнение нашего запроса заняло всего 0,163 секунды, что в десять раз быстрее по сравнению с временем выполнения запросов к таблице classic_dbt_model, которое заняло более 1 секунды.

 

Заключение

Выигрышное сочетание Greenplum и dbt значительно упрощают работу с Big Data, создавая централизованную среду на базе SQL для улучшенной трансформации данных.

Сообщества dbt и Greenplum, созданные для повышения производительности на базе технологий с открытым исходным кодом обеспечивают постоянную разработку и внедрение инноваций, а также минимизируют риски, связанные с блокировкой поставщиков.

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Анализ Big Data с помощью SQL и Python
Следующая статья →
Масштабируем ML и NLP в БД с помощью PL/Python

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • MoneyCare — кредитная платформа и сервис для ПОС-кредитования в магазинах, установленная в более чем 18 тысячах трейдинговых точек и сотрудничающая с 11 главными банками России.

  • С объединением компании Savencia Fromage & Dairy и молочного комбината в г.Белебей, одного из лидеров по производству твердых сычужных сыров в России, Savencia выходит на российский рынок не только как импортер, но и как производитель молочной продукции.

  • «Лента» – первая по величине сеть гипермаркетов и четвертая среди крупнейших розничных сетей страны. Компания была основана в 1993 г. в Санкт-Петербурге.

    «Лента» управляет 249 гипермаркетами в 88 городах России и 131 супермаркетом в Москве, Санкт-Петербурге, Сибири, Уральском и Центральном регионах с общей торговой площадью около 1 494 тыс. кв. м. Средняя торговая площадь одного гипермаркета «Лента» составляет около 5 500 кв.м, средняя площадь супермаркета – 800 кв.м. Компания оперирует двенадцатью распределительными центрами. Штат компании – около 50, 5 тыс. человек.

  • AbbVie – компания, которая стремится решить самые серьезные проблемы здравоохранения. Это биофармацевтическая компания, сфокусированная на исследованиях и разработках.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.