Привет! o/
Меня зовут Айгуль, и я работаю дата инженером в крупной компании👩💻
Кратко о себе:
🐦 окончила вуз по направлениям "Бизнес-информатика" и "Программная инженерия"
🐦 посвятила время фронтенд- и бэкенд-разработке, но основную часть – работе с данными
🐦 сейчас использую технологический стек: Spark, Hadoop, Hive, Python, Scala, Airflow, dbt, ClickHouse, Superset
В этом канале я буду:
🐤 рассказывать о своем пути: с чего начинала, чего достигла и как я оказалась в этой точке
🐤 рассказывать о настоящем: чем занимаюсь сейчас, какие курсы прохожу, какие проекты поделываю для души
🐤 рекомендовать подборки материалов и полезных ресурсов
🐤 постить интересные задачки и лайфхаки на тему данных (и не только!)
🐤 помогать прокачиваться быстрее, чем это делала я
В общем, впереди много всего крутого😎
На вас смотрит серьезное личико, потому что мы будем серьезно говорить о несерьезных вещах. Ну, или наоборот)
Добро пожаловать!🤗
Меня зовут Айгуль, и я работаю дата инженером в крупной компании👩💻
Кратко о себе:
🐦 окончила вуз по направлениям "Бизнес-информатика" и "Программная инженерия"
🐦 посвятила время фронтенд- и бэкенд-разработке, но основную часть – работе с данными
🐦 сейчас использую технологический стек: Spark, Hadoop, Hive, Python, Scala, Airflow, dbt, ClickHouse, Superset
В этом канале я буду:
🐤 рассказывать о своем пути: с чего начинала, чего достигла и как я оказалась в этой точке
🐤 рассказывать о настоящем: чем занимаюсь сейчас, какие курсы прохожу, какие проекты поделываю для души
🐤 рекомендовать подборки материалов и полезных ресурсов
🐤 постить интересные задачки и лайфхаки на тему данных (и не только!)
🐤 помогать прокачиваться быстрее, чем это делала я
В общем, впереди много всего крутого😎
На вас смотрит серьезное личико, потому что мы будем серьезно говорить о несерьезных вещах. Ну, или наоборот)
Добро пожаловать!🤗
1❤33👍11🔥7🤡1
Мой путь в сфере данных начался в 2019 году, когда я пошла на день открытых дверей в PwC - аудиторскую компанию из "большой четверки". Там я узнала про летние академии, зарегалась и прошла отбор. По результатам участия в этом двухнедельном мероприятии должны были выбрать особо активных студентов, чтобы потом пригласить на собес. Я не знаю, каким образом я туда попала, потому что вот эта аудиторская тематика, анализ деятельности компаний, проведение инвентаризаций - все было мимо меня))
Ну ладно, на собесе (вдруг!) спрашивали про sql и просили писать запросы. Я не готовилась, с базами данных перестала контактировать года 2 как до этого, предмет был, но я все равно не до конца его понимала и даже забыла, как правильно написать order by😂
Но меня взяли🥳 и спустя 4 месяца я пришла на предрабочие тренинги. Такие правила игры🤷♀️ больше рабочих рук требовалось в бизи сизон с января по март в пик отчетностей. Когда меня спросили: "В какую команду ты устраиваешься?", я вообще понятия не имела) Предположили, что буду сидеть на звонках, но фух, пронесло))
В общем, меня взяли в команду JET (Journal Entries Testing) - это когда аудиторы присылают транзакции компании, оборотно-сальдовую ведомость, свои критерии тестирования и требуют сделать, чтобы все разницы сошлись по нулям. Другой большой стрим - переоценка нереализованных курсовых разниц. Там своя тема с валютными балансами, и все пересчеты тоже должны были сходиться.
В этой команде я проработала почти 3 года, где через мои руки и голос прошли 14 коллег, которых я коучила и ревьюила, паралелльно сдавая экзы в маге👩💻 За это время я получила hands-on experience в sql (были те еще извращения) и научилась сохранять все рабочие файлики (потому что когда-нибудь оно всплывет). И, конечно, много всего другого.
По итогу получилось так, что я окончила магу и решила уходить. Параллельно работать было на 300% комфортно, но расти дальше тоже нужно. Потихонечку опрашивала покидавших нас коллег, куда они шли и куда могла бы стремиться я) Но по факту я чисто сходила на корпорат, получила повышение, забрала премию и ушла😂
Я и не предполагала, что уже через год поменяю еще одну работу и один город. Но об этом уже в следующей серии...
Ну ладно, на собесе (вдруг!) спрашивали про sql и просили писать запросы. Я не готовилась, с базами данных перестала контактировать года 2 как до этого, предмет был, но я все равно не до конца его понимала и даже забыла, как правильно написать order by😂
Но меня взяли🥳 и спустя 4 месяца я пришла на предрабочие тренинги. Такие правила игры🤷♀️ больше рабочих рук требовалось в бизи сизон с января по март в пик отчетностей. Когда меня спросили: "В какую команду ты устраиваешься?", я вообще понятия не имела) Предположили, что буду сидеть на звонках, но фух, пронесло))
В общем, меня взяли в команду JET (Journal Entries Testing) - это когда аудиторы присылают транзакции компании, оборотно-сальдовую ведомость, свои критерии тестирования и требуют сделать, чтобы все разницы сошлись по нулям. Другой большой стрим - переоценка нереализованных курсовых разниц. Там своя тема с валютными балансами, и все пересчеты тоже должны были сходиться.
В этой команде я проработала почти 3 года, где через мои руки и голос прошли 14 коллег, которых я коучила и ревьюила, паралелльно сдавая экзы в маге👩💻 За это время я получила hands-on experience в sql (были те еще извращения) и научилась сохранять все рабочие файлики (потому что когда-нибудь оно всплывет). И, конечно, много всего другого.
По итогу получилось так, что я окончила магу и решила уходить. Параллельно работать было на 300% комфортно, но расти дальше тоже нужно. Потихонечку опрашивала покидавших нас коллег, куда они шли и куда могла бы стремиться я) Но по факту я чисто сходила на корпорат, получила повышение, забрала премию и ушла😂
Я и не предполагала, что уже через год поменяю еще одну работу и один город. Но об этом уже в следующей серии...
🔥17⚡4👍1🏆1
Спустя 5 дней я уже сидела в новеньком офисе в роли SQL-аналитика в Совкомбанке. Собес проходил в два этапа - решить тест на дому за полчаса и пообщаться с руководителями.
В тесте было 2 задания: написать запросы и технически объяснить, что выдаст уже написанный один большой запрос. Задания были основаны на использовании case when, between, in, like, having, подзапросов, оконок, встроенных функций типо current_timestamp, datediff, на понимании видов джойнов и кругов Эйлера. Тут есть очень удобная штука для визуализации этих кругов SQL Visualizer, но сейчас доступна только под впн(
Я попала в отдел фрода, и у меня был доступ ко всем транзакциям физических лиц😎 Еженедельно собиралась статистика по тому, сколько у кого украли и скольких беззащитных бабулек мы смогли вразумить. Цель - проанализировать поведение мошенников и обычных людей и сделать так, чтобы мы со 100% точностью ловили первых и не беспокоили вторых. Но реальность неидеальна😔 Цепочка транзакций могла сильно разрастаться:
• Петя берет у нас кредит, выводит
• Вася берет кредит в другом банке
• Вася переводит деньги из другого банка к нам на свой счет
• Вася переводит эти деньги Пете
• Петя снимает деньги в кассе
(если что, это все отлавливается, так что не пытайтесь!)
Почти с самого начала я подметила токсичненькую атмосферу, и мне захотелось поменять отдел или компанию. Тут начался необычный этап поиска, о котором я расскажу в следующий раз.
🐝Всего я проработала 5 месяцев, и, хотя после испыталки все вдруг наладилось и меня даже не хотели отпускать, осадочек засел очень глубоко. Видимо, как есть стресс-интервью, так есть и стресс-испыталка. Все равно я многому научилась: писать 200-строчные запросы, триггеры и процедуры, разбираться в логике проведения банковских транзакций. Еще узнала важную истину: многие магазины блефуют, когда предлагают оплатить через сбп. За него не списывается комиссия за пользование pos-терминалом (куда мы прикладываем карточку) и не начисляется кешбэк, потому что под капотом это обычный перевод🐦
В тесте было 2 задания: написать запросы и технически объяснить, что выдаст уже написанный один большой запрос. Задания были основаны на использовании case when, between, in, like, having, подзапросов, оконок, встроенных функций типо current_timestamp, datediff, на понимании видов джойнов и кругов Эйлера. Тут есть очень удобная штука для визуализации этих кругов SQL Visualizer, но сейчас доступна только под впн(
Я попала в отдел фрода, и у меня был доступ ко всем транзакциям физических лиц😎 Еженедельно собиралась статистика по тому, сколько у кого украли и скольких беззащитных бабулек мы смогли вразумить. Цель - проанализировать поведение мошенников и обычных людей и сделать так, чтобы мы со 100% точностью ловили первых и не беспокоили вторых. Но реальность неидеальна😔 Цепочка транзакций могла сильно разрастаться:
• Петя берет у нас кредит, выводит
• Вася берет кредит в другом банке
• Вася переводит деньги из другого банка к нам на свой счет
• Вася переводит эти деньги Пете
• Петя снимает деньги в кассе
(если что, это все отлавливается, так что не пытайтесь!)
Почти с самого начала я подметила токсичненькую атмосферу, и мне захотелось поменять отдел или компанию. Тут начался необычный этап поиска, о котором я расскажу в следующий раз.
🐝Всего я проработала 5 месяцев, и, хотя после испыталки все вдруг наладилось и меня даже не хотели отпускать, осадочек засел очень глубоко. Видимо, как есть стресс-интервью, так есть и стресс-испыталка. Все равно я многому научилась: писать 200-строчные запросы, триггеры и процедуры, разбираться в логике проведения банковских транзакций. Еще узнала важную истину: многие магазины блефуют, когда предлагают оплатить через сбп. За него не списывается комиссия за пользование pos-терминалом (куда мы прикладываем карточку) и не начисляется кешбэк, потому что под капотом это обычный перевод🐦
❤7🔥7
Через пару месяцев (в декабре прошлого года) я начала искать работу. Так как уходить так быстро я не собиралась, то не могла осознать, чего же я хочу сейчас. В тот момент многие мои знакомые уехали за рубеж, и мне тоже захотелось попытать счастья🌝 Мне вкинули идею с линкедином, я создала страничку и начала откликаться на вакансии (добавиться можно тут).
Про свои поиски я рассказывала друзьям, и один из них предложил по рефералке закинуть меня в международную компанию и скинул список оф. вакансий на дата инженера (спасибо!). Я никогда не задумывалась о поиске на такую роль. И начала разбираться, чем отличается куча столь похожих профессий: Data Analyst, Analytics Engineer, Data Engineer, Data Scientist, ML Engineer. Позиции были технически скилловые и очень крутые, и в этот момент я задумалась: а может, я всегда хотела быть дата инженером?
Тогда я начала искать конкретно датаинженерные вакансии. Моей целью было получить хотя бы опыт собеседований на английском. Но я отправила около 100 откликов за пару месяцев и не получила ни одного приглашения☹️
Зато промониторила рынок.
И создала файлик "Things I Should Know" из тех требований, которые встречала чаще всего:
❄️ Snowflake
❄️ AWS
❄️ Azure
❄️ Spark
❄️ Hive
❄️ Hadoop
❄️ ETL/ELT
❄️ Kafka
❄️ Redshift
❄️ Kubernetes
❄️ Databricks
А потом я наткнулась на два очень полезных ресурса, которые круто изменили мою жизнь!⏩
Про свои поиски я рассказывала друзьям, и один из них предложил по рефералке закинуть меня в международную компанию и скинул список оф. вакансий на дата инженера (спасибо!). Я никогда не задумывалась о поиске на такую роль. И начала разбираться, чем отличается куча столь похожих профессий: Data Analyst, Analytics Engineer, Data Engineer, Data Scientist, ML Engineer. Позиции были технически скилловые и очень крутые, и в этот момент я задумалась: а может, я всегда хотела быть дата инженером?
Тогда я начала искать конкретно датаинженерные вакансии. Моей целью было получить хотя бы опыт собеседований на английском. Но я отправила около 100 откликов за пару месяцев и не получила ни одного приглашения☹️
Зато промониторила рынок.
И создала файлик "Things I Should Know" из тех требований, которые встречала чаще всего:
❄️ Snowflake
❄️ AWS
❄️ Azure
❄️ Spark
❄️ Hive
❄️ Hadoop
❄️ ETL/ELT
❄️ Kafka
❄️ Redshift
❄️ Kubernetes
❄️ Databricks
А потом я наткнулась на два очень полезных ресурса, которые круто изменили мою жизнь!⏩
🔥16👍1
Что там было?
• всего шесть недель
• каждую неделю:
• пул видосов по теме (штук 10-15)
• онлайн Q&A сессия (в записи тоже)
• домашка, которую проверяют и оценивают
• чатик, где можно попросить помощи
• в конце нужно все применить и сделать проект
Что по инструментам?
Postgres, Spark, Prefect, Kafka, Docker, dbt, BigQuery, Terraform, Google Cloud (который я +- заменила на Yandex Cloud) - просто то, что нужно
В предыдущих потоках вместо Prefect использовался Airflow, поэтому можно дополнительно поизучать по видосам.
В целом, программа заняла 1,5-2 месяца. К сожалению, во время зумкампа я нашла работу и не успела завершить проект🤭 Но об этом далее)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🔥6👍2
Что нужно было знать?
- разбираться в концепциях хранилищ данных
- знать питон или скалу
- уметь написать витринку на спарке
- разбираться в спарк конфигах
В доке есть огромная табличка. Естественно, не все параметры нужны для ежедневной настройки, так что, если вам интересно, я подготовлю список самых часто используемых.
https://news.1rj.ru/str/rockyourdata
https://news.1rj.ru/str/dataengineering_chat_ru
https://news.1rj.ru/str/datalearn_community
https://news.1rj.ru/str/hadoopusers
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤3👍2⚡1💯1
Кстати, зарплатные вилки можно смотреть тут:
https://getmatch.ru/salaries - российский рынок ИТ-направлений
https://www.reddit.com/r/dataengineering/comments/188grde/quarterly_salary_discussion_dec_2023/ - а тут дискуссии на мировом рынке
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤1❤🔥1
Сейчас я работаю мидл дата инженером в Сбере в команде очень крутых коллег, всем респект!🔥
🧑🎓 Первые пару недель было реально тяжело влиться в процессы, т.к. казалось, что от меня ожидают гораздо большего, чем я могу дать. Каждый день я была в состоянии «ничего не понятно😩 ». Поэтому я после и до работы смотрела нужные видосики с karpov courses и подтягивала теоретическую базу. Видосами со мной поделился один хороший человек, поэтому старайтесь наращивать базу полезных контактов)
📺 Что мы делаем?
У нас есть несколько уровней организации: команда -> кластер -> трайб. И вот наш трайб - про маркетинг. Мои коллеги придумывают рекламу, а мы потом смотрим, как она работает.
💠 Что я делаю?
Кручу таблички, большие таблички на связке Hadoop+Spark в Jupyter Notebook👩💻
Делаю витринки с данными, которые потом мои коллеги-аналитики используют для бизнес-инсайтов✨
Строю пайплайны обработки на dbt+Airflow🐍
По ходу дела пришлось разобраться в Scala, Clickhouse и Superset, чтобы оптимизировать код, удобно складывать результаты расчетов и строить красивые чартики📊
А недавно я ходила на сходку питонистов, где со мной поделились полезной инфой по митапам (офлайн и онлайн):
https://news.1rj.ru/str/ict2go
https://news.1rj.ru/str/ITMeeting
https://news.1rj.ru/str/meetupochnaya
У нас есть несколько уровней организации: команда -> кластер -> трайб. И вот наш трайб - про маркетинг. Мои коллеги придумывают рекламу, а мы потом смотрим, как она работает.
Кручу таблички, большие таблички на связке Hadoop+Spark в Jupyter Notebook
Делаю витринки с данными, которые потом мои коллеги-аналитики используют для бизнес-инсайтов✨
Строю пайплайны обработки на dbt+Airflow
По ходу дела пришлось разобраться в Scala, Clickhouse и Superset, чтобы оптимизировать код, удобно складывать результаты расчетов и строить красивые чартики
А недавно я ходила на сходку питонистов, где со мной поделились полезной инфой по митапам (офлайн и онлайн):
https://news.1rj.ru/str/ict2go
https://news.1rj.ru/str/ITMeeting
https://news.1rj.ru/str/meetupochnaya
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥8❤🔥2💯1
Конечно, никто не будет копаться в каждом проекте, но уже за пару минут можно узнать, какие инструменты вы используете и как давно этим занимаетесь. А в пет-проектах можно потрогать новые тулзы, чтобы потом добавить эти скиллы в резюме и рассказывать про них на собесах
1. Начала с парсинга html-страниц с историей игр
2. Потом узнала, что есть апишка, и начала складывать данные в json-ы
3. Позже настроила загрузку сразу в бд
4. Потом захотелось искать игры по определенным критериям и даже создать свой язык запросов
Чтобы делиться инсайтами с другими игроками. В сообществе были программисты и математики, которые предлагали разные алгоритмы расчета, от реализации которых я кайфовала.
Я настолько заинтересовалась в предметной области, что изучила новые штуки: SQLAlchemy (ORM для питона), Neo4j (графовая бд), как читать данные из api гитхаба или как деплоить сайты в GitHub Pages. Сверху можно докрутить еще Airflow, BI для полноты картины. Проект доступен тут.
Kaggle
UK
EU
Azure
Bigquery
Тематические
Песни
Разное
Поиск по датасетам
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14💯5👻3❤2
Работа дата инженером – одна из путевок в жизнь
🔍 Когда я искала в первый раз, было супер сложно. Но как только я поставила в hh «Дата инженер | Data Engineer», сразу стали прилетать приглашения. Кстати, полезно переводить название позиции, т.к. hr могут искать на разных языках.
Я думала, вот поставлю новую должность, тыкну «не ищу работу», и все посмотрят: «Ага, только устроилась, писать не будем». Но резюме всплыло наверх, и меня начали хантить уже через 3 дня после трудоустройства😁 Естественно, я всем отказывала, какой смысл собеситься на первой неделе работы?🙂 Но все это говорит о востребованности профессии❕
📝 Вот небольшой список компаний, которые набирают дата инженеров:
- Билайн
- X5 Group
- Центр финансовых технологий
- Лига цифровой экономики
- ITFB Group
- Иннотех
- Mediascope
На некоторые собесы я ходила, и из интересного спрашивали про having, lag/lead, внешние ключи, внешние таблицы, оптимизацию и план запросов, CDC (Change Data Capture), SSIS пакеты.
🍓 А сегодня прилетела вакансия из Wildberries вот с такими требованиями:
Задачи:
• Поддержка CI/CD-пайплайнов
• Настройка/поддержка кластера Clickhouse
• Организация ETL-процессов: маршрутизация потоков данных, обеспечение их качества и доступности
• Оптимизация сложных аналитических запросов в Clickhouse
• Бизнес-логика на Golang или Python
Стек:
• Python/Go (на уровне конкретных практических задач)
• СУБД Clickhouse, Postgres
• Источники данных: Kafka, NATS, OLAP-кубы, API
• k8s
Кому дать контакты?😉
#собес
Я думала, вот поставлю новую должность, тыкну «не ищу работу», и все посмотрят: «Ага, только устроилась, писать не будем». Но резюме всплыло наверх, и меня начали хантить уже через 3 дня после трудоустройства
- Билайн
- X5 Group
- Центр финансовых технологий
- Лига цифровой экономики
- ITFB Group
- Иннотех
- Mediascope
На некоторые собесы я ходила, и из интересного спрашивали про having, lag/lead, внешние ключи, внешние таблицы, оптимизацию и план запросов, CDC (Change Data Capture), SSIS пакеты.
Задачи:
• Поддержка CI/CD-пайплайнов
• Настройка/поддержка кластера Clickhouse
• Организация ETL-процессов: маршрутизация потоков данных, обеспечение их качества и доступности
• Оптимизация сложных аналитических запросов в Clickhouse
• Бизнес-логика на Golang или Python
Стек:
• Python/Go (на уровне конкретных практических задач)
• СУБД Clickhouse, Postgres
• Источники данных: Kafka, NATS, OLAP-кубы, API
• k8s
Кому дать контакты?
#собес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤2💯1
Время задачек!🎉
Задача 1.
Эта задача на аналитика, она легкая, но мне понравилась.
Даны таблицы clients и documents.
В таблице с документами есть версионность, где '9999-12-31' означает, что версия действующая.
Нужно вывести id клиентов, у которых отсутствует актуальная версия.
Потестить можно тут.
Пишите свои решения в комментах!
Задача 1.
Эта задача на аналитика, она легкая, но мне понравилась.
Даны таблицы clients и documents.
В таблице с документами есть версионность, где '9999-12-31' означает, что версия действующая.
Нужно вывести id клиентов, у которых отсутствует актуальная версия.
Потестить можно тут.
Пишите свои решения в комментах!
create table clients (
client_id int,
client_fio varchar(255)
);
insert into clients values
(1, 'Иванов И.И.'),
(2, 'Петров П.П.'),
(3, 'Сидоров С.С.');
create table documents (
client_id int,
valid_from date,
valid_to date,
document_no varchar(9),
income int
);
insert into documents values
(1, '2020-01-01', '2020-12-31', '111111-11', 100000),
(1, '2021-01-01', '2022-06-01', '111111-11', 120000),
(1, '2022-06-01', '9999-12-31', '333333-33', 120000),
(2, '2001-01-01', '2023-01-01', '555555-55', 50000);
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
Задача 2.
Есть события, но часть из них доезжает позже других.
Нужно вывести такие события (5 и 6, которые вклинились).
Есть события, но часть из них доезжает позже других.
Нужно вывести такие события (5 и 6, которые вклинились).
create table logs (
id int,
dt date
);
insert into logs values
(1, '2023-12-01'),
(2, '2023-12-01'),
(5, '2023-12-02'),
(6, '2023-12-03'),
(3, '2023-12-06'),
(4, '2023-12-08');
🔥5
1) JOIN
Один подзапрос + один джойн
SELECT c.client_id
FROM clients c
LEFT JOIN (
SELECT DISTINCT client_id
FROM documents
WHERE valid_to = '9999-12-31'
) t1
ON c.client_id = t1.client_id
WHERE t1.client_id IS NULL
2) IN
Идём от обратного и исключаем
SELECT client_id
FROM clients
WHERE client_id NOT IN (
SELECT client_id
FROM documents
WHERE valid_to = '9999-12-31'
)
3) NOT EXISTS
Здесь можно оптимизировать, используя top/limit и константу.
Как это работает?
Если условие подзапроса соблюдается, мы берем просто цифру 1 вместо полей (не нужно лишний раз их вытаскивать) + одной строки нам достаточно, чтобы понять, что данные есть или их нет.
SELECT client_id
FROM clients c
WHERE NOT EXISTS (
SELECT 1
FROM documents d
WHERE c.client_id = d.client_id
AND valid_to = '9999-12-31'
LIMIT 1
)
Также важно внимательно читать задание и выводить то, что требуется (только id клиентов).
Решившим ребятам респект, остальные подключайтесь тоже!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2🔥2
Один из вариантов был таким:
SELECT DISTINCT t1.*
FROM logs t1
JOIN logs t2
ON t1.id > t2.id AND t1.dt < t2.dt;
HashAggregate (cost=92291..92294)
Group Key: t1.id, t1.dt
-> Nested Loop (cost=0..89454)
Join Filter
-> Seq Scan on logs t1 (cost=0..33)
-> Materialize
-> Seq Scan on logs t2
Здесь очень дорогой Nested Loop Join, который увеличил косты с 33 до 90к.
Используем lag/lead и сравниваем разницу айдишников с предыдущим и последующим:
WITH diffs AS (
SELECT
*,
id - LAG(id) OVER(ORDER BY dt) prev_diff,
id - LEAD(id) OVER(ORDER BY dt) next_diff
FROM logs
)
SELECT id, dt
FROM diffs
WHERE prev_diff > 1 or next_diff > 1;
План запроса:
Subquery Scan on diffs (cost=159..249)
Filter
-> WindowAgg
-> Sort
Sort Key: logs.dt
-> Seq Scan on logs
В первом случае примерные косты были 90к, во втором 250 => в 370 раз меньше.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17
Помогите Санта Клаусу составить список, какие игрушки и в каких странах нужно будет докупить до нового года!
letters (id, date, child_id, toy_id)
children (id, name, country_id)
country (id, name)
toy (id, name, category)
И всех с наступающим!
Добра, вдохновения, мотивации, удачи, сил и прекрасного настроения!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🎉2👍1 1
Итак, вариант от спасителя:
SELECT t.name, c.name, COUNT(*) AS count_toys
FROM country AS c
JOIN children AS ch
ON ch.country_id = c.id
JOIN letters as l
ON l.child_id = ch.id
JOIN toy as t
ON t.id = l.toy_id
WHERE l.date > '2023-01-01'
GROUP BY t.name, c.name
Обращаю внимание на один момент - фильтр на дату можно перенести повыше:
JOIN letters as l
ON l.child_id = ch.id
AND l.date > '2023-01-01'
При работе с базами данных может не быть разницы, какой из способов использовать.
Но при работе со спарком фильтр до джойнов уменьшит количество впустую обрабатываемых строк
Please open Telegram to view this post
VIEW IN TELEGRAM
Написала свою первую статью на хабре про то, как я анализирую свои доходы и расходы. Может, и вам будет полезно
https://habr.com/ru/articles/784412/
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Агрегатор личных финансов со всех счетов
Всем привет! Примерно год назад мне захотелось проанализировать доходы и расходы со всех своих банковских карт, количество которых начало разрастаться. После ресерча существующих приложений я поняла,...
🔥16🤡3❤1🌚1💯1🤝1