TGViewer
Channel Public Channel
дата инженеретта

дата инженеретта

@data_engineerette

мелкое — крупно,
в глубоком разговоре
мудрость приходит

по вопросам сюда: @aigul_sea
Subscribers
3.43K
Photos
306
Videos
28
Links
129

Showing posts older than #218 · Back to latest

Older Posts 12 shown
Post #217 2.18K
Мама, я девопс

Я тут взглянула сверху на нашу команду, и вот какие роли у нас оказались:

🙂 Product Owner - выстраивает стратегии и дальносрочные планы развития продукта

🤔 Solution Architect - проектирует взаимодействия и интеграции между системами

🙂 Release Manager - отвечает за процесс релизов

👔 Lead DevOps - разворачивает инфру на опеншифтах (старается)

✍️ Big Data Analyst/восходящая звездочка PO - решает серьёзные вопросики на серьёзных созвонах

😥 Data Engineer - вкатывается в процессы, т.к. недавно пришёл

Это что получается, у нас некому работать? 🙂
  • 👍 15
  • 😁 7
Post #216 2.71K
Покручиваем графы

Мне давно хотелось визуализировать систему лифтов, которая есть в башне на Кутузе. И вот я добралась!

➖ Предыстория
В каждой шахте ходят по 2 лифта, и есть продуманное разделение секций лифтов на три разных холла. Например, в башне Б всего 41 этаж, и уже с середины здания ты можешь добраться только с пересадкой.

На картинке вся система переходов между этажами в одной башне. Сразу видны центры сосредоточения⬇️ Буковками обозначены холлы:
C - центральный
L - левый
R - правый
(я так вижу)

🟡 Еще некоторые лифты открываются в две стороны, т.е. уехать ты можешь слева, а приехать справа.

Но есть проблема - с первого и даже с десятого раза ты не угадаешь, на каких этажах делать пересадку, пока не осознаешь логику или не выучишь все этажи👍

Мне было очень интересно составить комплексную картину, и я решила пройтись по всем этажам и холлам и четенько зафиксировать🤓

📊 В итоге все закинула в графовую бд neo4j, которая сейчас доступна только с впн, но потыкаться уже в готовой пока можно и просто так.
(Только в бесплатной версии она на паузе после 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+ путей, и возникли идеи дальше отбирать по логичным критериям 💻

🔖Интересный факт: чтобы добраться с 4го этажа на 41й, нужно 5 шагов! (если у вас нет доступа к крутому лифту)

Кому интересно - проектик с инструкцией лежит тут: https://github.com/Aigul9/elevators/tree/main
  • 🔥 29
  • 👍 8
  • ❤ 5
Post #214 1.95K
⤵️ Reverse ETL

📙 У меня сейчас эра чтения умных книжек, сейчас я читаю "Fundamentals of DE" и закрываю пробелы.
И меня тут осенило. Оказывается, я занимаюсь обратным ETL, не отдавая себе в этом отчета.

Reverse ETL - это по сути когда вы все загрузили, преобразовали, а потом самые крутецкие данные снова отдали в систему-источник.

И у нас есть такой пример.

🧦 Есть такая штука, которая называется офлайн-конверсии - когда человек пришел ножками в отделение и заключил сделку, но на сайт мог вообще не заходить. Мы для таких клиентов метчим данные о сделках с внутренними данными и засылаем их в рекламный кабинет. Чтобы рекламная кампания такая:

Агаа! Этот человек заключил сделку, а еще ему 25 лет и есть машина. Так давайте подтянем всех остальных, кому тоже 25 и с машиной, это стопудово сработает!


Так вот процесс "засылаем их в рекламный кабинет" - это и есть reverse ETL. Мы взяли уже готовые данные, посчитанные витрины и снова закинули в систему, из которой читаем данные✨

#fundamentals_of_de
  • ❤ 17
  • 👍 3
  • 🌚 2
Post #212 2.14K
Мои отношения со скалой

Впервые столкнулась с ней, когда мы хотели считать графы, код на спарке конкретно падал, и я попробовала переписать все на скалу. Боль началась уже с чтения 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]
// ...
}
}
}


Уже
🟢начало приходить понимание,
🟢конструкции не казались супер необычными,
🟢return без return - это норма,
🟢вызов функций без скобочек - это норма,
🟢отвращение отошло на второй план.
Но потом я решила погрузиться еще раз и пройти курс на степике🤓

Я снова перестала воспринимать скалу как что-то естественное. Это какое-то обилие скобочек, черточек, стрелочек, обозначающих сложные математические штуки.

😭 Однажды сидела на конфе с челами, которые реализовывали доказательства теорем на хаскале и не понимала абсолютно ничего. Запомнила только, что много раз повторялось слово "монады". Ощущение от всего этого примерно такое же.

Тут выжимка самых странных операций)
  • 🌚 21
  • 👍 4
  • 🔥 4
  • 😁 2
Post #211 2.17K
Поддержите начинающую актрису!

Мне тут написали из сообщества амбассадоров и пригласили сняться в рилсе!
Буквально 10 минут, несколько дублей, склейка, склейка - и готово

Лайки не запрещаются🩷
  • ❤ 51
  • 👍 11
  • 🔥 11
  • 🌚 2
Post #207 2.59K
Про архитектуры дата платформ

Наконец-то появилось время посмотреть доклады со SmartData 2024. К сожалению, не разрешили пойти в оффлайн, поэтому довольствуемся чем есть🥲🥲

