LEFT JOIN
50.2K subscribers
913 photos
27 videos
6 files
1.14K links
Понятно про анализ данных, технологии, нейросети и, конечно, SQL.

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

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

Перечень РКН: https://tapthe.link/PpkTHavwS
Download Telegram
Оконные функции 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
Задача:
Написать запрос к табличке orders, который посчитает насколько каждая покупка больше или меньше предыдущей (если предыдущей покупки не было, возьмите текущую суммку покупки и покажите 0 как разницу).

Решение:

SELECT user_id,
order_date,
receipt_no,
amount,
amount - (LAG(amount, 1, amount) OVER (PARTITION BY user_id ORDER BY order_date)) as diff
FROM orders
👍42🔥131
На связи DataHeroes и сегодня мы поступаем в зарубежные ВУЗы! 👩‍🎓

Наши спикеры - те, кто уже прошли путь от подготовки документов до защиты диплома. Они поделятся своим опытом, дадут рекомендации по поступлению и ответят на важные вопросы:
- Можно ли поступить на магистра, если только заканчиваешь бакалавриат в России?
- Как проходят экзамены в зарубежном ВУЗе?
- Что даст диплом в дальнейшей карьере?
- В чем отличия обучения в иностранном ВУЗе и ВУЗе в РФ?


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

СПИКЕРЫ: Юрий Душин (The University of Edinburgh ), Антон Охотников (University of Southampton), Илья Шилов (Paris Saclay, establishment Paris Sud)

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

#DataHeroes #подкаст
🔥30👍1713
Audio
🔥11
💁‍♂️ Ассистент по созданию кода
Я уже рассказывал вам про инструмент, который объясняет код и может быть полезен тем, кто вынужден разбираться в тысячах строк чужого кода. Сегодня я наткнулся на сервис CodeSquire, который может еще сильнее помочь тем, кто пишет много кода на постояннной основе, или тем, кто лишь нарабатывает этот навык.

Что может CodeSqire?
◾️ Превращать комментарии в строки кода, выполняющие нужные действия, например:

# create a bar chart that shows number of survived and not survived broken down by Pclass using plotly
⬇️
fig = px.bar(a, x='Pclass', y='PassengerId', color='Survived', text='PassengerId', color_discrete_map={0: '#FF0000', 1: '#0000FF'}) fig.show()

◾️ Создавать SQL-запросы по кратким текстовым вводным, например:

-- get top 10 most popular male names
⬇️
SELECT state, gender, year, name, number FROM bigquery-public-data.usa_names.usa_1910_2013 WHERE state = 'FL' AND gender = ‘M' ORDER BY number DESC LIMIT 10;

◾️ Объяснять код, который вы (или кто-то другой) написали
◾️ Разделять код на шаги и создавать комментарии, поясняющие логику алгоритма
◾️ Оптимизировать уже написанный код

Сервис доступен по подписке на месяц и на год, а также существует опция бесплатного 30-дневного пробного периода.

Оставляйте 🔥, если думаете, что CodeSquire – полезный сервис, и 🤨, если думаете, что проще будет работать без него.
🔥27🤨22🤯7👍1
Ограничение оконных функций ROWS: Часть 1
Сегодня обсудим еще один важный параметр оконной функции: ROWS.

Разбираемся подробнее
Параметр ROWS позволяет ограничить строки в окне, указывая фиксированное количество строк, предшествующих или следующих за текущей.
В выражении для ограничения строк ROWS также можно использовать следующие ключевые слова:
▪️ UNBOUNDED PRECEDING — указывает, что окно начинается с первой строки группы.
▪️ UNBOUNDED FOLLOWING – с помощью данной инструкции можно указать, что окно заканчивается на последней строке группы.
▪️ CURRENT ROW – инструкция указывает, что окно начинается или заканчивается на текущей строке.
▪️ BETWEEN «граница окна» AND «граница окна» — указывает нижнюю и верхнюю границу окна.
▪️ «Значение» PRECEDING – определяет число строк перед текущей строкой.
▪️ «Значение» FOLLOWING — определяет число строк после текущей строки.

Давайте разберем на примерах, как можно использовать перечисленные ключевые слова и как именно работают оконные функции. Вернемся к ранее использованной таблице animals.

ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING
Для начала попробуем определить средний возраст двух питомцев (текущего и следующего) одного вида, отсортированных по возрастанию веса. Для этого, как вы, наверное, уже догадались, мы будем использовать ключевые слова BETWEEN, CURRENT ROW и FOLLOWING.

SELECT kind,
name,
weight,
age,
AVG(age) OVER (PARTITION BY kind ORDER BY weight
ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)
FROM animals

