Закончил курс по DE от NewProLab
В начале декабря закончился курс. Кратко расскажу какие еще были лабы и дальше общее мнение по курсу.
Прошлый обзор лаб
Лаба5: Сервис персонализации интернет-магазина
Загрузка данных в клик -> рассчитываем данные-> сохраняем в Redis c помощью Airflow и вспомогательных справочников в Postgres
По-моему это самая сложная лаба и больше половины студентов ее не решили. Самое сложное не поднять сервисы, связать все, скачать данные и тд. А написать несколько хитрых SQL запросов! Здесь нужна та самая рекурсия 🥲 Надо собрать многоуровненое дерево категорий и потом к нему обращаться. И дерево может быть с косяками, с несколькими родителями..
И до всего этого реально сложно догадаться. Какие-то около олимпиадные задачки. И честно именно это мне не очень понравилось. То есть я понимал, что нужно многоо времени потратить чтоб все сделать. А желания особого не было. Таких бизнесовых задач мне и на работе хватает, а на курсе я больше всего хотел потрогать инструменты.
Но опять же, кураторы и говорили что это сложная лаба. Там дальше еще и суперачивка.. Без подробностей, просто нужно еще более сложные sql запросы написать.
Я эти лабы выполнил😎 НО с хитростями💅 Чекер проверил данные, все сошлось. Но как я этого добился история умалчивает. Мне кажется я даже более сложную работу проделал, чем написать эти хитрые sql запросы. Наверное я эти лабы выполнял ~30 часов. Запомнится мне это надолго)
При решении этой лабы очень много работал с командной строкой, редисом, Аирфлоу.
Лаба6: Сам себе CI/CD
В лабе нужно было собрать свой Docker-образ Airflow с вашим DAG внутри (через Dockerfile: зависимости + копирование дага/конфигов), чтобы пайплайн был «запечён» в образ и версионировался вместе с ним.
Потом - настроить GitHub Actions, чтобы автоматически билдить этот образ на GitHub и пушить в Docker Hub.
Дальше - обновить docker-compose.yml, чтобы он тянул опубликованные образы, добавить README с инструкцией запуска/создания пользователей и выложить всё в приватный репозиторий, дав доступ ментору/координатору
В целом классная лаба.
Лаба7: Расчёт данных при помощи DBT
Нужно было установить dbt-core с адаптером для ClickHouse, инициализировать dbt‑проект и настроить подключение (profiles.yml/переменные окружения), чтобы dbt debug проходил успешно.
Дальше - в ClickHouse создать таблицы, читающие CSV из S3, и через dbt выстроить преобразования по слоям RAW -> CORE -> DM (в RAW добавить служебные поля src и created_dttm, в CORE/DM сделать требуемые расчёты и витрины).
В конце - запустить dbt run с переменной run_date (чтобы она попала в витрины) и прогнать чекер, который сверяет результат по хэш-суммам целевых DM-таблиц.
Тоже классная лаба, давно хотел сам поднять дбт, но руки не доходили. Почему-то hash суммы не сходились и по итогу тоже долго просидел над sql запросом🤦♂️
Лаба8: Дашборд для e-commerce кликстрима
Это лаба по сути - дипломная работа. Нужно поделиться на команды, выбрать стек технологий, поднять всю инфру, построить dwh, обработку данных, должна быть историчность и возможность делать пересчет, построить графики в биайке и проанализировать данные, все опубликовать и описать в гите. Этот проект сделали 10 человек (4 команды). Они потом выступали с защитой. Ребята проделали реально большую работу.
Я к сожалению поздно спохватился, где-то за неделю до сдачи. Другие команды уже собрались почти за месяц до сдачи. В общем, я не нашел команду и эту лабу не сдал 🥺
Я сделал все лабы, с суперачивками и знал что уже получу красный диплом. Поэтому делать лабу в соло уже не хотел.
По итогу, да. Я получил Красный диплом. ХЗ зачем, сам себе поставил и задачу и хотел этого добиться. Хотя это вообще необязательно было. Какой-то синдром отличника🤡 Вошел в топ 7. Как раз до первых ребят не хватило выполненной 8 лабы.
И половину лекций до сих пор я не посмотрел. Круто, что доступ к гиту и лекциям остается у нас. Я в спокойном темпе все посмотрю. Лекции мне прям нравились.
Продолжение⬇️
В начале декабря закончился курс. Кратко расскажу какие еще были лабы и дальше общее мнение по курсу.
Прошлый обзор лаб
Лаба5: Сервис персонализации интернет-магазина
Загрузка данных в клик -> рассчитываем данные-> сохраняем в Redis c помощью Airflow и вспомогательных справочников в Postgres
По-моему это самая сложная лаба и больше половины студентов ее не решили. Самое сложное не поднять сервисы, связать все, скачать данные и тд. А написать несколько хитрых SQL запросов! Здесь нужна та самая рекурсия 🥲 Надо собрать многоуровненое дерево категорий и потом к нему обращаться. И дерево может быть с косяками, с несколькими родителями..
И до всего этого реально сложно догадаться. Какие-то около олимпиадные задачки. И честно именно это мне не очень понравилось. То есть я понимал, что нужно многоо времени потратить чтоб все сделать. А желания особого не было. Таких бизнесовых задач мне и на работе хватает, а на курсе я больше всего хотел потрогать инструменты.
Но опять же, кураторы и говорили что это сложная лаба. Там дальше еще и суперачивка.. Без подробностей, просто нужно еще более сложные sql запросы написать.
Я эти лабы выполнил
При решении этой лабы очень много работал с командной строкой, редисом, Аирфлоу.
Лаба6: Сам себе CI/CD
В лабе нужно было собрать свой Docker-образ Airflow с вашим DAG внутри (через Dockerfile: зависимости + копирование дага/конфигов), чтобы пайплайн был «запечён» в образ и версионировался вместе с ним.
Потом - настроить GitHub Actions, чтобы автоматически билдить этот образ на GitHub и пушить в Docker Hub.
Дальше - обновить docker-compose.yml, чтобы он тянул опубликованные образы, добавить README с инструкцией запуска/создания пользователей и выложить всё в приватный репозиторий, дав доступ ментору/координатору
В целом классная лаба.
Лаба7: Расчёт данных при помощи DBT
Нужно было установить dbt-core с адаптером для ClickHouse, инициализировать dbt‑проект и настроить подключение (profiles.yml/переменные окружения), чтобы dbt debug проходил успешно.
Дальше - в ClickHouse создать таблицы, читающие CSV из S3, и через dbt выстроить преобразования по слоям RAW -> CORE -> DM (в RAW добавить служебные поля src и created_dttm, в CORE/DM сделать требуемые расчёты и витрины).
В конце - запустить dbt run с переменной run_date (чтобы она попала в витрины) и прогнать чекер, который сверяет результат по хэш-суммам целевых DM-таблиц.
Тоже классная лаба, давно хотел сам поднять дбт, но руки не доходили. Почему-то hash суммы не сходились и по итогу тоже долго просидел над sql запросом🤦♂️
Лаба8: Дашборд для e-commerce кликстрима
Это лаба по сути - дипломная работа. Нужно поделиться на команды, выбрать стек технологий, поднять всю инфру, построить dwh, обработку данных, должна быть историчность и возможность делать пересчет, построить графики в биайке и проанализировать данные, все опубликовать и описать в гите. Этот проект сделали 10 человек (4 команды). Они потом выступали с защитой. Ребята проделали реально большую работу.
Я к сожалению поздно спохватился, где-то за неделю до сдачи. Другие команды уже собрались почти за месяц до сдачи. В общем, я не нашел команду и эту лабу не сдал 🥺
Я сделал все лабы, с суперачивками и знал что уже получу красный диплом. Поэтому делать лабу в соло уже не хотел.
По итогу, да. Я получил Красный диплом. ХЗ зачем, сам себе поставил и задачу и хотел этого добиться. Хотя это вообще необязательно было. Какой-то синдром отличника
И половину лекций до сих пор я не посмотрел. Круто, что доступ к гиту и лекциям остается у нас. Я в спокойном темпе все посмотрю. Лекции мне прям нравились.
Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🔥6👍5 3💅2
Итог
Курс топ. К сожалению не смог выделять много времени курсу, как это рекомендовалось. Много лаб делал с гпт, где-то хитрил. Но много знаний получил и точно апнулся в скилах.
Я другие курсы не проходил, но думаю мало кто им конкурент. Мне кажется им маркетинга не хватает, курс можно получше раскрутить🙂
Специалисты крутые, некоторых я и раньше знал. Лекции интересные. Лабы интересные и сложные. Иногда, как мне кажется, излишне сложные..
Координаторы в тг всегда отвечают и помогают. Я еще думал, что 2 месяца это мало и такой курс можно на 3 месяца растянуть и проходить в более комфортных условиях.. Но наверное, все-таки 2 месяц это верное решение.
Еще не хватило какого-то торжественного завершения чтоли. Я через 5 дней узнал что курс уже завершен и сертификат у меня лежит в личном кабинете.
В общем, курс Data Engineer от New Professions Lab - пингвин рекомендует 👍
Пусть этот будет как знак качества😅 Ни с кем посты я не согласовывал и писал реальное мнение.
Курс топ. К сожалению не смог выделять много времени курсу, как это рекомендовалось. Много лаб делал с гпт, где-то хитрил. Но много знаний получил и точно апнулся в скилах.
Я другие курсы не проходил, но думаю мало кто им конкурент. Мне кажется им маркетинга не хватает, курс можно получше раскрутить🙂
Специалисты крутые, некоторых я и раньше знал. Лекции интересные. Лабы интересные и сложные. Иногда, как мне кажется, излишне сложные..
Координаторы в тг всегда отвечают и помогают. Я еще думал, что 2 месяца это мало и такой курс можно на 3 месяца растянуть и проходить в более комфортных условиях.. Но наверное, все-таки 2 месяц это верное решение.
Еще не хватило какого-то торжественного завершения чтоли. Я через 5 дней узнал что курс уже завершен и сертификат у меня лежит в личном кабинете.
В общем, курс Data Engineer от New Professions Lab - пингвин рекомендует 👍
Пусть этот будет как знак качества😅 Ни с кем посты я не согласовывал и писал реальное мнение.
🔥32 8❤7👍4✍1🎉1🤣1
Багуля
Недавно нашли косяк в загрузке продовой витрины в Greenplum.
В чем суть - есть большая витрина, собирается из большой dbt модельки (внутри просто sql скрипт). И заметили, что много данных не прогружается. Я начал копаться в скрипте и заметил дурацкую ошибку - в where было условие на вхождение поля в определенный список значений и при перечислении значений была пропущена запятая. И что меня удивило - такой код работал, ошибку не выкидывал.
Вот пример. Должно было быть так:
Но была пропущена запятая
И такой код отрабатывал без ошибок. По сути GP (тестил в новой постгре, работает также) просто соединяет 'one' и 'two' в одну строку и получается 'onetwo'.
То есть такой код тоже правильно отработает
Можно вообще все запятые убрать и все значения просто преобразуются в одну большую строку.
Позже почитал, это конечно же не баг СУБД, а особенность стандарта SQL (string literal concatenation). PostgreSQL и Greenplum специально так реализованы.
Вроде очень банальная ошибка, но вдруг кто-то тоже это не знал, решил рассказать на всякий случай 🤝
Недавно нашли косяк в загрузке продовой витрины в Greenplum.
В чем суть - есть большая витрина, собирается из большой dbt модельки (внутри просто sql скрипт). И заметили, что много данных не прогружается. Я начал копаться в скрипте и заметил дурацкую ошибку - в where было условие на вхождение поля в определенный список значений и при перечислении значений была пропущена запятая. И что меня удивило - такой код работал, ошибку не выкидывал.
Вот пример. Должно было быть так:
with test as (
select 1 as code, 'one' as name union all
select 2 as code, 'two' as name union all
select 3 as code, 'three' as name union all
select 4 as code, 'four' as name union all
select 5 as code, 'five' as name
)
select * from test
where name in (
'one',
'two',
'three'
);
Но была пропущена запятая
where name in (
'one' -- нет запятой!
'two',
'three'
);
И такой код отрабатывал без ошибок. По сути GP (тестил в новой постгре, работает также) просто соединяет 'one' и 'two' в одну строку и получается 'onetwo'.
То есть такой код тоже правильно отработает
where name in (
'o'
'ne',
'two',
'three'
);`
Можно вообще все запятые убрать и все значения просто преобразуются в одну большую строку.
Позже почитал, это конечно же не баг СУБД, а особенность стандарта SQL (string literal concatenation). PostgreSQL и Greenplum специально так реализованы.
Вроде очень банальная ошибка, но вдруг кто-то тоже это не знал, решил рассказать на всякий случай 🤝
👍44🔥22🤔7 4❤3
Еще одна история о потери данных ✍️
Прилетела задача от аналитика - сделайте витрину, вот вам готовый запрос.
В запросе не очень сложный расчет, но там джоинится несколько больших витрин. А мы стараемся не создавать витрину из витрин.
Поэтому мне надо было повторить запрос аналитика, но из таблиц в ядре (слой dds). Тоже все это не очень сложно, переделал запрос, вроде сходится.
Подготовил тестовую витрину в песочке для аналитика, чтоб сверил данные из своего запроса. Все ок - сходится.
Сделал MR (merge request), внедрили обновление в прод. Смотрим данные в новой витрине, что-то не так.. Небольшой процент данных не сходится с данными из тестовых запросов..
И вот начинается суета на пару дней😔 Снова проверяю запрос аналитика, мой запрос - сходится. Что-то с дбт..
Разбираюсь с дбт, что по итогу он генерит, как он создает темповые таблицы. Нахожу запросы, которые запускались прям в БД (это было не просто).
Запускаю запрос - тоже все ок. Но почему в базе данные другие🤔
Нашел ошибку в запросе аналитика и в моем. * Немного неправильная группировка. Думаем в этом косяк. Снова сверил запросы - все ок, одинаковый правильный результат.
Внедряем в прод - снова данные не сходятся))
Снова подозреваю дбт, что-то не то запускается. Позвал шарящего коллегу DE - теперь вместе не понимаем что за магия)) Мой запрос отрабатывает также как и аналитика. И данные верные. И тестовая витрина тоже с правильными данными.
Другой DE тоже не понял в чем косяк. Но предполагаем или косяк в моем запросе или в дбт. Самое главное мы не можем получить данные, которые прогружаются в базу.
вот маленький кусочек этого запроса
Я предложил проверить тайм зоны, но мы конечно же забили, подумали вряд ли в этом дело🥲
Далее подключилась еще коллега DE. Запускает запрос и сразу получает такие же данные как и в БД. То есть она одна видит косячные данные, а мы все нет)
Я подготовил маленький скриптик, который у нее запрос выдает несколько строк, а у нас у всех такой же запрос выдает 0 строк.
Уже очевидно, что-то с настройками наших IDE.
В общем, в чем проблема - у меня, аналитика и еще одного DE в настройках таймзоны было utc +3.
А у другого DE и главное в БД таймзона была просто utc (на 3 часа меньше чем мск).
И косяк вроде бы был как раз в sql кусочке, который я выше прикрепил. Если время около 12 ночи, то дата по-разному обрезается. Для нас было час ночи 29 декабря, а для БД это 28 декабря 22 часа. Или может еще дальше был косяк, там еще куча разных джоинов и фильтров с датами.
Поменял таймзону на соответствующую БД - все сошлось. Теперь я выполняю запросы и тоже вижу некорректные данные, как и в БД. Дальше уже было легко найти причину. Косяк есть и в запросе аналитика, как следствие и в моем. Все поправили. Новый MR, данные в проде сошлись🎉
Сейчас кажется очевидной такая ошибка. Я и знал про настройки в БД, но не подумал что так может меняться результат.
Теперь у меня в датагрип таймзона utc +3, а в дбивере utc. Если что в двух местах чекну запросы. *Я знаю что таймзону можно в прям в запросе прописывать.
Мораль: всегда проверяйте настройки timezone в IDE перед дебагом дат. Это может сэкономить пару дней головной боли.
Прилетела задача от аналитика - сделайте витрину, вот вам готовый запрос.
В запросе не очень сложный расчет, но там джоинится несколько больших витрин. А мы стараемся не создавать витрину из витрин.
Поэтому мне надо было повторить запрос аналитика, но из таблиц в ядре (слой dds). Тоже все это не очень сложно, переделал запрос, вроде сходится.
Подготовил тестовую витрину в песочке для аналитика, чтоб сверил данные из своего запроса. Все ок - сходится.
Сделал MR (merge request), внедрили обновление в прод. Смотрим данные в новой витрине, что-то не так.. Небольшой процент данных не сходится с данными из тестовых запросов..
И вот начинается суета на пару дней
Разбираюсь с дбт, что по итогу он генерит, как он создает темповые таблицы. Нахожу запросы, которые запускались прям в БД (это было не просто).
Запускаю запрос - тоже все ок. Но почему в базе данные другие
Нашел ошибку в запросе аналитика и в моем. * Немного неправильная группировка. Думаем в этом косяк. Снова сверил запросы - все ок, одинаковый правильный результат.
Внедряем в прод - снова данные не сходятся))
Снова подозреваю дбт, что-то не то запускается. Позвал шарящего коллегу DE - теперь вместе не понимаем что за магия)) Мой запрос отрабатывает также как и аналитика. И данные верные. И тестовая витрина тоже с правильными данными.
Другой DE тоже не понял в чем косяк. Но предполагаем или косяк в моем запросе или в дбт. Самое главное мы не можем получить данные, которые прогружаются в базу.
вот маленький кусочек этого запроса
case when code = 'x'
then lag(case when code = 'xxx' then create_date end)
over(partition by yyy, date_trunc('day',dea.create_date) order by create_date)
end as zzz
Я предложил проверить тайм зоны, но мы конечно же забили, подумали вряд ли в этом дело🥲
Далее подключилась еще коллега DE. Запускает запрос и сразу получает такие же данные как и в БД. То есть она одна видит косячные данные, а мы все нет)
Я подготовил маленький скриптик, который у нее запрос выдает несколько строк, а у нас у всех такой же запрос выдает 0 строк.
Уже очевидно, что-то с настройками наших IDE.
В общем, в чем проблема - у меня, аналитика и еще одного DE в настройках таймзоны было utc +3.
А у другого DE и главное в БД таймзона была просто utc (на 3 часа меньше чем мск).
И косяк вроде бы был как раз в sql кусочке, который я выше прикрепил. Если время около 12 ночи, то дата по-разному обрезается. Для нас было час ночи 29 декабря, а для БД это 28 декабря 22 часа. Или может еще дальше был косяк, там еще куча разных джоинов и фильтров с датами.
Поменял таймзону на соответствующую БД - все сошлось. Теперь я выполняю запросы и тоже вижу некорректные данные, как и в БД. Дальше уже было легко найти причину. Косяк есть и в запросе аналитика, как следствие и в моем. Все поправили. Новый MR, данные в проде сошлись
Сейчас кажется очевидной такая ошибка. Я и знал про настройки в БД, но не подумал что так может меняться результат.
Теперь у меня в датагрип таймзона utc +3, а в дбивере utc. Если что в двух местах чекну запросы. *Я знаю что таймзону можно в прям в запросе прописывать.
Мораль: всегда проверяйте настройки timezone в IDE перед дебагом дат. Это может сэкономить пару дней головной боли.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤30👍14 10🔥7✍1🙈1 1
зп в it.png
727 KB
Провел для себя небольшой анализ рынка. Посравнивал различные зп-ки в it на хабр карьере. Оставлю здесь для истории и может кому тоже пригодится 🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍7🤝4❤1 1
Итоги 2025 it пингвин
Посмотрел итоги своего канала в 2025.
Хорошая работа - 1700+ подписчиков, 150 постов, 260к просмотров, и 3.2к😱 репостов. В начале был очень быстрый старт по +300 подписчиков в месяц. К концу года выдохся и рост сильно замедлился. Но ничего, зато в таком темпе мне прям комфортно ввести канал.
Очень понравился краткий обзор LLM. Я и хотел сделать такой канал - главное чтоб был полезный, живой и с разнообразным контентом.
Вот популярные посты:
• Новая работа
• Краткие определения инструментов
• Будни дата инженера
• Собес на Кремлевский проект
• День рождения
• Ссылки с бесплатным материалом по data
• Статья по индексам и партициям
• Транзакции и ACID
• Закончил курс по DE
• разбор вопросов по SQL, вопросы про джоины, задача на джоины, задачи по SQL, оптимизация SQL-запросов
Спасибо, что читаете❤️
В карьерном плане год был тоже продуктивный:
Начал год в Альфа банке -> 5 месяцев в РСХБ -> X5
И что важно в конце года у меня НАКОНЕЦ-ТО нет желания выходить на рынок и собеситься (можно только ради контента😅 ). Сейчас в компании нравится, задачки классные и крутые перспективы. В новом году переезжаем на новую платформа с новым стеком.
Также у меня есть вторая работа. И это менторство. Каждый будний день до или после основной работы у меня 1-2 менти. Мне эта деятельность нравится - здесь как нигде чувствуешь отдачу. На работе ну создал ты новый pipeline, оптимизировал запрос. И что)) Результат работы особо не чувствуется. В менторстве - помогаешь людям добиться своей цели - устроиться в it и выйти на хороший заработок.
И почему-то ко мне приходят очень топовые ребята 😅 У всех интересный бэкграунд (не айтишный), амбициозные и талантливые. Часто мы можем задержаться и просто поболтать. Пока что у меня 3 менти устроились в it - на 300к, 150к и 256к. Еще с 7 менти будем выходить на рынок в феврале - марте. Будет весело))
Вне работы - все хорошо. Наконец-то получили ключи от новой квартиры и начали делать ремонт.
Спасибо супруге, что в основном она занимается ремонтом и решает кучу вопросов. Уходит куча денег. Мы даже может и кредитнулись бы, но процентная ставка оч большая сейчас((
Побывали в Турции и нам очень понравилось. Попробовали тот самый тюлений отдых 👍
Наконец-то посмотрели игру престолов. Оочень понравилось, прям кайфанули.
И было много других приятных моментов.
Также для себя понял, что вне работы я хз чем заниматься. Не могу нормально отдыхать. Нет какого-то увлечения. Играть неинтересно (только в доту с друзьями нравится). Кучу игр пробовали, но через пару часов все дропаю. Может надо каким-нибудь спортом заняться..
В целом 2025 год мне очень понравился. Надо не сбавлять темпы, есть куда расти🫡
Можете тоже делиться со своими итогами, очень интересно почитать⤵️
Осталась только одна незакрытая задачка у меня - сделать ДЕАНОН. Пора б и ее закрыть. Скоро выложу видосик с поздравлением💅
Посмотрел итоги своего канала в 2025.
Хорошая работа - 1700+ подписчиков, 150 постов, 260к просмотров, и 3.2к😱 репостов. В начале был очень быстрый старт по +300 подписчиков в месяц. К концу года выдохся и рост сильно замедлился. Но ничего, зато в таком темпе мне прям комфортно ввести канал.
Очень понравился краткий обзор LLM. Я и хотел сделать такой канал - главное чтоб был полезный, живой и с разнообразным контентом.
Вот популярные посты:
• Новая работа
• Краткие определения инструментов
• Будни дата инженера
• Собес на Кремлевский проект
• День рождения
• Ссылки с бесплатным материалом по data
• Статья по индексам и партициям
• Транзакции и ACID
• Закончил курс по DE
• разбор вопросов по SQL, вопросы про джоины, задача на джоины, задачи по SQL, оптимизация SQL-запросов
Спасибо, что читаете
В карьерном плане год был тоже продуктивный:
Начал год в Альфа банке -> 5 месяцев в РСХБ -> X5
И что важно в конце года у меня НАКОНЕЦ-ТО нет желания выходить на рынок и собеситься (можно только ради контента
Также у меня есть вторая работа. И это менторство. Каждый будний день до или после основной работы у меня 1-2 менти. Мне эта деятельность нравится - здесь как нигде чувствуешь отдачу. На работе ну создал ты новый pipeline, оптимизировал запрос. И что)) Результат работы особо не чувствуется. В менторстве - помогаешь людям добиться своей цели - устроиться в it и выйти на хороший заработок.
И почему-то ко мне приходят очень топовые ребята 😅 У всех интересный бэкграунд (не айтишный), амбициозные и талантливые. Часто мы можем задержаться и просто поболтать. Пока что у меня 3 менти устроились в it - на 300к, 150к и 256к. Еще с 7 менти будем выходить на рынок в феврале - марте. Будет весело))
Вне работы - все хорошо. Наконец-то получили ключи от новой квартиры и начали делать ремонт.
Спасибо супруге, что в основном она занимается ремонтом и решает кучу вопросов. Уходит куча денег. Мы даже может и кредитнулись бы, но процентная ставка оч большая сейчас((
Побывали в Турции и нам очень понравилось. Попробовали тот самый тюлений отдых 👍
Наконец-то посмотрели игру престолов. Оочень понравилось, прям кайфанули.
И было много других приятных моментов.
Также для себя понял, что вне работы я хз чем заниматься. Не могу нормально отдыхать. Нет какого-то увлечения. Играть неинтересно (только в доту с друзьями нравится). Кучу игр пробовали, но через пару часов все дропаю. Может надо каким-нибудь спортом заняться..
В целом 2025 год мне очень понравился. Надо не сбавлять темпы, есть куда расти🫡
Можете тоже делиться со своими итогами, очень интересно почитать
Осталась только одна незакрытая задачка у меня - сделать ДЕАНОН. Пора б и ее закрыть. Скоро выложу видосик с поздравлением
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥27❤11 6👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Как и обещал🤝 Не судите строго.
Всех с наступающим!🥂
Всех с наступающим!
Please open Telegram to view this post
VIEW IN TELEGRAM
4🤣39🔥10 7❤4🎉2💅1
Подписываем петицию на продление выходных ⤵️
Please open Telegram to view this post
VIEW IN TELEGRAM
3✍75 5💅4🤝3🤔1
Доступ к данным: где граница дозволенного?
Вчера случайно нашел у себя в хранилище таблицу с промокодами доставки.. Промокоды на скидки в рублях и в процентах, на бесплатную доставку. Как перестать думать об этой таблице🫣
Стало интересно, а кто-то пользовался рабочими данными в своих интересах? Я говорю только о законных вещах) Без всяких сливов.
Когда я устроился в мегафон (первая моя компания в ит), получил доступ к корпоративному хранилищу, то сразу начал копаться в данных. Интересно же 😁
Посмотрел историю своих звонков. И по приколу глянул звонки друзей.. Потом говорил что слежу за ними😅 (все знали что это шутка). Возможно еще мог чекнуть историю их браузера, по каким ссылкам они переходили. Такие данные тоже были😎
Но не смотрел, только сейчас об этом думал. Я в этом плане с уважением отношусь и не смотрю личную инфу. Просто в начале пару минут покапался🦦
Понятно есть люди, которые за кучу бабок сливают данные и их потом увольняют или садят. Я такие истории слышал. Был чел, который годами продавал персональные данные. Потом его нашли и уволили. Врооде бы в то время даже не посадили.
Сейчас в компаниях такие данные все больше маскируются. ФИО, номера телефонов, всякие разные персональные и чувствительные данные маскируются. Особенно в банках. И это конечно правильно. Сам участвовал в проектах по маскировке данных. Доступ к важным данным дают единицам и чаще нужно находиться в офисе, удаленщикам редко дают такие гранты.
Я не буду пользоваться промиками, тк это не честно и возможно в компании могут узнать и наказать. ХЗ что для меня больше аргумент ими не пользоваться.
Но в теории могу ли я пользоваться? Насколько это наказуемо🤔
Интересно есть ли у вас какие-то подобные истории использования корпоративных данных в своих целях? И мысли насколько это вообще все корректно. Может если компания не успела все маскировать данные, то ок - можно и что-то для себя подсмотреть?🍴 ⬇️
Из забавного вспомнил как работал с таблицей с обращениями в тех поддержку. Там были оч смешные сообщения. Сколько там было матов и обзываний🙊
Вчера случайно нашел у себя в хранилище таблицу с промокодами доставки.. Промокоды на скидки в рублях и в процентах, на бесплатную доставку. Как перестать думать об этой таблице
Стало интересно, а кто-то пользовался рабочими данными в своих интересах? Я говорю только о законных вещах) Без всяких сливов.
Когда я устроился в мегафон (первая моя компания в ит), получил доступ к корпоративному хранилищу, то сразу начал копаться в данных. Интересно же 😁
Посмотрел историю своих звонков. И по приколу глянул звонки друзей.. Потом говорил что слежу за ними😅 (все знали что это шутка). Возможно еще мог чекнуть историю их браузера, по каким ссылкам они переходили. Такие данные тоже были
Но не смотрел, только сейчас об этом думал. Я в этом плане с уважением отношусь и не смотрю личную инфу. Просто в начале пару минут покапался
Понятно есть люди, которые за кучу бабок сливают данные и их потом увольняют или садят. Я такие истории слышал. Был чел, который годами продавал персональные данные. Потом его нашли и уволили. Врооде бы в то время даже не посадили.
Сейчас в компаниях такие данные все больше маскируются. ФИО, номера телефонов, всякие разные персональные и чувствительные данные маскируются. Особенно в банках. И это конечно правильно. Сам участвовал в проектах по маскировке данных. Доступ к важным данным дают единицам и чаще нужно находиться в офисе, удаленщикам редко дают такие гранты.
Я не буду пользоваться промиками, тк это не честно и возможно в компании могут узнать и наказать. ХЗ что для меня больше аргумент ими не пользоваться.
Но в теории могу ли я пользоваться? Насколько это наказуемо🤔
Интересно есть ли у вас какие-то подобные истории использования корпоративных данных в своих целях? И мысли насколько это вообще все корректно. Может если компания не успела все маскировать данные, то ок - можно и что-то для себя подсмотреть?
Из забавного вспомнил как работал с таблицей с обращениями в тех поддержку. Там были оч смешные сообщения. Сколько там было матов и обзываний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍4😁4❤3 2💅1
This media is not supported in your browser
VIEW IN TELEGRAM
Ну мы же 🥳
*при том нейронки этой же компании
*при том нейронки этой же компании
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣28🔥7 7💅6❤2😢1
Накрутка опыта
Да, да. Та самая холиварная тема. Я ни разу не писал по этому поводу. Понимаю и тех кто за накрутку и тех кто против.
Каждый выбирает свое. Я считаю, что проблема должна решаться сверху законами, решениями и тд. Например, проверкой трудовой ВСЕМИ компаниями. Или же, чтоб количество лет в резюме не было главным фильтром при выборе кандидата. Пока есть легкий путь трудоустройства в it, люди будут им пользоваться.
Но сейчас я хочу сказать аргумент ЗА НАКРУТКУ обычных работяг.
Знаете ли вы, что много аутстафф компаний (возможно все) крутят опыт своим сотрудникам.
Аутстаффинговые компании — это посредники, которые предоставляют сотрудников компании-заказчику, при этом сами выступают официальными работодателями, занимаясь наймом, оформлением и всеми кадровыми/бухгалтерскими вопросами.
Я сам работал в такой компании (назовем ее ЛИГА😄 ) Ничего против Лиги не имею. Считаю, что эта топ компания для старта карьеры. У меня остались только положительные эмоции. Возможно я был в очень крутой команде🤔
Через Лигу я работал на Альфа банк. И если было свободное время можно было параллельно работать наставником в Лиге. Я собесил стажеров/джунов дата инженеров и аналитиков. Набирали инженеров, обучали их пару месяцев основному стеку и потом продавали в крупные банки. Также нужно было подготовить новых сотрудников к собеседованиям и сделать резюме. И в 70% процентах нам компания говорила крутить опыт сотрудникам. То есть стажер мог учиться пару месяцев и мы для него придумывали легенду под вакансию банка, крутили опыт 1 - 2 года. И стажера продавали в компанию как джун+/мидл. И есть подозрение, что банк часто был в курсе подобной накрутки. Эта была просто формальность.
И недавно общался с дата инженером, который когда-то работал в Астон. Он сказал, что в Астоне крутят 5 лет опыта😱
Я был в шоке от такой наглости. Поэтому когда обычные работяги крутят себе опыт, я их понимаю. Сейчас с 0 опыта я скорее всего бы делал также. Сейчас такие правила игры.
Но тем кто идет по честному пути, ищет работу без накрутки - уважение 👍
Что думаете по этому поводу?🤔 ⬇️
✅ - ничего против накрутки опыта не имею, сам крутил
❌ - против накрутки
🤷♂️ - мне все равно, мне она никак не мешает
Да, да. Та самая холиварная тема. Я ни разу не писал по этому поводу. Понимаю и тех кто за накрутку и тех кто против.
Каждый выбирает свое. Я считаю, что проблема должна решаться сверху законами, решениями и тд. Например, проверкой трудовой ВСЕМИ компаниями. Или же, чтоб количество лет в резюме не было главным фильтром при выборе кандидата. Пока есть легкий путь трудоустройства в it, люди будут им пользоваться.
Но сейчас я хочу сказать аргумент ЗА НАКРУТКУ обычных работяг.
Знаете ли вы, что много аутстафф компаний (возможно все) крутят опыт своим сотрудникам.
Аутстаффинговые компании — это посредники, которые предоставляют сотрудников компании-заказчику, при этом сами выступают официальными работодателями, занимаясь наймом, оформлением и всеми кадровыми/бухгалтерскими вопросами.
Я сам работал в такой компании (назовем ее ЛИГА
Через Лигу я работал на Альфа банк. И если было свободное время можно было параллельно работать наставником в Лиге. Я собесил стажеров/джунов дата инженеров и аналитиков. Набирали инженеров, обучали их пару месяцев основному стеку и потом продавали в крупные банки. Также нужно было подготовить новых сотрудников к собеседованиям и сделать резюме. И в 70% процентах нам компания говорила крутить опыт сотрудникам. То есть стажер мог учиться пару месяцев и мы для него придумывали легенду под вакансию банка, крутили опыт 1 - 2 года. И стажера продавали в компанию как джун+/мидл. И есть подозрение, что банк часто был в курсе подобной накрутки. Эта была просто формальность.
И недавно общался с дата инженером, который когда-то работал в Астон. Он сказал, что в Астоне крутят 5 лет опыта
Я был в шоке от такой наглости. Поэтому когда обычные работяги крутят себе опыт, я их понимаю. Сейчас с 0 опыта я скорее всего бы делал также. Сейчас такие правила игры.
Но тем кто идет по честному пути, ищет работу без накрутки - уважение 👍
Что думаете по этому поводу?
Please open Telegram to view this post
VIEW IN TELEGRAM
1 52🤷♂33 24 3❤2💅1
Удаление дублей в Greenplum
Как-то я писал пост про удаление полных дублей из таблицы.
В обычных СУБД можно разделить полностью одинаковые строки по скрытому системному полю, например, по rowid (Oracle), ctid (PostgreSQL).
И кстати хочу сделать небольшое дополнение к этим полям, они вообще-то немного разные:
ROWID - это физический адрес строки в базе данных.
CTID - это физический адрес строки в конкретной таблице.
——-
Greenplum, как известно, это MPP система. И по сути, под капотом параллельно работаем несколько инстансов PostgreSQL.
И недавно у меня была задача по удалению дублей из Greenplum-a. И я сделал очевидную глупую ошибку. Решил рассказать об этом вам, чтоб вы не допустили😊
Так вот, допустим есть таблица sandbox.test_duplicate с полями (sale_id, product_id, sale_date, amount и тд). В таблице лежат тысячи строк и среди них есть немного дублей. Надо просто удалить дублирующие строки и оставить только уникальные.
Набросали быстренько скрипт
Удаляем строки и идем пить чай🍷 Задача выполнена🙌
Но на самом деле нет💀 Выясняется, что удалены все строки. Например было два sale_id=1, sale_id=1. Должна остаться только одна строка, но пропали две.
Или что еще хуже удалены вообще рандомные другие строки. А может все и правильно отработало.
Я потестил на разном количестве - и это рандом. На маленьком количестве строк может все и правильно отработать. На большом количестве точно будут неверные удаления. Сейчас объясню.
Проблема в запросе в том, что используется ctid в Greenplum без указания gp_segment_id. В Greenplum ctid уникален только в пределах одного сегмента, а не всей таблицы. Это приводить к непредсказуемым результатам и удалению всех строк.
То есть ctid разных сегментов конечно же могут пересекаться
Правильный скрипт будет такой:
А вообще можно глянуть на какие сегменты размазана таблица:
Вроде супер очевидно, но я на этом попался. И удалил лишнее. Важно это все заметить на тестовой среде.
Кстати вчера у дата инженеретта был пост про удаление дублей в ClickHouse. Тоже чекните, интересно 👍
Кто-нибудь еще знает подобные тонкости по работе с разными СУБД?
В комменты закину скрипт создания таблицы. Можете тоже потестить⬇️
it пингвин | data engineer🐧
Как-то я писал пост про удаление полных дублей из таблицы.
В обычных СУБД можно разделить полностью одинаковые строки по скрытому системному полю, например, по rowid (Oracle), ctid (PostgreSQL).
И кстати хочу сделать небольшое дополнение к этим полям, они вообще-то немного разные:
ROWID - это физический адрес строки в базе данных.
CTID - это физический адрес строки в конкретной таблице.
——-
Greenplum, как известно, это MPP система. И по сути, под капотом параллельно работаем несколько инстансов PostgreSQL.
И недавно у меня была задача по удалению дублей из Greenplum-a. И я сделал очевидную глупую ошибку. Решил рассказать об этом вам, чтоб вы не допустили
Так вот, допустим есть таблица sandbox.test_duplicate с полями (sale_id, product_id, sale_date, amount и тд). В таблице лежат тысячи строк и среди них есть немного дублей. Надо просто удалить дублирующие строки и оставить только уникальные.
Набросали быстренько скрипт
delete from sandbox.test_duplicate -- удаляем дубли по системному id строки
--select t.*, ctid from sandbox.test_duplicate t -- можно сначала посмотреть что удаляем
where ctid in
(
select ctid
from (
select t.*, row_number() over (partition by sale_id order by sale_date) as rn, ctid -- нумеруем и выводит физ. адрес строки
from sandbox.test_duplicate t
where sale_id in
(select sale_id -- выбираем только строки с дублями
from sandbox.test_duplicate
group by sale_id
having count(sale_id) > 1)
) t
where rn > 1) -- выбираем дубли ctid. rn = 1 оставим, а остальное удалим
Удаляем строки и идем пить чай
Но на самом деле нет
Или что еще хуже удалены вообще рандомные другие строки. А может все и правильно отработало.
Я потестил на разном количестве - и это рандом. На маленьком количестве строк может все и правильно отработать. На большом количестве точно будут неверные удаления. Сейчас объясню.
Проблема в запросе в том, что используется ctid в Greenplum без указания gp_segment_id. В Greenplum ctid уникален только в пределах одного сегмента, а не всей таблицы. Это приводить к непредсказуемым результатам и удалению всех строк.
То есть ctid разных сегментов конечно же могут пересекаться
Правильный скрипт будет такой:
DELETE FROM sandbox.test_duplicate
WHERE (ctid, gp_segment_id) IN (
SELECT ctid, gp_segment_id
FROM (
SELECT ctid, gp_segment_id,
ROW_NUMBER() OVER (PARTITION BY sale_id ORDER BY sale_date) AS rn
FROM sandbox.test_duplicate
WHERE sale_id IN (
SELECT sale_id
FROM sandbox.test_duplicate
GROUP BY sale_id
HAVING COUNT(*) > 1
)
) t
WHERE rn > 1
);
COMMIT;
А вообще можно глянуть на какие сегменты размазана таблица:
-- Для вашей таблицы
SELECT
gp_segment_id,
COUNT(*) as row_count
FROM sandbox.test_duplicate
GROUP BY gp_segment_id
ORDER BY gp_segment_id;
-- Количество активных сегментов
SELECT COUNT(*) as total_segments
FROM gp_segment_configuration
WHERE role = 'p' AND content >= 0;
-- Фильтры в запросе WHERE role = 'p' AND content >= 0 отбирают только активные первичные сегменты Greenplum.
Вроде супер очевидно, но я на этом попался. И удалил лишнее. Важно это все заметить на тестовой среде.
Кстати вчера у дата инженеретта был пост про удаление дублей в ClickHouse. Тоже чекните, интересно 👍
Кто-нибудь еще знает подобные тонкости по работе с разными СУБД?
В комменты закину скрипт создания таблицы. Можете тоже потестить
it пингвин | data engineer
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤12👍5 4✍2 1
This media is not supported in your browser
VIEW IN TELEGRAM
Как хорошо быть айтишником в 2025 2026 💅
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣26❤4😁4 4🔥3🤔1 1
Обзор собеседования
Должность: Data Engineer
Компания: ООО Тера Интегро
Тип собеса: #тех_собес
Грейд: #Junior #middle
Вилка: 210к
Вакансия: https://spb.hh.ru/vacancy/128761959
Итог собеса: Отказ, тк кандидат еще учится в универе❌
Краткий обзор собеседования:
Как вам собес?🤔
it пингвин | data engineer🐧
#собеседование #подписчик
Должность: Data Engineer
Компания: ООО Тера Интегро
Тип собеса: #тех_собес
Грейд: #Junior #middle
Вилка: 210к
Вакансия: https://spb.hh.ru/vacancy/128761959
Итог собеса: Отказ, тк кандидат еще учится в универе
Краткий обзор собеседования:
Вопросы про БД:
• Как вы начинаете изучать почему запрос стал работать медленнее какие шаги предпринимаете и на что смотрите?
• Какие физические виды Join бывают, их алгоритм выполнения?
• (Greenplum) Есть таблица транзакций 1 млрд записей она соединяется с таблицей sheets и таблицей clients по foreign key, все 3 таблицы распределены равномерно. В таблице транзакций в колонке для соединения с таблицей sheets 300 млн Null значений. Будут ли проблемы при Join этих трех таблиц?
• Как избавиться от Broadcast при соединении двух таблиц?
Вопросы по Python:
• List что за тип данных?
• Что такое lambda функция и отличия от обычной?
Вопросы по dbt (dbt Core):
• Как запустить одну модель dbt, все предыдущие модели, которые необходимо для рассчета текущей?
• Для чего используют макросы в dbt?
Как вам собес?
it пингвин | data engineer
#собеседование #подписчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤8👍4 3✍2 1