дата инженеретта – Telegram
дата инженеретта
2.98K subscribers
242 photos
28 videos
4 files
102 links
мелкое — крупно,
в глубоком разговоре
мудрость приходит

по вопросам сюда: @aigul_sea
Download Telegram
Какой запрос корректный? ⬆️
Anonymous Quiz
29%
1
24%
2
35%
оба
13%
ни один
119
🌟Ответ🌟

Вопрос тут

Правильный вариант - оба!

В having можно использовать:

⚫️любую агрегирующую функцию (необязательно ту, которая в селекте)
⚫️колонки из group by
⚫️константы (применение не придумала)

Так что чисто технически можно фильтровать значения и в having, но, вероятно, это будет дольше 😔 А в некоторых базенках оптимизатор сам делает, как where
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20
Я начала курс по систем дизайн

Давно хотела в это погрузиться - как проектировать, как считать ресурсы и нагрузку, как выбирать технологии

чтобы не только крутить таблички, но и выбиваться в тех лиды👔

У нас есть закупленные курсы, и конкретно этот от карпова на 5 недель. Я уже посмотрела первый вводный урок про то, что будет:

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

Среди спикеров Валерий Бабушкин, который накидал кучу непонятных букв типо ELP, consistent hashing, QPS, trie, фильтр Блума и т.д.
Ну ладно, не совсем непонятных 😁 Trie я видела в задачках на литкоде, а фильтр Блума использовала в магистерской)

Плюс это все еще и с точки зрения данных, а не чисто приложух
Короче, звучит супер хайпово 🍢
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍42
Прошедший Data.Meetup

🕒24.10.2024 состоялся Data.Meetup 2024 в Сбере, где сначала рассказывали про сберовские штуки типо супермаркета или карты данных, а потом про Trino, Iceberg и Flink.

🐰 Оказалось, что у нас Trino внедряют, но как обычно с банковскими обвязками. Сейчас там сейчас 300+ пользователей, еще планируются доработки и добавление функционала. Показалось, что лучше еще подождать, пока это все подъедет. А на одном недавнем митапе мне сказали, что в озоне пилотится Trino.

Про Trino+Iceberg рассказывал спикер, который в этом году выступал на SmartData с похожим докладом тык

🐿 Больше всего понравился практический доклад по Flink - объясняли про окна событий на пальцах (точнее на белочках и орешках) и как их джойнить между собой. Лайк 👍

Я тут поресерчила в конфлюэнсе - у нас есть R&D команда, которая занимается ресерчами новых технологий. И они еще в начале 2022 года (если не раньше) тестили Trino, Iceberg, Hudi, Delta Lake (но не знаю, к чему пришли).

А на кофе-брейке я осмелилась подойти к CDO WB и начать разговор🌼 Помню, что еще давно писала ему по поводу рекламы моего канальчика, но после расценок решила ничего не делать))
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥112👍1🌚1
Я иду на интенсив по англу!

Есть люди, которые спрашивают про мой уровень англа и как я до него дошла. Все-таки он очень важен в нашей сфере, и гуглеж на англ - наше все. Так что рассказываю свою краткую историю...

📖 История

🟣Начиналось все очень плохо. Два года (весь 2-3 класс) мы просто читали, а в 4 снова начали учить буквы 💢

🟣В 5 всем классом поменяли препода, но уже были проблемы с аудированием.

🟣В 8 я перешла в другую школу с делением на сильную и слабую группы. По тестам я чуть недотянула, но мне разрешили остаться в сильной и попробовать. Мы на уроках смотрели Гарри Поттера в оригинале, и все понимали, а я нет 😭

🟣В 10 нам сказали, что именно мы все пишем ЕГЭ в след году. Я год с лишним ходила к репетитору, пока нам не сказали "отмена"

🟣В универе снова были входные тесты, и групп было уже 4 по градации. Да, я попала в сильную! Некоторые снова смотрели фильмы в оригинале без субтитров и имели большой словарный запас. Тогда я тоже начала смотреть фильмы 📺

🟣На 3 курсе я начала играть в онлайн-игрульку и наткнулась на english-speaking community. В течение 3х лет я подключалась на голос для обсуждений, читала абсолютно все чатики, постила мемы на англ, вела свой словарик частых сокращений, переписывалась с игроками в личке. Заметила, что у меня появился американский акцент