#leftjoin_sql
👍25🔥7👏6🎉1
Ограничение оконных функций ROWS: Часть 2
Теперь посмотрим, как работают UNBOUNDED PRECEDING и UNBOUNDED FOLLOWING.

Перейдем сразу к практике: UNBOUNDED PRECEDING
Давайте посчитаем средний возраст питомцев внутри одного вида, взяв окно с первого питомца до текущего по списку, отсортированному по возрастанию весов животных. В этом запросе нам помогут ключевые слова BETWEEN, CURRENT ROW, а также UNBOUNDED PRECEDING.

SELECT kind,
name,
weight,
age,
AVG(age) OVER (PARTITION BY kind ORDER BY weight
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM animals


А что насчет UNBOUNDED FOLLOWING?

UNBOUNDED FOLLOWING работает примерно так же, как UNBOUNDED PRECEDING. Посчитаем средний возраст питомцев внутри одного вида, взяв окно с текущего питомца до последнего по отсортированному по возрастанию весов животных списку. Для этого нам нужно использовать ключевые слова BETWEEN, CURRENT ROW (с которыми мы уже отлично подружились), а также UNBOUNDED FOLLOWING.

SELECT kind,
name,
weight,
age,
AVG(age) OVER (PARTITION BY kind ORDER BY weight
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
FROM animals

Пишите в комментариях, какую оконную функцию разобрать следующей, и оставляйте реакцию, если вам нравится цикл постов про SQL!
#leftjoin_sql
🔥28👍75🏆5🤯1
Как считаете стоит ли соединить все посты про оконные функции в статью для leftjoin.ru?
Anonymous Poll
77%
Да, конечно!
11%
Нет, удобнее читать в телеграм-канале
8%
Мне все равно
4%
Посмотреть результаты
Text Generation Tasks and Modern Data – Nikolay Valiotti.pdf
3.2 MB
🤖 Задачи генерации текста и современный стек данных 💻
Друзья, сегодня я выступал на конференции Linq в секции ML/AI и рассказывал об интересных рабочих кейсах (и не только). Если вы меня слушали и хотите изучить презентацию внимательнее или если вас не было, но вам интересно узнать, о чем я рассказывал – прикладываю файл презентации.
Задавайте вопросы в комментариях, по возможности всем отвечу!

Всем организаторам и участникам большое спасибо, было классно!
👏19❤‍🔥8👍6
🎉Ура! Вас уже 20 тысяч! 🎉
Хочу искренне поблагодарить новых подписчиков за интерес к каналу LEFT JOIN, а “старичков” – за многолетнюю поддержку и активность. Вы безумно мотивируете меня и мою команду ресерчить новости мира аналитики, рассказывать вам все самое лучшее и полезное и записывать подкасты с теми, чей опыт в аналитике достоин быть услышанным!
Если вы с нами совсем недавно, то у нас для вас есть пост-знакомство со всей важной информацией о канале. А еще, мы всегда открыты к предложениям, поэтому пишите в комментариях, какие темы и направления вы бы хотели чаще видеть в LEFT JOIN.

Спасибо, что вы с нами! ❤️
94🎉39👍8🍌7🏆5
🚨 dbt теперь поддерживает трансформации с помощью Python
На этой неделе dbt выпустили версию 1.3 ядра dbt, которая включает поддержку моделей Python🐍.
Эта функция теперь доступна как в dbt Core, так и в dbt Cloud для пользователей на поддерживаемых платформах данных: BigQuery, Databricks и Snowflake.
Кажется, это настоящий game-changer. Если раньше работа с данными в инструменте была только с помощью SQL, то теперь трансформации и обработка данных возможны с помощью различных Python-функций 😎

Важное пояснение: предполагается использованием либ Python, не являющимися моделями машинного обучения. В SQL-модели dbt представляют собой одну инструкцию SELECT, которая материализует объект в платформе данных. С ними можно работать, определив свою python-функцию.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍1141
📝 Неизбежная реформация гуманитарного образования 🤔
Когда-то давно появление калькуляторов в доме у каждого школьника и студента во многом изменило подход к изучению математики и других точных наук. С одной стороны, когда человеку нужно выучить правила арифметики, то без самостоятельной практики не обойтись. Однако, если вам нужно решить более сложную задачу (например, посчитать ускорение машины на уроке физики или решить уравнение на алгебре), то можно и на калькуляторе посчитать, главная суть-то не в этом.
Сейчас многие преподаватели уже привыкли к наличию калькуляторов и либо дают задания на счет в классе, либо дают более сложные задания на дом, понимая, что расчеты (скорее всего) будут сделаны не в уме и не в столбик.

Это я к чему?
Сейчас в сети то и дело появляются новости о том, что студенты сдают эссе, написанные AI-моделью, и получают хорошие оценки. Как и в примере, результат которого мы уже знаем, на это можно посмотреть с двух точек зрения: как на большую проблему и как на пространство для роста (в том числе преподавательского).

Почему это не проблема?
В некоторых случаях целью написания эссе является обучение навыкам письма или критического мышления. Для того чтобы удостовериться в самостоятельном выполнении задания, нужно либо дать его во время урока, либо придумать такой вопрос, с которым модель не справится (а модели сейчас далеко не совершенны). В общем, обойти этот нюанс точно можно.

Почему это пространство для роста?
Зачастую, эссе — чистая скука. Именно в таких скучных эссе превосходно проявляют себя языковые модели, которые, например, обучились на сотне эссе из гугла "Пять преимуществ здорового образа жизни". Возможно, именно такие модели помогут искоренить банальные и шаблонные задания, однако, это уже зависит от преподавателей.
Причина, по которой преподаватели просят писать такие эссе, заключается не в черствости или некомпетентности. Обычно это происходит потому, что учителям недоплачивают и они перегружены работой, и гораздо проще спросить что-то стандартное, чем придумать вопрос, который заставит студента хорошенько пораскинуть мозгами.

В общем, хоть это и многогранная проблема, мне кажется, что преподавателям вскоре придется адаптироваться к новой реальности и, при всем этом, студенты не разучатся писать вдумчивые эссе.
44🔥20👍177
Вы ведь не забыли правила счета, несмотря на калькуляторы?
Сколько будет 148*3-2?
Anonymous Quiz
2%
438
5%
440
88%
442
1%
148
4%
Не знаю, покажите ответ
16🕊1
🎶 А не спеть ли нам песню о...? А, подождите-ка, это другой блог! 📈
А не проанализировать ли нам тексты песен и метаданные, чтобы нарисовать картину музыкальной индустрии в графиках и диаграммах? Собрав датасет из 115 318 песен, мы проанализировали его по жанрам, годам, лексическому содержанию песен и показателю repetitiveness. И да, конечно же, мы не могли не подсчитать динамику изменения частоты употребления мата в песнях за разные года.
Ну что, готовы узнать, с чем начинка у вашего плейлиста?
🔥326🐳5👍1
Привет! На связи DataHeroes и мы, совместно с онлайн-школой Fless, приготовили для вас крутой гайд по успешному прохождению собеседования 👾

Вы узнаете о:
📌 неочевидных ошибках на собеседовании и о том, как их избежать
📌 моментах, которые НЕ стоит указывать в резюме
📌 необходимости высшего образования у кандидата
📌 о том, что писать в сопроводительном письме
📌 существовании универсальной формулы успешного собеседования
📌 важности «мыслей вслух» во время ответов на вопросы
и многое другое!

Включайте подкаст, впитывайте рекомендации и забудьте о фразе «Мы вам перезвоним»! 🚀


СПИКЕРЫ: Виктор Рогуленко и Николай Валиотти.

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

#подкаст #DataHeroes
👍14🔥5❤‍🔥2
Audio
13
Знаете, сколько человек в США одевается на Хэллоуин Илоном Маском?
Вот и мы не знаем! Но, как и вы, следим за его (со вчерашнего дня – целиком и полностью) Твиттером и словесными баталиями вне зависимости от того, согласны ли мы с его утверждениями или нет. Но любая прокрастинация должна иметь практическую пользу. So here you go: ловите генератор твитов в стиле Илона Маска!
Если наряжаться миллиардером на Хэллоуин вам не хочется, а хочется им быть (причем, по жизни), то можно потренироваться на таком генераторе, чтобы примерить на себя логику мышления самого богатого человека на планете 😏
🔥11👍4💯3🤣3😱1
Практический гайд по деплою модели на базе GPT-2
Для своего генератора твитов в стиле Илона Маска, мы развернули стилизованную модель GPT-2 для получения логических выводов в режиме реального времени (Real-time inference) с помощью Amazon SageMaker. А чтобы полученный опыт не пропал даром, собрали все скриншоты в последовательный гид с комментариями по SageMaker JumpStart, выбранной нами модели Hugging Face и подробным объяснением, как работать с такой моделью GPT-2 извне AWS.

Оставляйте реакции, если такие статьи вам полезны, и пишите в комментариях, какие темы и задачи нам еще стоит разобрать!
🔥20👍84