Аналитика данных / Data Study
8.44K subscribers
404 photos
38 videos
24 files
328 links
Сайт: https://datastudy.ru/
По всем вопросам: @daniildzheparov

Про аналитику и инженерию данных

Вакансии: https://t.iss.one/data_vacancy
Книги: https://t.iss.one/analyst_books
Download Telegram
На практике в компаниях видел множество подходов по управлению BI направлением

В одних компаниях предпочитают централизованный подход, где есть один BI инструмент и выделенные BI-аналитики и разработчики. В других компаниях встречается "зоопарк" BI решений, где практически каждый отдел имеет свой собственный стенд BI (Power BI, Tableau, Looker, Superset, Datalens ...), каждый поддерживает свои отчеты самостоятельно. При этом в каждом решении есть свои плюсы и минусы. Например, для централизованной BI-команды распространенный минус - ресурсы команды, чтобы обработать все входящие команде запросы уложиться в сроки заказчиков. А минус "зоопарка" - нет стандартизации, одни и те же метрики, отчеты, исследования могут быть сделаны по несколько раз в разных дашбордах и не сходится по выводам.

Для поиска наиболее подходящего компании развития существует BI-стратегия, которой будут обучать на курсе Разработка BI стратегии

🔹Обучение подойдет лидерам и руководителям BI-направлений, и тех кто развивает аналитику в компании или только планирует запуск BI-проекта.
🔹В результате обучения вы разработаете собственный макет BI-стратегии — с учётом зрелости вашей организации, готовности пользователей и инструментального ландшафта.

🗓 Даты обучения: 18 июня - 11 июля 2025

11 онлайн-встреч в вечернее время с продолжительностью по 2 часа, чтобы сформировать подходящую вам BI-стратегию и приобрести этот ценный навык.

Моим подписчикам авторы курса предлагают скидку 10% по промо "Data Study". Указывайте промо в комментарии к заявке на курс. Успевайте воспользоваться, пока есть возможность

Разработка BI стратегии
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Ребят, кто-нибудь из вас ходит в Spirit фитнес на Технопарке?

Можем вместе иногда ходить, мотивировать друг друга)
Forwarded from 1win | HR
LTV, RFM, SQL
Для кого-то — рандомный набор букв, но для Marketing Researcher — это почти вся жизнь

➡️ Если ты умеешь видеть за цифрами реальные причины и превращать выводы в действия, читай дальше. Нам нужен именно ты.

Что предстоит делать:
🔵Запускать исследования и обеспечивать качество их результатов
🔵Разрабатывать брифы, опросы, тесты
🔵Анализировать данные и помогать продукту расти

Что важно:
🔵Опыт работы в исследованиях от года
🔵Знание маркетинговых инструментов и метрик (LTV, CPA, CPM)
🔵Умение проводить опросы, сегментировать аудиторию и строить прогнозы

Что даём взамен:
🔵Удалёнку и технику для работы
🔵Зарплату выше рынка
🔵Карьерный рост

Твои идеи могут изменить продукт. Откликайся через @jobs1win_bot 📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Функции и Хранимые процедуры SQL

🔎 Функция SQL предназначена для выполнения логики над данными с учетом входных параметров функции и возвращения одного значения, которое может быть либо скалярным (например, строка, число), либо табличным (набор строк). Функции обычно вызываются как часть выражения в SQL запросах и могут использоваться, например, для вычисления значения колонки, условий фильтрации в WHERE или как часть JOIN. Т.е. функции обычно включают в себя выполнение SELECT запросов, либо применение логических, математических функций с заданными параметрами.

🔎 Хранимая процедура включает в себя набор инструкций SQL, который сохранен под определенным именем и выполняется как единая операция. Хранимые процедуры могут принимать входные параметры, выполнять комплексные операции, включать логику управления потоком (например, условные конструкции IF и циклы LOOP), выполнять операции DML (create, insert, delete).

✏️ Сравнение функций и хранимых процедур:
1. Возвращаемые значения:
- Функции: Всегда возвращают значение. Функция может возвращать одно значение (скалярное) или набор строк (таблицу). Возвращаемый тип данных должен быть указан при определении функции.
- Хранимые процедуры: Не обязательно возвращают значения. В PostgreSQL, процедуры могут возвращать результат через выходные параметры (OUT), но они могут также быть использованы для выполнения операций без возвращения данных.

2. Вызов:
- Функции: Могут вызываться внутри SELECT запросов, либо вызываться как результат самого запроса, например SELECT название_функции()
- Хранимые процедуры: Вызов хранимой процедуры выполняется командой CALL название_процедуры()

3. Транзакции:
- Функции: Обычно выполняются внутри транзакции вызывающего запроса и не могут управлять транзакциями самостоятельно (не могут выполнять команды COMMIT и ROLLBACK).
- Хранимые процедуры: Могут включать команды управления транзакциями. Это позволяет процедурам выполнять несколько транзакций в рамках одного вызова.

