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

по вопросам сюда: @aigul_sea
Download Telegram
А вы знали, что в питоне так можно?

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

1️⃣ Имя функции - это переменная, и этому имени мы можем присвоить что угодно:

def func():
print('hi')

func()
# hi

func = -1

func()
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# TypeError: 'int' object is not callable


Естественно, после переопределения все предыдущие возможности перестают действовать

2️⃣ Та же история с модулями:

import math

type(math)
# <class 'module'>

math = -1

type(math)
# <class 'int'>


3️⃣ При импорте модулей существующие переменные перезаписываются:

x = 2

from mymodule import x

print(x)
# 'new_value'


4️⃣ А переменные после цикла остаются существовать:

for i in range(2):
print(i)

print(i) # 2


#python_tips
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2012👍7🌚5👀3😁2🎄1
Про качество данных

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

😭 Был кейс, когда одна команда сделала финансовую отчетность на основе некорректных данных и направила куда-то выше. В этой отчетности цифры были сильно меньше, чем потратили. И встал вопрос - а куда делись все остальные средства? Так что это может довести до серьезных последствий.

❤️‍🩹 А вообще качество данных - это очень хрупкая вещь.

Где может пойти не так?
▶️при выгрузке из источника (поставили лишний фильтр)
▶️при передаче между системами (все задублировалось, потеряли куски информации)
▶️при интеграции нескольких источников (не на все данные прописаны правила сопоставления)
▶️при анализе (неправильно посчитали)

А это очень милая и грустная аномалия в контексте целостности данных:
▶️сироты - когда внешние ключи никуда не ведут

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


Руководство данными нужно для того, чтобы «делать правильные вещи» (Doing the right things), а управление данными — для того, чтобы «делать вещи правильно» (Doing things right)


#data_dmbok #fundamentals_of_de
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35🔥11👀6😁1
Полезности про Spark

1️⃣Я периодически посматриваю доклады с хайлоада. Один из крутых - «Оптимизация Spark-приложений от простого к сложному. С примерами». По ссылочке можно найти презу:

https://highload.ru/moscow/2024/abstracts/13255

2️⃣И тут я поняла, что натыкалась на его же статью про спиллы данных, где подробно на примерах и в картинках это все разбирается:

https://habr.com/ru/amp/publications/743292/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍64
Теперь я lamodian☺️

Начинаю эту весну с изменений в своей жизни - теперь я буду дата инженерить в Lamoda Tech🙂

👔 В пн был мой первый рабочий день - провели онбординг в процессы, выдали мак на м3, устроили экскурсию по офису. Я познакомилась с корп сервисами, сразу записалась на фотосессию для профиля и на экскурсию в фотостудию 🥰

Узнала, что на этой неделе будут проходить встречи, мастер-классы и квизы на тему моды, будет день модных вкусняшек и день призов от какого-то бренда. Все очень прикольно, но в офис я ехать больше не хочу - я добиралась 1:20 от двери до двери с двумя пересадками на метро + автобус😱

🥠 На кухоньке есть свежие фрукты, овощи, зона завтрака с мюслями, печеньки и чокопайки, кофеечек, холодос с 4 видами молока, можно сделать тосты

🙂Из удивительного - в офисе есть душевая, а временный пропуск я оформила за пару минут

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

📺 Еще я сходила на встречу "collaba", где менеджмент рассказывает про бизнес-инсайты, цифры, бренды, процессы поставок через страны

🛍️ Плюс каждый месяц у меня есть два промика на -15%, кому нужно - пишите)
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥983519👍7🦄3🌚2👀1
Песочница для DE

Один крутой чел создал песочницу с де-инструментами. Из прикольного там есть Zookeeper, MinIO, Iceberg, MariaDB и даже Grafana. Я сама только походила по репе, но вам советую попробовать поднять все это дело, потыкаться и поделиться, что как оно там

Ссылка на репу: https://gitflic.ru/project/ananevsyu/sandbox_db_public

Автор: @ananevsyu 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
36🔥16👍32
Закулисье фотостудии

Краткая история о моем походе в фотостудию ламоды

