Хай всем.
Хочу узнать о вашем возможном опыте с dbt. Пришла весточка от начальства потрогать этот продукт, трогую.
Честно говоря не сказал бы, что прям очень нужен в текущем технопарке.
Что у меня? Потсгря и Гринплам. Для перекатки данных между staging-таблицами c основной дата-моделью в DWH юзаем PXF, gpdist и дергая опред. plpgsql функции.
Процедуры и вьюхи и так коммитим в отдельную git-repo.
Из плюсов (для себя), с dbt действительно удобно перекатывать данные между слоями. Есть заготовки под GitOps и автоматизации. Хорошо для новых и мелких проектов.
Из минусов, если тебя шардированная база которая давно в ПРОД, dbt не очень поможет. Слишком затратно на него переделывать. Плюс в ПРОД много прибитых гвоздями вещей, как процедуры которые быстро и оптимизировано обрабатывают данные со слоев. Заготовки по FDW и др.
Так же, для минус - не очень удобно вызывать нативные функции. Простой пример:
select uuid_in(md5(random()::text)::cstring);
На уровне абстракций с dbt, ес-но нет ни каких специфичных в опред. РСУБД функций (как и ее возвращаемых типов). И чтобы dbt мог загонять данные с uuid_in к примеру, нужно повозиться.
Это просто пример, можно конечно аналог найти на dbt. Но любой кто поддерживает базу понимает, что это мелкий пример. В реальной базе будет куча более сложных функций и не скалярных, а композитного типа внутри которого юзаются скаляры которые принимены к опред. РСУБД только.
Поскольку я только начал разбирать dbt, может что-то не знаю, поэтому не буду удтверждать. Узнал у своих DBA-знакомых, были негативные отзывы по dbt.
Вопрос: у кого был положительный опыт? Желательно, чтобы опыт был не с мелкой базой, а как минимум шардированной и связанной вообще между РСУБД и NoSQL-решениями. Да-да, может быть такое через EXTERNAL-таблицы. На практике много кто загоняет в raw-слой данные на NoSQL, а потом занимаются структурированием/ нормализацей уже в центральное DWH (чаще всего РСУБД).