<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Дима пишет | Дмитрий Смотров: заметки с тегом DataWarehouse</title>
<link>https://dimasmotrov.ru/tags/datawarehouse/</link>
<description>backend python fastapi django rabbitmq kafka postgresql sqlalchemy</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>backend python fastapi django rabbitmq kafka postgresql sqlalchemy</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Пробился на хабр</title>
<guid isPermaLink="false">39</guid>
<link>https://dimasmotrov.ru/all/probilsya-na-habr/</link>
<pubDate>Tue, 02 Dec 2025 19:23:53 +0300</pubDate>
<author></author>
<comments>https://dimasmotrov.ru/all/probilsya-na-habr/</comments>
<description>
&lt;p&gt;Написал свою первую статью на хабре, посвященную техническим аспектом из &lt;a href="https://dimasmotrov.ru/all/ya-tut-proekt-pod-klyuch-realizoval/"&gt;поста&lt;/a&gt; про реализованную мной функциональность красивой работы с данными.&lt;/p&gt;
&lt;p&gt;Прикольный опыт редактора более менее серьезного материала. Текст старался держать больше в литературном стиле, нежели в сухом техническом, так что читаться будет легко.&lt;/p&gt;
&lt;p&gt;Почитать можно тут — &lt;a href="https://habr.com/ru/companies/astralinux/articles/972328/"&gt;https://habr.com/ru/companies/astralinux/articles/972328/&lt;/a&gt; . Там как раз есть пара спорных моментов, на мой взгляд, с удовольствием подхвачу накидывание на вентилятор. Так что задавайте ваши вопросы :)&lt;/p&gt;
</description>
</item>

<item>
<title>Я тут проект под ключ реализовал</title>
<guid isPermaLink="false">29</guid>
<link>https://dimasmotrov.ru/all/ya-tut-proekt-pod-klyuch-realizoval/</link>
<pubDate>Mon, 02 Jun 2025 23:58:08 +0300</pubDate>
<author></author>
<comments>https://dimasmotrov.ru/all/ya-tut-proekt-pod-klyuch-realizoval/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://dimasmotrov.ru/pictures/image-16.png.jpg" width="2560" height="1651" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Для кого заключительная неделя перед релизом, а для меня первый день отпуска. Отоспавшись на выходных, решил подвести итоги своей работы за полдгода.&lt;/p&gt;
&lt;p&gt;С декабря месяца я взялся поднимать функциональность аналитики и отчетности в АСМ(это продукт, разработкой которого я занимаюсь). План был прост:&lt;br /&gt;
1) Собрать команду&lt;br /&gt;
2) Разобраться в устройстве корпоративных хранилищ данных, ведь аналитика и отчетность строится на каких-то данных, а данные еще нужно сложить и подготовить для отображения(привет data engineering).&lt;br /&gt;
3) Разобраться в моделирование бизнес-процессов для подготовки аналитических данных.&lt;br /&gt;
4) Сделать хранилище и смоделировать один бизнес процесс для обкатки выбранных подходов и инструментов.&lt;br /&gt;
5) Сделать отображение данных в графиках и таблицах.&lt;/p&gt;
&lt;p&gt;И тут в целом можно было вспомнить, что я так-то бекенд разработчик, чем я тут вообще занимаюсь. Но вспоминать было некогда — работы вагон и еще три состава:&lt;br /&gt;
— Вместо одного бизнес процесса моделировать пришлось 5. Два месяца я засыпал и просыпался я в обнимку с томиком Кимбалла.&lt;br /&gt;
— Параллельно происходил ресерч и обоснование выбранных технологий для построения ETL-процессов и отображения данных, ресурсов на разработку собственных решений за отведенное время нет.&lt;br /&gt;
— Команда собрана. Нас пятеро друзей Оушена.&lt;br /&gt;
— Мы соответствуем РБПО, поэтому выбранные инструменты затянуты к себе и взяты на поддержку.&lt;br /&gt;
— Были подняты стенды для дев и целевой среды, так на свет родились deb-пакеты для Airflow и Superset, несуществовавшие в природе до этого. CI часть этого всего — это почти еще один продукт :)&lt;br /&gt;
— Разработаны ETL-процессы. Полностью. С нуля.&lt;br /&gt;
— Разработаны предустановленные отображения для данных. 6 страниц с кучей данных и переходами между друг другом, связанные общими фильтрами.&lt;br /&gt;
— Мы разворачиваемся у клиента с минимальными махинациями в админках используемых инструментов — так в dag-скриптах появились env’ы с подключением к БД и автоматический импорт дашбордов.&lt;br /&gt;
— Документация. Мы еще даже рассказываем, как при желании сделать собственные страницы с отчетами и как у нас там данные лежат.&lt;/p&gt;
&lt;p&gt;Список можно продолжать и дальше, привел ключевые пункты. На самом деле делать пришлось больше запланировано, в конце апреля я сидел и думал, успеем ли мы все сделать. Сделали большую часть, прям блин большую.&lt;/p&gt;
&lt;p&gt;Выпускаемся и смотрим, что делаем дальше. Жду обратную связь от пользователей.&lt;/p&gt;
&lt;p&gt;Сделано столько работы, а это будто лишь начало пути.&lt;/p&gt;
</description>
</item>

<item>
<title>SqlAlchemy в ETL процессах</title>
<guid isPermaLink="false">23</guid>
<link>https://dimasmotrov.ru/all/sqlalchemy-v-etl-processah/</link>
<pubDate>Wed, 28 May 2025 21:30:10 +0300</pubDate>
<author></author>
<comments>https://dimasmotrov.ru/all/sqlalchemy-v-etl-processah/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://dimasmotrov.ru/pictures/image-10.png" width="1280" height="303" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;На прошлой неделе затягивал алхимию в dag-скрипты для airflow. Так как AF не хостится на нашей стороне, а доставляется до заказчика, хотелось обойтись без использования внутренних соединений с БД(я про connections внутри AF) и написания SQL-запросов в plain-тексте дабы сохранить единообразие кодовой базы с обычными нашими сервисами по максимуму.&lt;/p&gt;
&lt;p&gt;По мимо того, что вместо второй версии пришлось использовать 1.4, а это потянуло за собой использование более старых версий mypy и затягивания плагинов для алхимии, ну и переписывание моделей на старый лад, столкнулся с интересным приколом: alembic начал ругаться на то, что у меня для одной метадаты в нескольких моделях одинаковые названия таблиц.&lt;/p&gt;
&lt;p&gt;У меня действительно пара моделей с одинаковыми названиями, но одна из этих моделей не видна алембику, ведь я ее скрыл, учитывать ее в миграциях не нужно, эта модель только для чтения. Получалось, что при запуске миграций модуль с базовой моделью грузился дважды из-за того, что базовая модель импортировалась через разные пути.&lt;/p&gt;
&lt;p&gt;Можно было решить эту проблему в лоб и переместить папку с миграциями поближе к коду, но это так ужасно выглядело, что нужно было бы еще рефачить структуру файлов в проекте, в общем запара.&lt;/p&gt;
&lt;p&gt;В итоге, разделив базовый класс для моделей(и соответственно разделив инстанс метадаты для этих классов), я добавил больше логического разделения и починил проблему с дублированием метадаты.&lt;/p&gt;
&lt;p&gt;Дешевое и приятное решение, почаще бы таких :)&lt;/p&gt;
</description>
</item>


</channel>
</rss>