NB! Нельзя было фоткать, поэтому вот официальный кадр кусочка студии

📌📌📌📌📌

Сейчас сезон, в день привозят 2-3к товаров, а к вечеру они должны появиться в каталоге на сайте

☁️ Есть отдельные стенды для каждого вида съемок:

🩷предметная (аксессуары, обувь) - просто фоткают предметы
🩷обувь только на женской ноге
🩷одежда и предметы на модели
🩷детские вещи, шарфы, парео - тут под углом 45 градусов, чтобы можно было красиво разложить
🩷постельное белье - есть даже матрас
🩷маркетинговые - по каким-то поводам, выездные, готовятся сильно заранее

👻 Обитатели студии:

⏺️фотографы
⏺️модели
⏺️стилисты
⏺️визажисты
⏺️копирайтеры
⏺️ретушеры
⏺️менеджмент
⏺️продюсеры
⏺️креативная группа

С моделью работают стилист, визажист, фотограф. Стилисты уже знают, на какой модели какие вещи лучше смотрятся

🎉 Через какие этапы это все проходит:

1️⃣Приемка товара

Со складов приезжают много коробок с вещами, заранее считают, сколько их будет, какие категории, сколько нужно моделей и рейлов. Стандартные размеры - 40-42 для одежды, 36-37 для обуви

2️⃣Preparation

Вещи распаковываются, гладятся, раскладываются по категориям

3️⃣Mannequin

Съемка на манекене

4️⃣Copywriting

Копирайтеры готовят карточки товаров

5️⃣Model

Съемка на модели. Если что-то не сочетается, то у них есть своя «Нарния» с базовыми вещами

В конце дня отсматривают все снимки. Могут поревьюить и сами бренды

Вот такая получилась экскурсия)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1474👍1
Deciphering Data Architectures

Недавно прочитала книжку "Deciphering Data Architectures" - там всего 275 страниц. Не знаю, есть ли на русском, но на английском читается прям супер легко, где-то за недельку

Автор рассказывает про 6 типов архитектур:

🟠DWH
🟠Data Lake
🟠Modern DWH
🟠Data Fabric
🟠Data LakeHouse
🟠Data Mesh

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

Но меня больше всего удивило словосочетание "Data Fabric" - я его в нашем дата-пространстве ни разу не слышала. Кто-то его переводит как "фабрика данных", но у меня в голове осталась четкая ассоциация с "лоскутками данных". Т.е. разные доп. сервисы цепляются друг к дружке, как в лоскутном одеялке 😴

Книжка подойдет, если хотите в своей голове структурировать все эти подходы. Если лень читать так много, то есть статейка с кратким содержанием на полчаса:

https://habr.com/ru/articles/822669/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍308🔥6
Стата по моим офферам

Довольно многих волнует тема офферов, поэтому я тут поделюсь своей историей

🪐Разделим последний год на 2 hr-кампании, когда я осознанно хотела пособеситься. Каждая кампания длиной примерно 2 месяца:

1️⃣ лето: 02.07 - 06.09
2️⃣ зима: 23.12 - 12.02

➡️ Первая hr-кампания меня сильно прокачала в плане проведения собственных собесов и научила не быть слепым котеночком. Иногда я ставила даже 2 собеса в день, и моя энергия скатывалась куда-то в минус

➡️ А в зимний период я понимала, что может быть сложно начинать. Но мне сказали, что бюджеты все равно закладываются заранее, так что по сути в начале года ничего не мешает начинать найм

☕️ Итак, смотрим на графички. Не поленилась, прошлась по всей стате на hh и по всем перепискам в мессенджерах😁 Возьмем оранжевую линию за основу - это те вакансии, которые были мне интересны. Конверсия в оффер получилась 8/15 = 53% vs 1/21 = 4,7%. Т.е. зимняя hr-кампания отработала в 11 раз хуже летней. Возможно, с весны эта ситуация меняется? Но я не уверена

👩‍💻 Также есть качественная разница в уровне компаний. Если летом мне писали отсюда:
CIAN
Альфа
МТС
Magnit
Лента

То зимой конкретно все поменялось:
Quickly Search
WMT Group
ИЦ АЙ-ТЕКО
Datanomica
Trinity Monsters

🗓️ Средняя длительность hr-процесса получилась 10 дней летом vs 18 дней зимой (зааффектили нг каникулы). Включала компании, от которых я получила ОС по итогам собесов, и исключила выброс в виде яндекса - там 63 дня на 3 этапа 👍

Прокомменчу 3 других отказа зимой:
Касперский - двх на MS SQL🙂 и я была просто антиметчем их вакансии
Билайн - искал топового скалиста🙂
Авито - завалилась на алгосах с NP-полной задачей🙂

🎤 В итоге я пришла к таким выводам:
- хоть и количество просмотров увеличилось
- но очень много интеграторов, и общее качество компаний упало
- отклики на hh не работают (почти), в большинстве пишут сами и поэтому заинтересованы больше, чем если откликаться самому

Было страшно подавать заявление, понимая, что на рынке вот такая ситуация, выходить только через месяц, а у меня единственный оффер на руках

🎤 Есть кто сейчас в процессе поисков, какие ощущения?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3316🔥8
rows between

Когда я в декабре решала Advent of SQL, на 11 день было интересное задание - найти скользящее среднее по текущей строке с двумя предыдущими. Еще похожая штука применяется, когда нужно найти кумулятивную сумму

🚃 Выход - оконка! (но только в целях SQL)

Мы можем написать так:

avg(amount) over(order by column)


Но под капотом это так:

avg(amount) over(order by column rows between unbounded preceding and current row)


т.е. мы стартуем с первой строки и берем все до текущей

Всего есть несколько способов тюнинга:

--от первой до текущей
rows between unbounded preceding and current row

--от текущей до последней
rows between current row and unbounded following

--с конкретикой - сколько до и сколько после
--от предыдущей до текущей (2 строки)
rows between 1 preceding and current row

--от текущей до 1 следующей (2 строки)
rows between current row and 1 following

--от предыдущей до следующей (3 строки, еще текущая есть)
rows between 1 preceding and 1 following


В контексте задачи со скользящим средним просто нужно взять не 1, а 2 строки:

avg(amount) over(order by rows between 2 preceding and current row)


А для кумулятивной суммы нужно просто сделать так, потому что по дефолту она и будет кумулятивной

sum(amount) over(order by column)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍449
Пост-мит dbt meetup

Только что закончился dbt meetup

Что было:

1️⃣"Данные под контролем: Great Expectations в деле"

База про что такое data quality, какие критерии качества данных бывают, как добавить тест в GX, какой файлик с результатами получается, как выглядит таблица в UI DataHub (это такой дата каталог, чтобы пользователям было удобно смотреть бизнес-сущности, запущенные проверки и т.д.) Хотелось послушать на х3, скучно, в чате были вопросы круче, мне не понравилось :(

2️⃣"Так ли удобен dbt, как о нём рассказывают (костыли, ограничения, трудности)"

Про dbt на практике. Как переопределять макросы, добавлять хинты для dbt, как обращаться к системным таблицам, как возвращать значения из макросов, особенности логирования и работы с json, dbt unit testing (либа)

3️⃣"Современные практики локальной разработки и тестирования в dbt"

Про локальную разработку в dbt, Makefile (для удобного запуска команд), Zero Copy Clone (прод - read-only, запись в dev), dbt unit tests (в dbt core), эфемерные модели, фикстуры (один раз создаются, даже если нужны в нескольких тестах)

4️⃣"DuckDB на каждый день - меньше рутины, больше аналитики"

Про pandas, DuckDB overview, кейсы использования, как интегрировать с dbt, новые фичи в SQL (group by all, union by name и т.д.)

5️⃣"Данные на максималках: инкрементальные загрузки и partition replacing"

Про инкрементальные модели в dbt, SCD, WAP-паттерн (Write-Audit-Pattern, сначала записываем, потом проверяем и публикуем), метод замены партиций, продвинутая работа с изменениями в данных. Тут надо еще немного преисполниться
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍6