LEFT JOIN – Telegram
LEFT JOIN
45K subscribers
944 photos
28 videos
6 files
1.2K links
Понятно про анализ данных, технологии, нейросети и, конечно, SQL.

Услуги — leftjoin.ru
Курсы по аналитике — https://stepik.org/users/431992492

Автор — @valiotti
Реклама — @valiotti

Перечень РКН: https://tapthe.link/PpkTHavwS
Download Telegram
Как быть вежливым и не тратить на это время
Опытные (и не очень) специалисты в области данных часто получают письма рекрутеров, в которых они не заинтересованы, ведь бóльшую часть времени люди не ищут новую работу. В итоге, очередное такое неактуальное письмо летит в архив еще до того как его открывают, а новые письма продолжают приходить.
Конечно, постоянно поступающие предложения пройти собеседование — это не то что бы серьезная проблема. Однако, почему бы не попробовать автоматизировать её решение?

Зачем отвечать на эти письма (а не игнорировать их)
💁‍♂️ Это вежливо;
📨 Это спасает почтовый ящик от появления последующих писем-напоминаний;
👬 Это помогает поддерживать теплые отношения с рекрутерами и может здорово выручить вас в будущем.

Как найти и быстро ответить на эти письма
Мэтт Билью придумал как частично автоматизировать этот процесс и описал его в короткой статье блога. Начать нужно с фильтрации входящих писем на предмет предложения о работе, а затем сформировать отдельную папку. К сожалению, эта часть решения не автоматизирована, хотя, возможно, существует более элегантное решение. Когда появится свободное время, просмотреть этот список непрочитанных писем и отправить ответ.
После этого отправку ответов автоматически выполняет скрипт. Основа этого скрипта – языковая модель OpenAI GPT-3. Самым легким решением было бы создание готового шаблона для копипаста, но легкая персонализация никому не повредит и поможет сохранить отношения с рекрутером. Автоматизацию задачи извлечения имени рекрутера и названия компании из электронного письма Мэтт выложил в свой GitHub.

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

Делитесь в комментариях, какими автоматизированными решениями вы пользуетесь или о каких уже слышали?
#leftjoin_ai
🔥1682👍2🤔2
Облачные провайдеры, на которые вы мигрировали?

Многие масштабные облачные сервисы стали недоступны для российских компаний, например, MS Azure, GCP, AWS и другие. Очевидно, что многие отказались от западного облака и перешли либо на on-premise, либо на российские аналоги. Нам стало интересно составить список таких альтернатив и поделиться с вами, поэтому будем благодарны помощи!

Поделитесь в комментариях, пришлось ли вам сейчас переезжать с вашего облачного сервиса на альтернативный? С какого на какой? Раскажите про свой опыт и проблемы, с которыми столкнулись – давайте поможем друг другу не наступать на одни и те же грабли 🤦‍♂️
👍13🔥7
Оконные и аналитические функции в SQL: Начало
Врываемся с серией постов про оконные функции в SQL. Оконные функции — это классная опция в некоторых движках баз данных, которая с легкостью помогает решать ряд аналитических задач без написания сложных SQL-конструкций.

Разберемся подробнее
Когда мы пишем запрос для получения агрегатов, то строки обрабатываются «единым куском», для которого вычисляется агрегат.
А при использовании оконных функций, запрос делится на “окна” и уже для каждой из отдельных частей считаются нужные агрегаты. ​​Важно помнить: движок посчитает в рамках окна только те агрегаты, которые используют оконное выражение, а не все подряд в запросе.
Окно определяется с помощью обязательной инструкции OVER():

SELECT функция (столбец для вычислений)
OVER (
[PARTITION BY столбец для формирования окна]
[ORDER BY столбец для сортировки]
[ROWS или RANGE выражение для ограничения строк в пределах группы]
)

Для лучшего понимания работы оконных функций стоит вспомнить о порядке выполнения запроса: так как оконные функции выполняются в блоке SELECT, то все вычисления в них происходят после возможной фильтрации и/или группировки. То есть, если в таблице с домашними животными указать WHERE animal = ‘cat’, то оконные функции будут оперировать только котиками, а попугаи и пёсики в их расчёты не попадут.

Интересная особенность
Можно не использовать опциональные конструкции и получить аналогичный обыкновенной агрегации результат.
Сравните:

SELECT SUM(amount) OVER() AS total_amount
FROM A


VS

SELECT SUM(amount) AS total_amount
FROM A


Оба запроса выдадут один и тот же результат. Но в первом случае мы можем дополнительно сразу выбрать другие поля, не участвующие в агрегации, в то время как второй вариант (классическая агрегация) такого не допускает.

Итак, в квадратных скобках обозначены необязательные параметры. Однако, вся суть в том, чтобы указать их для получения иного, разбитого по “окнам” результата.

Поговорим про них отдельно?
#leftjoin_sql
👍12163
👍3
LEFT JOIN pinned a photo
🇨🇾 Cyprus Data 🇨🇾
Недавно я переехал на Кипр, освоился и выстроил все рутинные процессы на новом месте и теперь, накопив много сил и желания общаться, хочу запустить сообщество 🇨🇾 Cyprus Data.

🎉 Что будет в этом канале?
В канале я планирую делиться своими наблюдениями о Кипре с точки зрения данных, анонсировать интересные события и конференции, а также, возможно, организовывать митапы с заинтересованными профессионалами в области данных.

🙋 А где общаться?
Любое комьюнити предполагает площадку для открытого общения его участников, поэтому я создал отдельный чат Cyprus Data Chat для знакомств и обсуждения всего, что связано с Кипром и аналитикой данных.
Если вы на Кипре и вам это интересно – подписывайтесь на канал, если ваши друзья на Кипре – присылайте им это сообщение.

Давайте соберем дружное комьюнити, которое сможет приносить пользу каждому его участнику!
👍226🤨2
Отличный пост на Medium о том, как загрузить всю историю Эфира в S3.
Пост, кстати, написал Антон Брызгалов, с которым мы имеем честь работать вместе на одном из проектов (Антон, привет! 👋).
Антон — прекрасный дата инженер и эксперт, поэтому смело хочу порекомендовать его канал How to DWH with Python. Антон публикует заметки и cheat sheets на тему инжиниринга данных и делится последними новостями этой сферы.
Must see для любого начинающего и опытного data инженера! 😎
🔥22👍2
🎀 Гендерное неравенство и визуализация данных 🚙
При визуализации данных очень большой акцент ставится на цветах для отображения разных исследуемых групп. Но, когда речь заходит о гендерной тематике, по шаблону используется дуэт «розовый + голубой». В эпоху глобального переосмысления гендерных стереотипов, дизайнеры ведущих новостных изданий решили пойти наперекор устоявшимся традициям в визуализации и дать данным больше красок и свободы.
Дизайнер и блоггер из Берлина Лиза Шарлотта Мут исследовала тенденцию и поделилась в своем блоге идеями о том, какие подходы практикуются мировыми СМИ и как они учат читателя задумываться о гендерных стереотипах в культуре и мышлении.

Мы перевели её статью для нашего блога LEFTJOIN.RU и хотим поделиться её идеями и выводами с вами!
😍25👍17🤡14🤯7
Чел сделал тул для Linux для написания SQL запросов к .csv-файлам. Уже 9.3К звездочек на гитхабе
👍44😍10🏆2
Параметры оконных функций: PARTITION BY и ORDER BY
Этот пост – продолжение серии постов про оконные функции (предыдущий пост был введением). Сегодня мы обсудим два необязательных параметра оконки: PARTITION BY и ORDER BY.

Разбираемся подробнее
Оба параметра помогают нам точнее определить порядок и алгоритм работы запроса: один отвечает за группировку данных, а другой – за сортировку.

Предложение PARTITION BY определяет столбец, по которому будет производиться разбиение на окна. Суть в том, чтобы разбить столбец на разные категории и посчитать некоторые метрики в рамках полученных групп (например, если вам нужно сравнить вес котика с остальными котиками, но не с попугаями или песиками).

Вместе с PARTITION BY может применяться предложение ORDER BY, которое определяет порядок сортировки внутри окна. Порядок сортировки очень важен, ведь оконная функция будет обрабатывать данные согласно этому порядку (например, чтобы сравнить, насколько котик тяжелее предыдущего по весу, нужно их всех отсортировать внутри окна). Если вы не используете предложение PARTITION BY, а только ORDER BY, то окном будет весь набор данных.

Давайте вместе потренируемся в написании запросов с использованием ORDER BY и PARTITION BY. Итак, возьмем таблицу animals (на картинке), которая содержит вид животного, его имя, вес и возраст, и попробуем решить следующую задачу: определить насколько процентов каждое животное старше среднего по группе.

Пишите в комментариях, как должен выглядеть запрос, а мы опубликуем правильный ответ завтра!
#leftjoin_sql
🔥38👍9
Время правильных ответов
Задача: определить насколько процентов каждое животное старше среднего по группе.

Решение задачи:

SELECT kind,
name,
weight,
age,
ROUND((age / AVG(age) OVER (PARTITION BY kind) - 1) * 100) AS age_ratio
FROM animals

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

