Nik в мире данных – Telegram
Nik в мире данных
931 subscribers
8 photos
1 video
1 file
42 links
Автор канала - @nikbeesti
Download Telegram
Если вы также, как я и из мира batch processing, то понятие message broker (event-driven .. ) может быть вам не знакомо.

Мне кажется отличное прикладное введение на эту тему получилось у Google с их плейлистом https://www.youtube.com/playlist?list=PLIivdWyY5sqKwVLe4BLJ-vlh9r9zCdOse

Буквально за час покрываются высоуровнево следующее:
1. Общий обзор, как данные системы могут помочь
2. Кто есть publisher/subscriber
3. Общая архитектура таких решений
4. Примеры работы
5. Модели работы subscriber pull/streaming pull/push
6. Обработка ошибок и недоставленных сообщений
7. Работа с endpoint на пример cloud function/cloud run
8. Сравнение Pub/Sub, Apache Kafka и альтернатив

В общем, под чаек посмотреть вполне неплохо =)

P.S.Интересно, если я настроил pub sub topic, который пишет 4 сообщения в день и отправляет на webhook, я же могу писать в cv опыт с real time solutions? 😄
👍11
Channel photo updated
#english
Начинаю писать потихоньку цикл статей - "Что-то пошло не так". Они на английском + мой письменный английский оставляет желать лучшего. Но надо же практиковаться, а что может быть лучше чем Learn in Public 😄 (Второе, это написание документации и post-mortem)

Первый рассказ про то, что могло пойти не так, если вы используете так называемые ручные справочники в полуструктурированном формате.

https://bakanchevn.github.io/nulls_handling.html
👍7
Мне очень понравилась аналогия с транспортом в курсе от Гугла при обсуждении On-prem, IaaS, Pass, SaaS:

On-premise:
Вы купили машину и сами решаете, как с ней поступить. Но техосмотр, исправление проблем, обновление (покупка новой машины или обновление движка на вашей стороне)

Cloud IaaS (Infrastucture-as-a-Service)
Вы взяли машину в лизинг. Вы сами выбрали, что за машина и можете использовать как хотите (с возможным ограничением в контракте). Но машина не ваша (В любой момент или в зависимости от контракта в течение нескольких месяцев ее могут забрать). Для обновления достаточно взять новую машину в лизинг

Cloud Paas (Platform-as-a-Service)
Вы взяли такси. Вы выбрали направление и, возможно, класс машины, но все управление делается уже не вами. Также вы можете быть лимитированы в выборе направления пути.

Cloud Saas (Software-as-a-Service)
Вы используете общественный транспорт (автобус, трамвай, троллейбус). У вас есть доступ к транспорту, но вы не можете “кастомизировать” маршрут (если это конечно не маршрутка ггг). Есть ряд установленных направлений. Вы делите место с другими пассажирами, что в худшем случае может вызвать дискомфорт.

P.S. Возможно это адский баян, но я такой аналогии ранее не встречал =)
🔥8👍3
В виду выхода из режима близкому к burnout, постепенно возращаюсь к публичным активностям. Одной из тем, которую я давно хотел обсудить, является корпоративное обучение.

У меня есть опыт преподавания как академический (в университете), так и корпоративный, поэтому я бы хотел поделиться с вами двумя историями и систематизировать свои мысли на эту тему.

Первая история связана с моим опытом работы экспертом на курсе. Мне было поручено создание курса для системных аналитиков DWH, адаптированного под потребности компании. Курс был разработан как интенсивный курс продолжительностью 20 дней, с множеством практических занятий и лекций. Однако проблема заключалась в том, что на подготовку с нуля у нас был только один месяц. Мои обязанности включали в себя сбор требований от заказчика, разработку плана лекций, постановку технических задач, формулирование задач для лекций и проверку готовых материалов. Лекции были разработаны другими специалистами.