🔡
Из доклада "Data Lineage: как настроить в зоопарке технологий и зачем это нужно" - Купер
Уже из всех утюгов говорят про Debezium, Iceberg, Trino, Data Lineage. Как будто взяли самые хайповые технологии и сделали конфетку, как по мне - выглядит очень круто

1️⃣
Из доклада "Data mesh: ожидания vs реальность" - Леруа Мерлен (Лемана ПРО)
Это то, с чего они начинали

©️
Это то, к чему они сейчас пришли
Есть две статьи на хабре: 2021г. и 2023г., где они вкратце про это рассказывают

Вот такой System Design

#system_design
  • 🔥 16
  • 👍 4
Post #206 2.5K
1️⃣➕2️⃣❕🟰3️⃣

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

У нас есть таблица-источник, поверх вьюшка:

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


То есть в этих сравнениях какие-то значения сравниваются как строки, а какие-то как числа, и я не вижу никакого паттерна😭

Зато в плейграунде все работает как надо😑
Т.е. напрашивается, что особенности могут быть связаны именно с настройкой кластера
  • 👍 9
  • 🤔 4
Post #205 1.94K
  • 👍 1
Post #204 2.45K
Кринж вопросы

Бывало ли у вас такое, что на собесе спрашивали абсолютную кринжатину?

В мой топ пока входят эти вопросы:

😒 Что такое json?
😒 Что такое html?
😒 А расскажите что-нибудь про ди ви эйч

В этих случаях обычно спрашивал человек возле IT, которого попросили по бумажке проверить ответы. У меня почему-то от них возникает ощущение неуважения))

И тут я подумала, что уровень вопросов на собесе тоже сильно важен. Потому что ты можешь понять, с какими людьми и задачами будешь имеешь дело. Если они задают жесть какие вопросы - значит, сами шарят за это и можно у них набраться крутого опыта👓👏 (лично моё мнение)

🎧 А вам задавали похожие вопросы?
Ориентируетесь ли вы на уровень вопросов?
  • ❤ 8
  • 👍 1
Post #203 2.48K
Топ-подборка

🕒 Полгода назад мы с коллегами практически друг за другом завели тг-каналы, обсуждали пути их развития, соревновались. (Кстати, скрипт в Airflow до сих пор присылает на почту ежедневные отчетики по инкременту подписчиков.)

🔝 А потом уже сами прошли путь до амбассадоров Сбера и вошли в топ крутышей (я надеюсь!)

И вот мы с нашими коллегами-амбассадорами собрали папку на тему IT. Возможно, откроете новые в себе новые грани, возможно, нет, но заглянуть определенно стоит 👀
  • 🔥 17
  • ❤ 8
  • 👍 3
  • 🤔 1
Post #202 2.35K
🔍Расширяем датафреймы

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

🍺Контекст
У нас в Сбере при загрузке данных в таблички дописываются тех. столбцы с префиксом ctl. CTL - это штука по управлению потоками. Она может запускать разные оркестраторы: airflow, oozie итд итп

В тех. столбцах есть:
⏺тип операции (update, insert)
⏺id загрузки (чтобы можно было легко откатить)
⏺дата загрузки строки
⏺дата, по которую строка актуальна

И на экране это занимает достаточно много места.

💻Я набросала класс, чтобы удобно работать с пулом датафреймов - на картинке.

Тут еще интересен момент с chaining - мне очень нравится, когда функции вот так красиво друг за дружкой идут. Для этого нужно, чтобы каждый элемент в цепочке возвращал тот объект, который забрал.
Получили датафрейм - что-то поделали - вернули измененный, но все же датафрейм.
  • 👍 8
  • 🔥 8
  • ❤ 1
Post #192 2.18K
Yet Another Teamlead Meetup

Снова захотелось понетворкаться, и я пошла на митап тимлидов в озон)
там лейтмотивом было:

🔵как погружаться в предметную область
🔵как должен действовать тимлид
🔵как расти в тимлида
🔵как растить тимлидов
🔵зачем расти в тимлида
🔵тимлид vs инженер

📘Посоветовали почитать книжку Елены Резановой "Это норм" - если что-то не получается.

А вот основные мысли, которые мне запомнились:

✨Лид хочет решить проблему, а инженер - задачу (может даже без понимания цели)

И это действительно важно: зачем вы делаете задачу, почему, какое вэлью. У меня понимание начало приходить спустя 6 месяцев, и это коррелирует с опытом других людей: 3-6 месяцев в зависимости от сложности предметной области.

✨Точка зрения лида понятна всем, а инженера - только ему

✨Лид ищет альтернативные решения дешевле/лучше первого попавшегося

✨Сеньор отличается от тимлида масштабом задач

✨Тимлид должен научить команду делать столько же задач, сколько делает сам (и даже быстрее)

🔷Немного математики

+1 тимлид = -1 сеньор (если внутри команды)
Если стал плохим тимлидом, -1 сеньор и -1 тимлид (ни того, ни другого). И потенциально -команда

🎈Вот такие инсайты)
Познакомилась с коллегой из Сбера, DA из Додо, ML-инженером из НСПК (карты мир и все такое). Покушала. Задала спикерам пару вопросов: они сказали, что 4 собеса в день не очень и что правильный тайминг для вопросов по ходу встречи - когда говорящий берет дыхание🙂
  • 🔥 6
  • 👍 5
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →