Придумала себе на днях, как облегчить ресерч новой витрины данных с кучей таблиц.
У нас в Сбере при загрузке данных в таблички дописываются тех. столбцы с префиксом ctl. CTL - это штука по управлению потоками. Она может запускать разные оркестраторы: airflow, oozie итд итп
В тех. столбцах есть:
И на экране это занимает достаточно много места.
Тут еще интересен момент с chaining - мне очень нравится, когда функции вот так красиво друг за дружкой идут. Для этого нужно, чтобы каждый элемент в цепочке возвращал тот объект, который забрал.
Получили датафрейм - что-то поделали - вернули измененный, но все же датафрейм.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥8 3❤1
Топ-подборка
🕒 Полгода назад мы с коллегами практически друг за другом завели тг-каналы, обсуждали пути их развития, соревновались. (Кстати, скрипт в Airflow до сих пор присылает на почту ежедневные отчетики по инкременту подписчиков.)
🔝 А потом уже сами прошли путь до амбассадоров Сбера и вошли в топ крутышей (я надеюсь!)
И вот мы с нашими коллегами-амбассадорами собрали папку на тему IT. Возможно, откроете новые в себе новые грани, возможно, нет, но заглянуть определенно стоит👀
И вот мы с нашими коллегами-амбассадорами собрали папку на тему IT. Возможно, откроете новые в себе новые грани, возможно, нет, но заглянуть определенно стоит
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤8 6👍3🤔1
Кринж вопросы
Бывало ли у вас такое, что на собесе спрашивали абсолютную кринжатину?
В мой топ пока входят эти вопросы:
😒 Что такое json?
😒 Что такое html?
😒 А расскажите что-нибудь про ди ви эйч
В этих случаях обычно спрашивал человек возле IT, которого попросили по бумажке проверить ответы. У меня почему-то от них возникает ощущение неуважения))
И тут я подумала, что уровень вопросов на собесе тоже сильно важен. Потому что ты можешь понять, с какими людьми и задачами будешь имеешь дело. Если они задают жесть какие вопросы - значит, сами шарят за это и можно у них набраться крутого опыта👓 👏 (лично моё мнение)
🎧 А вам задавали похожие вопросы?
Ориентируетесь ли вы на уровень вопросов?
Бывало ли у вас такое, что на собесе спрашивали абсолютную кринжатину?
В мой топ пока входят эти вопросы:
В этих случаях обычно спрашивал человек возле IT, которого попросили по бумажке проверить ответы. У меня почему-то от них возникает ощущение неуважения))
И тут я подумала, что уровень вопросов на собесе тоже сильно важен. Потому что ты можешь понять, с какими людьми и задачами будешь имеешь дело. Если они задают жесть какие вопросы - значит, сами шарят за это и можно у них набраться крутого опыта
Ориентируетесь ли вы на уровень вопросов?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍1
Кем вы себя ощущаете по жизни?
Anonymous Poll
17%
Учусь
5%
Стажер
10%
Джун
20%
Джун+
17%
Мидл
14%
Мидл+
6%
Сеньор
5%
Лид
2%
Другое в IT
3%
Другое не в IT
👍1
Недавно столкнулась с необычным кейсом, связанный с несоответствием типов данных в КХ.
У нас есть таблица-источник, поверх вьюшка:
CREATE TABLE t (id String)
ENGINE = MergeTree()
ORDER BY id;
INSERT INTO t VALUES
('187'),
('2298'),
('9');
CREATE VIEW v (id Int32) AS
SELECT id
FROM t;
Обратите внимание, что в табличке лежит String, а во вьюшке Int.
Потом ищем минимумы:
SELECT min(id) FROM t;
--187
SELECT min(id) FROM v;
--9
Тут вопросиков нет: в таблице сортировка строк (поэтому с 1 будет минимальным), во вьюшке - как обычно.
А потом мы пытаем разделить на 2 диапазона по минимуму, и тут происходит какая-то дичь:
SELECT count() FROM v WHERE id >= '187';
--2
SELECT count() FROM v WHERE id < '187';
--0 ??? (должно быть 1)
SELECT count() FROM v WHERE id >= '9';
--1 ??? (должно быть 3)
SELECT count() FROM v WHERE id < '9';
--0
Причем если сравнивать без кавычек, то вываливается ошибка:
There is no supertype for types String, Int32
То есть в этих сравнениях какие-то значения сравниваются как строки, а какие-то как числа, и я не вижу никакого паттерна
Зато в плейграунде все работает как надо
Т.е. напрашивается, что особенности могут быть связаны именно с настройкой кластера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤔4
Про архитектуры дата платформ
Наконец-то появилось время посмотреть доклады со SmartData 2024. К сожалению, не разрешили пойти в оффлайн, поэтому довольствуемся чем есть🥲 🥲
🔡
Из доклада "Data Lineage: как настроить в зоопарке технологий и зачем это нужно" - Купер
Уже из всех утюгов говорят про Debezium, Iceberg, Trino, Data Lineage. Как будто взяли самые хайповые технологии и сделали конфетку, как по мне - выглядит очень круто
1️⃣
Из доклада "Data mesh: ожидания vs реальность" - Леруа Мерлен (Лемана ПРО)
Это то, с чего они начинали
©️
Это то, к чему они сейчас пришли
Есть две статьи на хабре: 2021г. и 2023г., где они вкратце про это рассказывают
Вот такой System Design
#system_design
Наконец-то появилось время посмотреть доклады со SmartData 2024. К сожалению, не разрешили пойти в оффлайн, поэтому довольствуемся чем есть
Из доклада "Data Lineage: как настроить в зоопарке технологий и зачем это нужно" - Купер
Уже из всех утюгов говорят про Debezium, Iceberg, Trino, Data Lineage. Как будто взяли самые хайповые технологии и сделали конфетку, как по мне - выглядит очень круто
Из доклада "Data mesh: ожидания vs реальность" - Леруа Мерлен (Лемана ПРО)
Это то, с чего они начинали
Это то, к чему они сейчас пришли
Есть две статьи на хабре: 2021г. и 2023г., где они вкратце про это рассказывают
Вот такой System Design
#system_design
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍4 2
This media is not supported in your browser
VIEW IN TELEGRAM
Поддержите начинающую актрису!
Мне тут написали из сообщества амбассадоров и пригласили сняться в рилсе!
Буквально 10 минут, несколько дублей, склейка, склейка - и готово
Лайки не запрещаются🩷
Мне тут написали из сообщества амбассадоров и пригласили сняться в рилсе!
Буквально 10 минут, несколько дублей, склейка, склейка - и готово
Лайки не запрещаются
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤51👍11🔥11 9🌚2 1
Мои отношения со скалой
Впервые столкнулась с ней, когда мы хотели считать графы, код на спарке конкретно падал, и я попробовала переписать все на скалу. Боль началась уже с чтения json-конфига🥲
Scala в моей голове была очень похожа на Java, но это совсем не так. После слез, страданий, знакомства с синтаксисом циклов и бесконечным количеством типов получилось что-то такое:
Уже
🟢 начало приходить понимание,
🟢 конструкции не казались супер необычными,
🟢 return без return - это норма,
🟢 вызов функций без скобочек - это норма,
🟢 отвращение отошло на второй план.
Но потом я решила погрузиться еще раз и пройти курс на степике🤓
Я снова перестала воспринимать скалу как что-то естественное. Это какое-то обилие скобочек, черточек, стрелочек, обозначающих сложные математические штуки.
😭 Однажды сидела на конфе с челами, которые реализовывали доказательства теорем на хаскале и не понимала абсолютно ничего. Запомнила только, что много раз повторялось слово "монады". Ощущение от всего этого примерно такое же.
Тут выжимка самых странных операций)
Впервые столкнулась с ней, когда мы хотели считать графы, код на спарке конкретно падал, и я попробовала переписать все на скалу. Боль началась уже с чтения json-конфига
Scala в моей голове была очень похожа на Java, но это совсем не так. После слез, страданий, знакомства с синтаксисом циклов и бесконечным количеством типов получилось что-то такое:
import org.json4s._
import org.json4s.jackson.JsonMethods._
val filename = "config_v1.json"
val config = parse(Source.fromFile(filename).getLines.mkString)
implicit val formats = DefaultFormats
for {
JObject(table) <- config
JField("columns", JArray(columns)) <- table
} {
for (column <- columns) {
val colName = column.extract[String]
// ...
}
}
}
Уже
Но потом я решила погрузиться еще раз и пройти курс на степике
Я снова перестала воспринимать скалу как что-то естественное. Это какое-то обилие скобочек, черточек, стрелочек, обозначающих сложные математические штуки.
Тут выжимка самых странных операций)
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚21👍4🔥4😁2
И меня тут осенило. Оказывается, я занимаюсь обратным ETL, не отдавая себе в этом отчета.
Reverse ETL - это по сути когда вы все загрузили, преобразовали, а потом самые крутецкие данные снова отдали в систему-источник.
И у нас есть такой пример.
Агаа! Этот человек заключил сделку, а еще ему 25 лет и есть машина. Так давайте подтянем всех остальных, кому тоже 25 и с машиной, это стопудово сработает!
Так вот процесс "засылаем их в рекламный кабинет" - это и есть reverse ETL. Мы взяли уже готовые данные, посчитанные витрины и снова закинули в систему, из которой читаем данные
#fundamentals_of_de
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17 8👍3🌚2
Покручиваем графы
Мне давно хотелось визуализировать систему лифтов, которая есть в башне на Кутузе. И вот я добралась!
➖ Предыстория
В каждой шахте ходят по 2 лифта, и есть продуманное разделение секций лифтов на три разных холла. Например, в башне Б всего 41 этаж, и уже с середины здания ты можешь добраться только с пересадкой.
На картинке вся система переходов между этажами в одной башне. Сразу видны центры сосредоточения⬇️ Буковками обозначены холлы:
C - центральный
L - левый
R - правый
(я так вижу)
🟡 Еще некоторые лифты открываются в две стороны, т.е. уехать ты можешь слева, а приехать справа.
Но есть проблема - с первого и даже с десятого раза ты не угадаешь, на каких этажах делать пересадку, пока не осознаешь логику или не выучишь все этажи👍
Мне было очень интересно составить комплексную картину, и я решила пройтись по всем этажам и холлам и четенько зафиксировать🤓
📊 В итоге все закинула в графовую бд neo4j, которая сейчас доступна только с впн, но потыкаться уже в готовой пока можно и просто так.
(Только в бесплатной версии она на паузе после 72ч неактивности. Ссылка на уже загруженные данные в проекте чуть пониже)
Чтобы что?
Чтобы понимать, каким образом можно добраться из точки А в точку Б. А потом написать мобилку, захостить и расшерить коллегам (может быть)😥
Например, вот запрос для 2х кратчайших путей между этажами:
Мне было интересно, и я покопалась в синтаксисе Cypher, чтобы минимизировать количество пересадок и их сложность (близкая или далекая), а также количество проезжаемых этажей. Потому что самым коротким могут оказаться 30+ путей, и возникли идеи дальше отбирать по логичным критериям💻
🔖 Интересный факт: чтобы добраться с 4го этажа на 41й, нужно 5 шагов! (если у вас нет доступа к крутому лифту)
Кому интересно - проектик с инструкцией лежит тут: https://github.com/Aigul9/elevators/tree/main
Мне давно хотелось визуализировать систему лифтов, которая есть в башне на Кутузе. И вот я добралась!
В каждой шахте ходят по 2 лифта, и есть продуманное разделение секций лифтов на три разных холла. Например, в башне Б всего 41 этаж, и уже с середины здания ты можешь добраться только с пересадкой.
На картинке вся система переходов между этажами в одной башне. Сразу видны центры сосредоточения
C - центральный
L - левый
R - правый
(я так вижу)
Но есть проблема - с первого и даже с десятого раза ты не угадаешь, на каких этажах делать пересадку, пока не осознаешь логику или не выучишь все этажи
Мне было очень интересно составить комплексную картину, и я решила пройтись по всем этажам и холлам и четенько зафиксировать
(Только в бесплатной версии она на паузе после 72ч неактивности. Ссылка на уже загруженные данные в проекте чуть пониже)
Чтобы что?
Чтобы понимать, каким образом можно добраться из точки А в точку Б. А потом написать мобилку, захостить и расшерить коллегам (может быть)
Например, вот запрос для 2х кратчайших путей между этажами:
MATCH p = SHORTEST 2 (from: Floor)-[*]-(to: Floor)
WHERE from.id = 1 AND to.id = 39
RETURN p, length(p) AS result
Мне было интересно, и я покопалась в синтаксисе Cypher, чтобы минимизировать количество пересадок и их сложность (близкая или далекая), а также количество проезжаемых этажей. Потому что самым коротким могут оказаться 30+ путей, и возникли идеи дальше отбирать по логичным критериям
Кому интересно - проектик с инструкцией лежит тут: https://github.com/Aigul9/elevators/tree/main
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍8❤5 3 1
Мама, я девопс
Я тут взглянула сверху на нашу команду, и вот какие роли у нас оказались:
🙂 Product Owner - выстраивает стратегии и дальносрочные планы развития продукта
🤔 Solution Architect - проектирует взаимодействия и интеграции между системами
🙂 Release Manager - отвечает за процесс релизов
👔 Lead DevOps - разворачивает инфру на опеншифтах (старается)
✍️ Big Data Analyst/восходящая звездочка PO - решает серьёзные вопросики на серьёзных созвонах
😥 Data Engineer - вкатывается в процессы, т.к. недавно пришёл
Это что получается, у нас некому работать?🙂
Я тут взглянула сверху на нашу команду, и вот какие роли у нас оказались:
Это что получается, у нас некому работать?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15😁7 4
English in Practice
Недавно сходила на собесы на английском😱 Позвала одна трейдинговая компания, но не суть) Я ещё 2 года назад, когда заводила страничку на линкедине, хотела получить такой опыт, и вот он как бы есть
Я побывала на трех этапах:
1️⃣ HR-screening
HR из Армении, неплохо говорила на русском, поэтому начало было плавным. Потом мы перешли на англ, она рассказала про компанию, я - про свой опыт
2️⃣ Pre-tech
С Head of Data в Чикаго. Я думала, что будет тех собес, но это было про софты, мотивацию. Минут 25 мне рассказывал, чем они занимаются, кого ищут, какой стек - у них api + csv + postgres + shell + cron😐
Про свой опыт, команду, офисы. Я снова рассказала про себя, но более подробно. Под конец мне вкинули несколько вопросов на общие знания:
- composition vs inheritance
- mixins
- functional programming
- joins, group by, aggregations
- data modeling
- relationships
🌸 Мысли и фразочки, которые я записала:
А во мне он отметил "impressive resume", "english is amazing" (о чем я вообще не уверена после тех собеса) и склонность к лидерству (как знать).
3️⃣ Tech interview
В этом году выпустившийся из колледжа неколлега, который задал такие вопросы:
А расскажите про свой опыт работы с:
- python?
- pandas?
- sql?
- legacy?
- java?
- etl?
- о хороших практиках проектирования ПО, которые вы применяли в работе
- самое крутое достижение
💻 И одна несложная задачка с hackerrank на возврат числа из строки со всякими разными corner cases, над которой я долго тупила, но все-таки довела до конца.
Например:
"-000102" == -102
"abc" == 0
"56abc90" == 56
🪐 Вопросы, конечно, слишком общие, от них сложилось странное ощущение. Пока не могу экстраполировать один собес на весь зарубежный рынок) Возможно, я дала не слишком развернутые ответы или их что-то отпугнуло, но по ходу собеса не почувствовала недоброжелательных интонаций❔ В общем, я запросила ОС, но пока без ответа)
Недавно сходила на собесы на английском
Я побывала на трех этапах:
HR из Армении, неплохо говорила на русском, поэтому начало было плавным. Потом мы перешли на англ, она рассказала про компанию, я - про свой опыт
С Head of Data в Чикаго. Я думала, что будет тех собес, но это было про софты, мотивацию. Минут 25 мне рассказывал, чем они занимаются, кого ищут, какой стек - у них api + csv + postgres + shell + cron
Про свой опыт, команду, офисы. Я снова рассказала про себя, но более подробно. Под конец мне вкинули несколько вопросов на общие знания:
- composition vs inheritance
- mixins
- functional programming
- joins, group by, aggregations
- data modeling
- relationships
We don't assume everybody can do everything.
More often than 2 years is a red flag. (про смену работы)
А во мне он отметил "impressive resume", "english is amazing" (о чем я вообще не уверена после тех собеса) и склонность к лидерству (как знать).
В этом году выпустившийся из колледжа неколлега, который задал такие вопросы:
А расскажите про свой опыт работы с:
- python?
- pandas?
- sql?
- legacy?
- java?
- etl?
- о хороших практиках проектирования ПО, которые вы применяли в работе
- самое крутое достижение
Например:
"-000102" == -102
"abc" == 0
"56abc90" == 56
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤17 12🔥6 4👍1😁1
Больше архитектур
Недавно была на "Hadoop Admins Meetup", где рассказывали про современные тех. штуки и подкапотную жесть🌼 В продолжение поста закидываю вам еще ряд интересных картинок с архитектурами систем и умными словами.
Из того, что озвучили в докладах:
Data Ocean Nova - платная штука от Glowbyte
Apache Yunikorn - замена YARN (ресурс-менеджер на кластере)
Talys.SDI - CDC для стриминга с Flink
Apache Kyuubi [кьюби] - суперновая модная штука с парой докладов на русском (остальные - китайские), что-то типо спарка, но поверх спарка (в том числе)
Вряд ли я вживую пойду слушать в другой раз, много чего было абсолютно непонятно😱 Плюс было немного людей, и все такие взрослые и пожившие эту жизнь)) Разве что чтобы быть в контексте?
🔍 P.S. А вы на логотипе Flink тоже видите сердце вместо белочки?
#system_design
Недавно была на "Hadoop Admins Meetup", где рассказывали про современные тех. штуки и подкапотную жесть
Из того, что озвучили в докладах:
Data Ocean Nova - платная штука от Glowbyte
Apache Yunikorn - замена YARN (ресурс-менеджер на кластере)
Talys.SDI - CDC для стриминга с Flink
Apache Kyuubi [кьюби] - суперновая модная штука с парой докладов на русском (остальные - китайские), что-то типо спарка, но поверх спарка (в том числе)
Вряд ли я вживую пойду слушать в другой раз, много чего было абсолютно непонятно
#system_design
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7 4👍1
Командный мудборд
Сделали с коллегами "мотивационный плакат" на одном из ретро за 5 минут
Вот такой у нас вайб😄
Всем хорошей недели!💻
Сделали с коллегами "мотивационный плакат" на одном из ретро за 5 минут
Вот такой у нас вайб😄
Всем хорошей недели!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16😁8 6👍1
В конце "Fundamentals of DE" была ссылка на подкаст, который ведут авторы книги. И мне захотелось погуглить, а какие еще подкасты про де есть. Взяла за основу список с прошлогоднего поста на реддите, убрала неактивные и добавила новые. Поделитесь, кто что слушает и что рекомендуете?
Monday Morning Data Chat - от авторов
The Analytics Engineering Podcast
The Data Engineering Show
The Data Engineering Podcast
The Data Stack Show
Drill to Detail Podcast
Analytics Power Hour
DataTalks.Club
The Data Cloud Podcast
The MongoDB Podcast
The Analytics Everywhere Podcast
The Real Python Podcast
Plumbers of Data Science Podcast
What's New in Data?
The Datanation Podcast
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥24❤5 2👍1
Мини-квиз
Есть два запроса. Какой из них корректный?
1️⃣
2️⃣
Есть два запроса. Какой из них корректный?
SELECT id, COUNT(*)
FROM demo
GROUP BY id
HAVING id = 3;
SELECT id, COUNT(*)
FROM demo
GROUP BY id
HAVING MIN(id) = 3;
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14