4. Использование:
- Функции: часто используются в запросах SQL как часть выражения в SELECT, WHERE или JOIN и для вычислений, которые требуют возвращения результата.
- Хранимые процедуры: чаще используются для выполнения набора действий, которые могут включать несколько разных SQL операций, включая изменение схемы, обновление данных, управление пользователями и т. д.

Статьи на эту тему:
📍 Функции и хранимые процедуры в SQL: зачем нужны и как применять в реальных примерах
📍Документация функций PostgreSQL
📍Документация процедур PostgreSQL
📍Stored Procedure vs Function in PostgreSQL
👍12🔥73
Буду знать теперь что отвечать по статусам задач 😅
😁52
Эффективная загрузка данных в PostgreSQL с помощью Python

В этот раз на курсе ученица столкнулась с задачей загрузки своего датасета в базу данных PostgreSQL. Все бы ничего, это типичная задача, через которую проходят ученики, но здесь повлиял объем исходных данных. На входе был json файл объемом 150Мб, который если преобразовать в формат таблицы, то получится 8.9 млн строк. Не Big Data, но и не маленькая экселька на самом деле.

Мы сравнили разные методы загрузки такого датасета в одну и ту же базу данных в пустые таблицы и вот что получилось:

Самый быстрый метод - COPY (выполнился за 25 секунд). Если вкратце описать его особенность, то этот механизм специально предназначен для массовой вставки данных внутри одного запроса к серверу базы данных, в отличие от INSERT команды, где каждая вставка будет обрабатываться сервером как отдельный запрос (или группы запросов) и проходить дополнительно разбор sql команды через планировщик базы данных, что также ест ресурсы.

Для COPY предварительно пришлось преобразовать датафрейм в .csv файл, чего например не нужно делать с удобным методом to_sql.
Кстати, для всех остальных методов вставки которые помню нужно отдельно сначала создать таблицу с помощью CREATE TABLE, потом уже выполнять вставку. Метод to_sql сам создает таблицу, если ее в базе данных не существует.

Но часто без INSERT не обойтись, когда например важно вставлять данные часто и небольшими частями, не сохраняя их при этом предварительно в виде файла.

Результаты разных способом по длительности выполнения можете оценить на скрине. 👍 если возьмете себе на заметку
28👍19
На днях решал несложную одноразовую задачу по фрилансу. Суть в том, что данные были получены с помощью python и по датасету нужно было сделать несколько преобразований и вычислений метрик.

Преобразования сами по себе стандартные: фильтрация, агрегация, сортировка. Можно взять написать все эти операции с помощью pandas к уже имеющемуся датафрейму.

Но мне так стало лень писать несколько строк кода на python, что для меня было проще написать всю логику в одном select запросе на sql 😁
Вы спросите
"нафига так делать???" чтобы применить sql данные нужно положить в базу данных

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

Простой пример применения и сравнения pandas VS pandasql 👇
import pandas as pd 
from pandasql import sqldf

data = {
'product_id': [1, 2, 1, 3, 2, 3, 1],
'sale_date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04'],
'amount': [100, 200, 150, 300, 250, 350, 400]
}

df = pd.DataFrame(data)

# логика с pandas (фильтруем по датам, группируем по product_id, считаем агрегат суммы по полю amount и сортируем по нему же)
result_df = (
df[df['sale_date'].between('2023-01-02', '2023-01-03')]
.groupby('product_id', as_index=False)['amount']
.sum()
.sort_values(by='amount', ascending=False)
)

# или применяя sqldf
query = """
SELECT product_id, SUM(amount) as total_amount
FROM df
WHERE sale_date BETWEEN '2023-01-02' AND '2023-01-03'
GROUP BY product_id
ORDER BY total_amount DESC
"""

sql_result = sqldf(query, globals())


Я на работе настолько привык крутить все данные с помощью SQL, что в голове любые преобразования я продумываю на логике sql-запросов, а потом если все таки нужно могу переложить это на python скрипты.

Это как с разговорными языками. Если например переезжаете в другую страну и начинаете разговаривать/писать/слушать на другом языке, то у вас мозг со временем начинает мыслить на этом же языке. У меня так было с английским 🇬🇧, когда учеба и работа была полностью на английском, при этом жил в Москве, но все равно замечал что формулирую предложения сначала на английском, а потом уже осознаю что можно на русском)

P.S. sqldf применяет диалект SQLite, поэтому можно использовать все функции которые доступны для этой базы.

👍 если узнали новенькое для себя из поста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6515
Опыт 🟰Насмотренность

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