В комментах совершенно верные ответы, браво!
P.S. Правильных ответов может быть несколько, мы привели один из вариантов.
👍33👏4
Привет! Снова на связи DataHeroes и мы (наконец-то) начинаем второй сезон! 👾 Первый выпуск будет о как-никогда-актуальной теме — об изменениях на рынке аналитики после старта этого безумия в феврале.

Не секрет, что мы все находимся в общемировом кризисе и каждому нужно подстраиваться под новые реалии. О том, как это сделать и что вообще случилось на рынке расскажут наши спикеры. Вы узнаете:
- что происходит с наймом и вакансиями
- как изменились зарплаты аналитиков
- что происходит на рынке за рубежом
- почему джунам сейчас хуже всех и что им делать в новых реалиях

Надеемся выпуск будет для вас полезен, а кризис пройдет для каждого с наименьшими потерями! 🚀

СПИКЕРЫ: Кира Кузьменко и Оксана Прутьянова (NEWHR), Наталья Данина (hh.ru), Денис Кравченко (Exness)

Слушайте подкаст на платформах: Spotify, Anchor, Apple Podcasts, Google, Yandex, Mave, Castbox, Overcast, Telegram (↓)

#подкаст #DataHeroes
🔥204👍3
Audio
20👍3
🙋 IT-конференция Linq 🎯
Самая классная возможность в любом комьюнити – это делиться собственными знаниями и опытом, дискутировать, искать открытые вопросы и новые возможности. Поэтому я стараюсь как можно чаще участвовать в конверенциях: как минимум – слушателем, как максимум – спикером.

Через несколько недель я буду выступать с темой «Text Generation Tasks and Modern Data Stack» в блоке ML/AI на одной из масштабных IT-конференций на Кипре – Linq. Конференция проводится на анлийском языке и среди спикеров (помимо меня) будут Валерий Бабушкин (blockchain.com), Elena Ehrlich (Amazon Web), Mariusz Gasiewski (Google)и многие другие специалисты.

В целом, помимо блока ML/AI, будут выспупления других актуальных IT-сфер: Metaverse, Relocate IT, PR & Comms in Tech, Gamedev, Invest in Tech.

Если вам это интересно, то расписание, билеты и список спикеров есть на сайте конференции.

А еще, специально для подписчиков LEFTJOIN организаторы сделали промокод 10% на билеты ValiottixLinq.
🔥15👍4
Фоллоу-ап к нашему последнему выпуску подкаста DataHeroes: супер-информативные карточки от Ромы по вакансиям и зарплатам для аналитиков с HH.ru. Идеальное дополнение к расуждениям о том, что вообще творится на рынке вакансий (рекомендую листать параллельно с выпуском!).
🔥8
Forwarded from Reveal the Data
📊 Вакансии аналитиков за полгода
Обновили карточки по зарплатам и вакансиям аналитиков на HH за последние полгода и добавили отдельные карточки «Москва + Питер». В среднем по сравнению с предыдущим годом количество вакансий снизилось на 12%, а зарплата выросла на 13%. Больше всего по количеству вакансий просели области BI и Data Science, а меньше всего изменилась область системного/бизнес анализа и инжиниринга данных.
@revealthedata | @leftjoin
🏆20🔥5🤡5
Оконные функции LAG и LEAD
В предыдущем посте мы разобрались с параметрами оконных функций, а теперь перейдем к конкретным примерам аналитических функций.

Функции смещения
Эти функции позволяют обращаться к предыдущим или следующим значениям окна.

Функция LAG обращается к данным из предыдущей строки окна, а LEAD – к данным из следующей строки. Эти функции нужны для того, чтобы, например, сравнить текущее значение строки с предыдущим или следующим. Каждая функция имеет три параметра:
- столбец, значение которого необходимо вернуть,
- количество строк для смещения (по умолчанию 1),
- значение, которое необходимо вернуть, если после смещения возвращается значение NULL (к примеру, когда мы ищем предыдущее значение для первой строки окна).

Давайте посмотрим, на примере таблички orders, как работает функция LEAD. Например, если мы хотим увидеть текущую и следующую дату покупки, то запрос будет выглядеть так:

SELECT user_id,
order_date,
LEAD(order_date) OVER (PARTITION BY user_id ORDER BY order_date) as next_order_date,
receipt_no,
amount
FROM orders


Результат запроса в первом комментарии под постом 👇

Теперь попробуйте написать запрос к табличке orders, который посчитает насколько каждая покупка каждого пользователя больше или меньше предыдущей (если предыдущей покупки не было, возьмите текущую суммку покупки и покажите 0 как разницу).

#leftjoin_sql
🔥17👍112