🟣Потом я захотела получить опыт иностранных собесов на будущее, но мое резюме было никому не нужно 🥲
А сейчас я наткнулась на AgileFluent, они помогают специалистам из IT и digital находить работу за рубежом, а также прокачивать бизнес-английский. У них есть крутые программы, ориентированные не на королевский Future Perfect Continuous in the Past, а на жизнь. И я решила попробовать какой-нибудь интенсив на 1 месяц.

Всего их 3, но мне понравились вот эти:
1️⃣ Engish for IT teams, где на англ ведутся скрам-церемонии (планирование, стендапы, демо, ретро)
2️⃣ Focus on Speaking - как решать конфликты, как давать фидбек и вести переговоры

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

А вот со вторым уже что-то поинтереснее.
🙂 Встречи 2 раза в неделю, где мы будем обсуждать реальные жизненные ситуации. Поток стартует 11 ноября, и если вы тоже хотите запрыгуть, то можете использовать мой реферальный код CREF-MMTTRM (7% на первую покупку)
Я в предвушении🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍832
👍 DE на Матемаркетинге 👍

7-8 ноября прошла конфа "Матемаркетинг", где рассказывают в основном про аналитику, рекламу, метрики, АБ-тесты и т.п. Я смотрела в онлайне, пробежалась глазками по всем докладам, изучила наиболее ДЕшные и делюсь с вами)

Расскажу про 4 доклада с крутыми спикерами:

1️⃣ Data mesh на modern stack - рук. DWH, Магнит Омни (картинка 1)

Data mesh (сеть данных) - когда вместо единой платформы есть команды-домены, которые ответственны за свой маленький кусок.

Здесь заинтересовал подход к data governance (управление данными) - системные аналитики описывают данные рядом с кодом. Если нет описания или оно неактуальное, не будет заапрувлен Pull Request через GitLab Actions.

2️⃣ Data mesh: от теории к реальности - зам. CDO, Райффайзен (картинка 2)

Рассказывали про историю развития платформы, пилот и результаты. Мысль: Data mesh - по сути микросервисы

3️⃣ Как понять, какая организация хранилища подходит вам? - рук. DWH, Яндекс Поиск/Реклама

Тут были экзистенциальные мысли:

Почему у вас выгодно делать продукт "данные"?


"Само" хорошо не будет.


4️⃣ Как построить облачную платформу данных в условиях импортозамещения - CDO, Лучи (ex. BestDoctor) - картинка 3

Тут рассказывали про альтернативные технологии, кроме всем известных выделенных жирным. Накидываю вам еще больше незнакомых буковок, но я тоже про половину не слышала, так что все норм:

⚫️Обработка: Airflow, dbt, Kafka, Flink, Spark Streaming, DolphinScheduler, Prefect, Kestra, Airbyte, Flyte, Mage, RedPanda, Pulsar, NATS
⚫️DWH: Greenplum, ClickHouse, Trino, CockroachDB, Doris, Ignite, StarRocks
⚫️Управление данными: OpenMetadata, DataHub, Atlas, Great Expectations, Marquez, LakeFS, Nessie, Elementary

У них было DWH на Greenplum. В итоге они поменяли стек на:
Storage - S3
Metastore - Iceberg REST Catalog
Compute - Trino
Оркестратор - Dagster



Самое забавное, что в трех самых технических докладах рассказывали про data mesh. Плюс удивлена, что пригласили букмекерские конторы. Как мне кажется, они не особо котируются.

Кто-то стал частичкой мероприятия?

#system_design
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍9🔥41
System Design. №1 Требования

Писала тут, что начала проходить курс по SD. Решила вести собственные конспекты, чтобы лучше укладывалось в голове.

🍊Первое - нужно ответить себе на вопрос:

Зачем нужна эта система?


Отсюда определить фкц и нефкц требования:

Фкц - это фичи. Которые будут нужны, даже если у нас суперкомпьютер с неограниченными ресурсами и ничего никогда не ломается.

Нефкц - вопросики к ограничениям системы, большинство замеряются метриками

Основные вот эти:

1. Производительность и масштабируемость

⚫️Requests/Queries per second (RPS/QPS) - запросы в сек
⚫️Connections per second (CPS) - соединения к серверу в сек
⚫️Throughput - пропускная способность в байтах/сек
⚫️Latency - задержка отклика (сеть, диск) в мс. Оптимально < 100ms

2. Отзывчивость

⚫️First Contentful Paint (FCP) - время загрузки первого элемента на страничке. Оптимально < 1.8s
⚫️Largest Contentful Paint (LCP) - время загрузки самого большого элемента на страничке. Оптимально < 2.5s
⚫️Time To Interactive (TTI) - время загрузки всех интерактивных элементов
⚫️Time To First Byte (TTFB) - время получения первого байта видоса
⚫️Bitrate - скорость передачи данных, бит/с

3. Надёжность и доступность

⚫️Uptime - процент времени работы системы
⚫️Availability - процент времени работы системы с учетом ее обслуживания, т.е. эта метрика может быть ниже
⚫️Mean time between failures (MTBF) - время работы между отказами
⚫️Mean Time To Repair (MTTR) - время восстановления после сбоя

4. Безопасность

Это соблюдение стандартов безопасности, защита от несанкционированного доступа, шифрование и т.д.

Тут можно потыкаться в метриках и потестить сайтики

#system_design
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3🤔1
А вы знали, что существует лидерский манифест о данных?
👍1
Как я забила всю оперативку

⭐️Нужно было переложить табличку из кх в s3 через Airflow. Табличка небольшая, проблем быть не должно

Идея №1

1️⃣Считать табличку из кх в pandas dataframe
2️⃣Сохранить датафрейм в .csv файл
3️⃣Залить в s3 через либу boto3

Пока тестирую и отлаживаю на 10 строках - все ок. Убираю лимит - и Airflow становится очень плохо, он не прогружается и не дает завершить таску 🥲

Смотрю в источник - там 12млн строк. Неужели pandas не может столько переварить? Очевидно, надо искать другой способ

Идея №2

Я раньше сталкивалась, что в кх можно прям запросом читать из s3. Вот так:

SELECT * FROM s3()


Оказывается, это работает и на запись!

INSERT INTO FUNCTION s3()
SELECT * FROM your_table


В эту функцию можно добавлять разные настройки. Из полезного - разбить вашу табличку на несколько файликов. Примерно такой код у меня работает:

INSERT INTO FUNCTION
s3(
'filename_{{_partition_id}}.csv.gz',
'S3_ACCESS_KEY',
'S3_SECRET_ACCESS_KEY',
'CSVWithNames'
)
PARTITION BY rand % 10
SELECT * FROM your_table;


Что тут есть?

⚫️{_partition_id} – это переменная, которая пробрасывается сама. Просто счетчик от 0
Если вставлять этот код в строку, нужно обязательно обрамить скобками {} дважды – иначе s3 воспринимает это по-другому и падает с ошибкой

⚫️.gz – алгоритм компрессии файликов

⚫️CSVWithNames – мы включаем названия столбцов первой строкой

⚫️PARTITION BY [столбец] - можно выбрать существующий или просто задать рандомно

И этот метод работает просто в разы быстрее. Теперь табличка на 12 млн строк пишется за несколько секунд 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2119👍3
Мы в этой жизни всё делаем правильно?

Картина буквами: 10% от всего плана запросов
🌚10👍1🤔1
Я прочитала DAMA-DMBOK

Это книжка на 830 страниц - "Свод знаний по управлению данными". Мне ее как-то советовали прочитать, и вот полтора месяца я упорно это делала 📖

Вкратце эта книга про фреймворк DAMA (Data Management Association). Про то, как должно быть. Он включает такие аспекты:
🔵архитектура и моделирование данных
🔵хранение
🔵безопасность
🔵интеграции
🔵основные данные
🔵метаданные
🔵качество данных
и еще несколько (на картинке - колесо DAMA)

Я по ходу чтения записывала интересные, новые для меня моменты, буду постепенно делиться)

Зачем это все нужно?

Одни и те же данные складываются по-разному, называются по-разному. Одинаковые метрики считаются по-разному.

Глобальная цель - чтобы я из маркетинга и Оля из любой другой команды понимали, что цена всегда до ндс, а clientid имеет тип string и обозначает человека, который купил у нас продукт.

Это нужно, чтобы больше не переписываться в почте на тему "А это что означает? А что заложено в эту метрику?". Мы делаем каталог данных, и каждый ходит туда и смотрит нужные ему вещи:
🟡бизнес-смысл
🟠бизнес-правила
🟡источник
🟠логика преобразований из системы в систему (lineage)

🙂 Еще сквозь всю книгу красной линией проходит мысль - бизнес и IT должны работать вместе. Кстати, у нас когда-то вставал вопрос - нужно ли IT-командам на 100% понимать, как их работа влияет на метрики бизнеса?

В Сбере есть активность "Random Coffee", где рандомно подбирается зареганный собеседник. И несколько человек мне ответили, что они просто крутят модельки и жизнь прекрасна 🌼

Что думаете?

#dama_dmbok
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2365👍2
Кейс про паркеты

Предыстория

Мы хотим перекладывать паркет-файлики из одной системы в другую. Выложили их на s3. Все, можно забирать. Казалось бы, что может пойти не так?

Но этот процесс прошел несколько итераций, прежде чем я сказала "все ок" 😊

1️⃣
Проблема: Illegal Parquet type: FIXED_LEN_BYTE_ARRAY
Смысл: паркет не умеет читать тип FixedString из кх
Решение: удаляем столбец или сохраняем в формате String

2️⃣
Проблема: Required field 'codec' was not present!
Смысл: связано с несопоставимыми алгоритмами компрессии файлов
Решение: используем другой алгоритм (н-р, Snappy)

3️⃣
Проблема: Строковые типы отображаются вот так: [57 65 62 4B 69 74]
Смысл: отображается в бинарном виде
Решение:

SELECT unhex(regexp_replace(StartURL, ' ', ''))

(или без unhex)

Но это неудобно все преобразовывать на этапе чтения

4️⃣
Проблема: делаю printSchema() и вижу, что все строковые поля имеют тип binary
Решение: сохраняем в string

5️⃣
Проблема: date в формате 20031
Смысл: это количество дней от 1970-01-01
Решение:

df.withColumn(
'new_date',
F.date_from_unix_date(date)
)


6️⃣
Проблема: функция date_from_unix_date появилась в версии 3.5.0, а у нас ниже
Решение: делаем примерно так и кладем все в string на этапе записи

SELECT date_add('1970-01-01', 20031) AS new_date


Ура😑
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
🐘 Ребятки, в эту субботу в Москве состоится осенний бигдатник 🐘

Он будет:
⏺️про технологии - Flink, Streamhouse, Iceberg, Debezium
⏺️про кейсы
⏺️про нетворкинг

Движуха на целый день с едой!💃
Кто не в мск - будет онлайн стрим 📺

Кто боится ходить на такие сходки - у меня дома для мотивации уже сколько лет висит цитата Коко Шанель:

Если вы хотите иметь то, что никогда не имели, вам придётся делать то, что никогда не делали.


Я еще в прошлый раз хотела сходить - практически выиграла билеты, но что-то пошло не так( Так что собираюсь в этот раз обязательно быть 🙂 Надеюсь с кем-то из вас увидеться❤️

🔉Координаты:

⏺️30.11.2024, 10:20
⏺️Таганская, 9

Когда будете покупать билет, введите в поле "Онлайн/Офлайн, Компания" промокод DATAENGINE. Тогда есть большой шанс, что следующий бигдатник для вас будет бесплатным!

За билетами сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
135🔥4👍1
Ураа, мне пришла приглашалка на митап 🌼 Неужели я достигла уровня значимых факапов?

🍿 А в комментах можете поделиться, были ли у вас неудачи и как вы из них выпутывались. Было бы интересно посмотреть)
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13👍1
🎄 Завтра стартуют advent-челленджи 🎄

Advent of Code
Advent of SQL

На sql я наткнулась только недавно. Возможно, он проводится в первый раз?
А вот про advent of code мне рассказали в 2020 году в кругу американских прогеров и математиков

🗓️ Это связано с адвент-календарем, в котором каждый день с 1 по 25 декабря люди открывают по одному окошечку с подарком по случаю католического рождества

💻 Обычно первые задачки супер изи, но до 25 дня я не доходила (потому что алгосы - это слабенькое место), а в прошлом году уровень в разы повысился из-за развития AI штук. Что будет в этом году - даже не знаю. Хотя там есть глобальный лидерборд, и некоторые пишут длиннющие однострочники и решают в терминале за миллисекунды 😱

В общем, это интересная штука, потому что:

🩷есть сторителлинг, т.е. вы не просто решаете рандомные задачки, а они еще связаны единой канвой - эльфами, тропическими островами и прочими штуками

🩷можно круто прокачаться в использовании либы itertools (если на питоне)

🩷можно почекать на реддите, как другие решают на абсолютно любом языке (есть даже Excel, Zig, J, Uiua, Raku и куча других ноунеймов)

🩷можно выставить свое решение, чтобы кто-то прокомментил. мои решения даже набирали два лайка 😁

🩷а еще однажды на собесе спросили, в каких это я хакатонах участвую 😅 возможно, это был плюсик в карму!
Please open Telegram to view this post
VIEW IN TELEGRAM
25👍9