Про опыт
Когда ты джун, каждая задача - это что-то новое, то что ты никогда раньше не делал. В этот момент ты набираешься опыта. Получаешь свой опыт и перенимаешь опыт других коллег, перенимая процесс решения задач, алгоритм анализа, синтаксис скриптов/запросов и т.д., вплоть до привычек решать задачу А с помощью инструмента В, потому что до этого у тебя не было своего опыта и все вокруг тебя делают это так. Ну и ты также начнешь делать.

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

Про насмотренность
Но я задумался, что опыта на каком-то уровне может не хватать или опыт может быть не совсем правильным/релевантным/эффективным.
Ведь задумайтесь, в одной компании ту самую задачу А все решали инструментом В, а в другой компании эту же задачу А решают другие люди, но инструментами С, D и E. И вполне возможно что твой опыт с вариантом В не самый эффективный, но исходя из опыта ты знаком только с ним и можешь даже не задумываться о том, что есть другое.

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

🔎 Насмотренность - знаешь как решать разными способами, опираясь на знания и опыт других, но мог не применять эти знания. Если применил, то получил свой опыт.

🔎 Опыт - прошел путь решения сам или путем заимствования другого опыта.

Мне кажется, что насмотренность более важна для специалистов синьерного уровня, и для этого есть несколько причин:
1️⃣ есть уже наработанный свой опыт и его можно сравнивать с другим опытом через насмотренность. (Типа "я знаю как решить эту задачу и решал ее много раз, но хочу узнать как ее решали другие и сравнить свой опыт)
2️⃣ синьеры как правило являются наставниками для более младших специалистов. и лучше будет сразу в наставничестве давать более широкий опыт: "можно сделать так, а можно иначе, а в другой компании ребята делают так и можешь также попробовать"
3️⃣ опытные специалисты могут быть драйверами роста, внедряя (или пытаясь внедрить) лучшие практики с рынка. а как увидеть эти практики - с помощью насмотренности.
4️⃣ появляется своя команда и часть задач выполняется не твоими руками, а руками твоих коллег. ты можешь повлиять на результат, но не своими руками, а через передачу знаний: "смотри, можем попробовать изобрести велосипед и получить свой опыт, а можем попробовать решить как ребята на конференции рассказывали - посмотрел их решение и предложил тебе попробовать также сделать".

Финализирую:
🔹если джун - нарабатывай собственный и перенимай опыт от своих наставников
🔹если есть базовый опыт - качай насмотренность, как то же самое делают на рынке другие спецы
Please open Telegram to view this post
VIEW IN TELEGRAM
22👍7🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Уехал в отпуск, в процессе или после поделюсь впечатлениями о поездке длиной в 7+ тыс. км

Собирали вещи 3 вечера, пытался разложить все удобно в машине, но как можете видеть по моему лицу на видео это удалось сделать с трудом 😁

Можете проголосовать за канал, там кажется с 1-го уровня будет доступна 1 история в день. Если наберем 16 голосов, буду делиться с вами красивыми пейзажами Кавказа)

https://t.iss.one/boost/data_study
🔥346
Идеальный вид из окна 😍


P.S. код открыл на ноутбуке чисто для фотки) в отпуске же все таки

Сегодня приехали из Архыза в Домбай. Сходили по маршруту на Сурфуджинский водопад. Здесь заповедная зона, на КПП в заповедник сказали что водопады закрыты из-за сошедшего ледника, поэтому дошли только до «Чертовой Мельницы»

Скину фотку в комментарии оттуда 👇
🔥3112👍4
Доброе утро с видом на Эльбрус! 😍
🔥7613🥰7👍5
🚙 Наш маршрут Road Trip

📍Архыз
📍Домбай
📍Кисловодск
📍урочище Джилы-Су
📍Верхняя Балкария
📍Северная Осетия

Я готовился к путешествию в основном по видео блогеров Своим Ходом, они путешествовали в автодоме по Кавказу в прошлом году. Я так вдохновился местами и красотами, что решил повторить частично маршрут и увидеть все своими глазами.

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

Топ 3 самых ярких впечатления и локации:

1️⃣Софийские водопады в Архызе
Голову снесли пейзажи вокруг и сам трекинг до водопадов с кофе-брейком возле них

2️⃣Домбай
Очумели от высоты и величестве гор вокруг курортного поселка, видом из отеля здесь уже делился. + живописный трекинг и подъем на канатной дороге.

3️⃣Эльбрус и суслики
Ездили в урочище Джилы-Су с ночевкой. На рассвете нам открылся величественный Эльбрус. Завтрак и кофе на газовой горелке + все утро кормили милых и пугливых сусликов

Помимо этого мы посетили еще большое количество мест, одни переезды от локации к локации приносили уйму эмоций и новые пейзажи за окном.

Возможно вы тоже захотите посетить эти места 😉 Пишите, если захотите спросить что-то более детально
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38👍117