Однако возникла проблема, когда меня не включили в процесс отбора людей, которые создавали лекции. Фактически первые лекции состояли из нескольких броских картинок из интернета, которые лишь отдаленно относились к теме курса. В процессе испрвление, был исправлен контент, но не картинки, меня заверили, что дизайнеры сделают это. Однако они внесли изменения лишь в общее оформление, и материал был отправлен заказчику без изменений. В итоге выяснилось, что автором одной из картинок был большой манагер компании-заказчика и главный человек по примке ЛУЛЦ. В этот момент мой работодатель счел, что моя деятельность может стать причиной конфликта интересов, и я ушел с проекта, передав дела другому специалисту, так что как это закончилось я точно не знаю =) Но мне была выплачена оплата за мою часть работы.

Вторая история, связана с тем, как я преподавал часть уроков по курсу DWH Analyst / Analytics Engineer. Мне это было интересно, так как по факту это был курс по dbt для русско язычного сегмента. Это был не первый запуск курса, поэтому все лекции уже были готовы. Сам курс был выстроен довольно неплохо по наполнению (тем более это был главный популизатор dbt в руязычном сегменте!). Основная проблема была в том, что лекции были заточены под проекты главного разработчика курса и часть слайдов была не воспроизводима. Например, там был рассказ про определенный инструментарий и следующий слайд демо (Для примера, скажем инкрементальное использование dbt и Redshift). А у меня нет таких таблиц и готового Redshift кластера, и демо у меня на BQ.

Казалось бы, почему бы не переделать слайды? А тут вступает вопрос прайсинга, тебе платят только за проведение лекций, а материалы уже готовые (хотя демо и практику все равно приходилось самому к слову). И когда ты предлагаешь переделать слайды, то тебе отвечают, что в текущем запуске курса это в бюджете нет и подумаем в след запуск. Вот и получается, по факту сам курс представляет собой набор демо-классов от разных людей, далеко не всегда собранный в единное целое. (Самый кек, что я в итоге работал бесплатно, проведя 10+ лекций, потому что это было в период 2021-2022 года и мне было не интересно получить выплату в рублях, а других вариантов у компании не было)

В целом, у меня есть ощущение, что ввязываться в корп. обучение есть смысл тогда и только тогда, когда есть полный контроль над тем, как курс составлен и что в него входит. Иначе это может быть как минус для тебя как преподавателя, так как контент ассоциируют с тобой, даже если ты не его автор. Да и в целом корп. обучение ставит перед собой цель в заработке, что приводит к тому, что надо продать курс, а потом формально его закрыть и провести (Это относится не ко всем курсам, но ко многим).
👍12
Выступил внутри компании на прошлой неделе, по факту - первый опыт монолога на 40+ минут для аудитории 30-40 человек (часть была еще в зуме) на английском языке :)

Очень сильно большая разница с обычными митингами или даже зум созвонами, где что-то рассказывается

До этого я делал интенсив обучение по sql с сессиями на полтора часа внутри компании, но все равно, совершенно разные ощущения

Примерно понял по фидбеку, что нужно улучшать в своей речи и по выступлению в целом
👍82🔥1
AI tutor

Недавно мне скинули ссылку на AI Tutor для ChatGPT-4 https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor и я решил посмотреть, как это может помочь дата инженеру.

- Задача: Я хотел изучить внутренний движок запросов Apache Spark. Сам чат можно посмотреть на этой странице Notion: https://bakanchevn.notion.site/AI-Learning-782d325ffbee44ab88467bfcd9e6bc12

- Подача материала: В целом, формат ответов выглядит довольно хорошо, хотя есть некоторые недочеты (поэтому надо прокачивать скилл prompt engineering! в том числе). Я предполагаю, что для более программистских тем задачи сами по себе будут более детализированными. Иногда мне приходилось задавать вопрос несколько раз, чтобы действительно добраться до сути.

- Надежность и качество материала : Конечно, есть вопрос корректности материала, и однозначно, ориентироваться только на этот механизм не стоит 👨‍🦳, но в целом ссылки на код спарка и методы плюс минус валидные. Думаю, попробую другие темы и посмотрю, будет ли лучше или хуже.

- Тестирование. Я попробовал систему тестов и попробовал поделать ошибки в ответах. Кажется, что бот слишком вежливый, надо бы поиграться с параметрами 🤔 Фидбек выглядит валидным.

В целом, впечатление положительное, и думаю, что это может помочь людям, кто предпочитает формат самообучения, если конечно через пару лет AI не поработит нас окончательно 😡

P.S. В моем английском на скриншотах есть ошибки и недочеты, прошу этот момент игнорировать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Техническое решение и политические игры

Казалось бы, довольно понятная тема. Кажется, что процесс поиска технического решения довольно прямолинеен в теории

Возьмем “простой пример” - Представим что вы только пришли в компанию и вам поставлена задача поиска “плохих клиентов” aka fraud customers. Предположим, что наша абстрактная компания работает уже долго в индустрии и данных достаточно. Бизнес хочет, как обычно, чтобы это было как можно быстрее, чтобы “плохие клиенты” не успели совершить действий, которые приведут к потере денег

Как первая версия можно рассмотреть следующее решение, которое состоит из трех пунктов
---
1. В момент регистрации клиента происходит кросс чекинг по мейлу / телефону / другим признакам, и в случае нахождения совпадения осуществляется бан / ограничение функциональности / отправка на KYC / другой вариант
2. При осуществлении каких-нибудь платежей, если обнаружена совпадение по платежной информации с одним из “плохих клиентов” осуществляется отправка на доп. Проверку / бан / …
3. В целом, разрабатывается ML Fraud Detection Model (куда уж без этого в 2023!) для обнаружения “плохих клиентов”
---

А теперь представьте вы работаете в большой компании, например в отделе аналитики (со своими data / analytics инженерами конечно!), и вам была поставлена задача (ну или ваш менеджер оценил это так) выкатить все это в течении месяца.

Кажется, идеальная задача под стриминг для пункта 1 и 2, и возможно даже 3. Вы радостно разрабатываете архитектуру решения и предлагаете его внутри команды.

Но тут менеджер вашего департамента сообщает, что у вас нет доступа к streaming части инфраструктуры (в крайнем случае, даже к файлам сырого слоя) по соображениям безопасности / структуры / …

Рассмотрим, что можно сделать
---
1. Подключить команду, занимающуюся streaming инфраструктурой и совместно разработать проект
2. Сделать микробатч решение на вашей собственной инфраструктуре
3. Подключить команду backend разработки и сделать решение через синхронную / асинхронную передачу данных с разработкой сервиса на своей стороне
4. Сказать, что у вас такой возможности нет и передать задачу в другой отдел
5. ..
---

У каждого из этих решений есть вероятность применения в зависимости от взаимотношений и политических решений как внутри отдела, так и в целом, в компании.

Например, вариант 2 может быть достижим в случае, если вам нужна полная изолированность от других отделов (или политическое влияние обладанием этого проекта), а переговоры о предоставлении доступа с другими отделами. закончились неудачно. При этом вам нужно еще “продать” решение бизнесу, почему нужно выбрать именно это решение.

Поэтому вам, как инженеру, иногда придется делать решения, которые не являются лучшими с технической точки зрения в зависимости от других вводных условий.

Есть люди, для которых такая “несвобода” при принятии решений может быть красным флагом, и если у вас такая ситуация в отделе/департаменте, чтобы не возникло неприятных расставаний в течении работы, есть смысл устраивать role play таких ситуация на сис дизайн/behaioral интервью, если у вас есть такие практики

P.S. Пример выдуманный, все совпадения случайны и не имеют отношения к моей рабочей деятельности за последние  X лет
👍11
Mentoring

Я участвую в менторинг программе SIngularis.AI. Моя анкета находится на борде https://mathshub.notion.site/Singularis-AI-Mentoring-Program-d562243465964a94b9debfc11d2a073b#72811df65806428dadde1428e3a9786b под именем NBK. Но в целом рекомендую посмотреть различные анкеты людей и в целом слак сообщество.

Но поскольку вы в этом канале и если вам почему-то интересен менторинг от меня или просто 1-он-1 созвон, то я также вполне доступен - https://calendly.com/d/z5w-f38-3qv/1h-mentoringу (календарь пока тестовый, если вдруг не смогу в конкретное время проговорю заранее, лучше указывать ник в телеграме, если будете сет апить митинг)

В целом, формат обсуждения довольно свободный, главное, чтобы он был связан с дата тематикой, в которой я хоть как-то могу вам помочь =) (Так же могу помочь с мок интервью форматом, формата coding sql interview, easy coding python interview, и system/data design)

P.S. Я не особо опытен именно в онлайн-менторинге, но люблю формат random cofee (встречи с разными людьми) и опыт менторинга внутри компании у меня также есть.

Мой линк для референса - https://www.linkedin.com/in/bakanchevn
🔥18👍31😱1
И снова безработный

Пару дней назад был мой последний день в компании, так что можно порефлексировать, что удалось и что не удалось за 2 года.

Что удалось 👍

Когда я присоединился к компании, в ней было всего два дата инженера, и мы были частью BI команды. Однако мне 😃 (ну или не только мне :D) удалось продвинуть идею создания Data Platform или централизованной дата команды.

За полтора года мы смогли нанять и организовать Core Data команду до 8 фулл стек дата инженеров, 2 специалистов по DataOps и MLOps, менеджера (в виде меня) и дата архитектора. И есть планы по дальнейшему расширению команды. Команда получилась очень интернациональной, в ней работают люди из 9 разных стран, и это был довольно интересный вызов. Удалось организовать внутри сессию шейринга информации и внутреннего обучения.

Расширение команды стейкхолдеров - по факту на данный момент, команда стала централизацией по решению задач по дата инженерии для бизнеса, причем у нас была как прямая работа с департаментами, так и организация меж департаментовой кросс-интеграции

Мы успешно внедрили такие инструменты, как Snowflake, Hevodata и множество дата сервисов на GCP стеке. Кроме того. мы организовали Reverse-ETL и использовали различные подходы, включая batch и event-driven обработку данных.

Что осталось недостигнутым на момент ухода 👋

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

В первую очередь, процессы CI/CD были только частично организованы, но я уверен, что к концу 2023 года они будут завершены.

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

Еще одной областью, которую мы не полностью освоили, является Data Quality. Хотя мы покрыли тестами часть данных с помощью dbt и создали более 500 тестов для моделей, есть еще много работы в области интеграции данных, которую мы покрыли лишь на 10-15% 👨‍🦳.

Data Lineage - это еще одна область, где мы не продвинулись дальше общения с интересными экспертами из dwh.dev и alvin.ai. 😟

Эстония в целом 🇪🇪

Эстония офигенна, отличная дигитализация, Таллинн в целом супер крутой город, довольно маленький по размеру, но у меня не было проблем в получении каких-либо услуг. Также я получил опыт аренды жилья (впервые в жизни!) и проживания в советских пяти- и девяти- этажках (не самый позитивный 😡). К сожалению, с моим паспортом в странах Балтии могут быть сюрпризы, поэтому, как минимум на время, еду в другую локацию

Что дальше 🍷

Пока могу озвучить только, что я в процессе переезда и куда переезжаю - это Берлин (или его окрестности в будущем), Германия 🇩🇪

P.S. В планах по этому двухлетнему опыту сделать докладик - Modern Data Stack - стоила ли игра свеч
Please open Telegram to view this post
VIEW IN TELEGRAM
👏25🔥81
Nik в мире данных pinned «Mentoring Я участвую в менторинг программе SIngularis.AI. Моя анкета находится на борде https://mathshub.notion.site/Singularis-AI-Mentoring-Program-d562243465964a94b9debfc11d2a073b#72811df65806428dadde1428e3a9786b под именем NBK. Но в целом рекомендую посмотреть…»
Новая работа

Сегодня я вышел на новую работу и рад сообщить, что я возвращаюсь в индустрию больших корпоративных банков, а сама организация это Deutsche Bank в Берлине 🇩🇪

Позиция называется по прежнему Lead Data Engineer, но стек будет совершенно другой.

Посмотрим, как это будет работать при ограничениях (при выборе стека, ПО 👨‍🦳 и т.п.) после 2 лет практически полной свободы 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🔥9
EU зарплаты

https://medium.com/@mikldd/europe-data-salary-benchmark-2023-b68cea57923d

Некий EU бенчмарк для DE/AE/DS/DA, говорящий о том, что лучше всего денег дают Амстердам 🇳🇱, Дублин 🇮🇪 и Лондон 🏴󠁧󠁢󠁥󠁮󠁧󠁿 , при этом:

If you want to earn more than $200k in an IC data role in Europe, you’re most likely to do so if you work at a larger tech company such as Meta, Amazon and Booking.com 🤔

Про Мету, кажется, что для 200k TC для Senior Data Engineer нужно еще иметь контр оффер на руках для торговоли, базовый пакет E5 чуть меньше, для Букинга - не знаю в виду реджекта на фите 👨‍🦳, но вроде сеньоры там 130-180+ TC

Сам пост подсмотрел в Singularis.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔61👍1
Будни SQLщика в Clickhouse

1. Рассмотрим базовый запрос

select a1, a2, a3 from (
select a1, a2, a3 from
(
select 1 as a1
) a1
any left join
(
select 1 as a2
) a2
on a1.a1 = a2.a2
any left join
(
select 1 as a3
) a3
on a1.a1 = a3.a3
)


Запрос прекрасно работает

2. Добавим полное именование во внутренний запрос


select a1, a2, a3 from (
select a1.a1, a2.a2, a3.a3 from
(
select 1 as a1
) a1
any left join
(
select 1 as a2
) a2
on a1.a1 = a2.a2
any left join
(
select 1 as a3
) a3
on a1.a1 = a3.a3
)


Запрос перестает работать с ошибкой missing columns a1, a2, a3

3. Добавив alias во внутренний подзапрос все снова работает



select a1, a2, a3 from (
select a1.a1 as a1, a2.a2 as a2, a3.a3 as a3 from
(
select 1 as a1
) a1
any left join
(
select 1 as a2
) a2
on a1.a1 = a2.a2
any left join
(
select 1 as a3
) a3
on a1.a1 = a3.a3
)



Ну, кажется, логика плюс-минус понятна, полный алиасинг не прокидывается во внешний запрос


4. Однако!


select a1, a2 from (
select a1.a1, a2.a2 from
(
select 1 as a1
) a1
any left join
(
select 1 as a2
) a2
on a1.a1 = a2.a2
)


Работает!

(На этом месте автор ушел пить мяту и думать о вечном)

P.S. Автор понимает, что покопавшись в планах и коде самого КХ логическое объяснение может быть получено довольно просто, однако страдания обычного SQLщика от этого меньше не становятся
😁6🤔3😱3
Буду рассказывать про modern data stack 😅на одном митапе с такими легендами dbt комьюнити как Артемий Козырь 💪 и Станислав Лысиков👉

Детали тут - https://cutt.ly/bwi8covj

Залетайте!

Вторая неделя выглядит тоже супер интересной!
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥2
Вторая неделя dbt meetup - https://space307.team/dbt-meetup

Расскажут про dbt и DataVault, как мигрировать 40+ DS/PA на dbt и не грустить и что такое экпозиция в dbt!
👍5
Любой дата проект в одной картинке
😁27🤣3