Аналитика данных / Data Study
9.47K subscribers
607 photos
68 videos
25 files
455 links
Помогаю аналитикам расти в профессии и доходе

Курс по продвинутому SQL и автоматизации потоков данных https://datastudy.ru/sql_advanced

По всем вопросам: @daniildzheparov

Канал в MAX https://max.ru/id591908196110_biz
Download Telegram
Как хранить исторические данные и отличать их от актуальных данных

В аналитике всегда есть потребность работать с историческим объемом данных, чтобы уметь отвечать на вопросы бизнеса на всем интервале времени, а не только знать ситуацию в текущий момент.

Есть разные варианты хранения и обновления исторических данных, которые описываются типами SCD.
🔎 SCD или Slowly Changing Dimensions - медленно меняющиеся измерения, когда некоторые атрибуты в данных могут меняться со временем, тем самым возникает необходимость добавлять новую версию записи данных.

🔵 SCD type 0
Данные попадают в таблицу только один раз и становятся статичными, нет версионности и изменения данных. Подходит для хранения конкретных справочников, например названия и ISO коды стран

🔵 SCD type 1
Данные перезаписываются новым значением, что также не позволяет хранить версионность. Механизм простой, вместо старых значений в ту же строку перезаписываются новые значения измененных атрибутов, это позволяет не "раздувать" объем таблицы, но не дает доступа к историчности данных.

🔵 SCD type 2
Данный тип заключается в том, что в таблицу добавляется новая запись по измененным данным. Это реализовано с помощью специальных атрибутов, которые позволяют управлять версионностью. Обычно эти атрибуты выглядят так:
- Дата Начала версии
- Дата Конца версии
- Актуальность записи

🔵 SCD type 3
Реализация выглядит таким образом, что в таблице добавляется атрибут со старым значением.
- Историческое значение
- Новое значение
Есть большой недостаток, что невозможно добавлять много новых столбцов для хранения всех версий данных, поэтому история обычно ограничивается только предыдущей версией.

🔵 SCD type 4
Для хранения исторических данных создается отдельная таблица, чтобы хранить предыдущие версии. Основная таблица будет отображать только актуальную запись по данным. Большой плюс, что можем обращаться всегда к таблице основной версии, но при этом нужно создавать и поддерживать отдельную таблицу с историческими данными.

🔵 SCD type 5
Это некий гибрид типов 1 и 4. Если таблица имеет много атрибутов, то ее могут разбить на более мелкие таблицы справочники, которые будут статичны. Но если в этом маленьком справочнике будет перезапись значений по типу 1, то также необходимо будет перезаписать данные в связанной с этим справочнике более большой таблице измерений с помощью перезаписи ключа

🔵 SCD type 6
Гибрид типов 1,2,3. Здесь используется комбинация вышеперечисленных методов, где хранится полная историчность данных с доступом к актуальной версии и всем историческим значениям. Будут добавлены следующие столбцы для управления историчностью:
- Дата Начала версии
- Дата Конца версии
- Актуальность записи
- Историческое значение
- Новое значение

Если пост полезен, ставь реакции и делись им с другими 👨‍💻

Больше технических моментов про хранение и обработку данных в базе данных разбираем на курсе по Продвинутому SQL и ETL автоматизации

Начни практическое обучение 27 июля
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍141
За что аналитики получают 300к+ в месяц?

Далеко не каждый аналитик получает такие суммы, а только те, кто имеет сильные технические компетенции. И получают за то, что другие специалисты сами сделать не могут, или если спец может сделать работу за 2-их или 3-их людей, которые суммарно будут дороже стоить компании.

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

Поэтому если хочешь больше 💰, то можешь даже не рассчитывать, что базовых навыков SQL или Python тебе для этого будет достаточно. Нужно копать глубже, иметь техническую насмотренность.

➡️А получить это ты можешь вместе со мной на курсе, стартуем уже завтра
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥2
Без реального опыта попасть в IT ОЧЕНЬ трудно

У каждого человека, кто пытается найти свою первую позицию аналитиком, возникает сложность при поиске и понятный аргумент:

Работодатель требует реальный опыт, а у меня только курсы за плечами


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

Но для этого недостаточно
навайбкодить без понимания процессов в проекте
взять готовый датасет и покрутить его в юпитер-ноутбуке
взять чужой проект с GitHub и выдать его за свой

И здесь я согласен с мыслями Саши Исакова из его поста про 5 базовых вещей для старта в аналитике. Чтобы собрать практический проект тебе нужно реально его сделать самостоятельно, а для этого:

тебе нужно знать фундаментальные инструменты работы с данными - SQL, Python, BI. быть знакомым со статистическими методами исследования данных

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

Именно глубина понимания, а не строчки кода, превращает новичка в аналитика, которого готовы нанимать. Начните с проекта, за которым стоят ваши навыки.
👍7
Data Warehouse, Data Lake, Data Lakehouse, Data Fabric, Data Mesh – что это такое, и в чем разница между концепциями

Есть классная историческая справка про появление понятия DWH (сможете похвастаться перед коллегами или на собесах знанием истории концепций хранилищ данных 😎). Если кто-то думает, что аналитика данных и Big Data зародились когда все об этом начали в рекламе курсов кричать, то вы далеко ошибаетесь, история уходит еще в 20 век.

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

Читать статью
9👍3
Применяю SQL потому что лень писать на Python)

Решал типовую рабочую задачу.
Суть в том, что данные были получены с помощью 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
👍2310🔥1🤓1
This media is not supported in your browser
VIEW IN TELEGRAM
Кормили нутрий в Туле, рекомендую 😉
17🔥2👍1