TG Telegram Group Link
Channel: Аналитика данных / Data Study
Back to Bottom
Буду знать теперь что отвечать по статусам задач 😅
😁50
Эффективная загрузка данных в PostgreSQL с помощью Python

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

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

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

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

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

Результаты разных способом по длительности выполнения можете оценить на скрине. 👍 если возьмете себе на заметку
27👍18
На днях решал несложную одноразовую задачу по фрилансу. Суть в том, что данные были получены с помощью 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
👍5915
Опыт 🟰Насмотренность

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

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

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

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

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

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

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

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

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

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

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

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


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

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

Скину фотку в комментарии оттуда 👇
🔥3112👍4
Доброе утро с видом на Эльбрус! 😍
🔥7013🥰7👍5
Как правильно проектировать и развивать хранилище данных (DWH), чтобы оно отвечало бизнес-задачам компании?

Приходи на авторский курс Руководство по DWH: Архитектура, Инструменты, Внедрение

📆 Дата: 21 июля – 1 августа 2025 г.

📍Формат: онлайн с ведущим экспертом. 32 ак.часа практического интенсива.

💲Стоимость: 93 000 р. (поможем оформить обучение от компании).


📌 Для тех, кто хочет говорить на одном языке с бизнесом и IT, определять необходимость внедрения DWH и его ценность для бизнеса.

📚Вы научитесь:

Разбираться в архитектурных подходах к созданию DWH и понимать их эволюцию.

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

Работать с современными инструментами и концепциями, такими как Data Mesh, Data Lakehouse, Apache Iceberg, Trino, dbt.


💡 В результате вы сможете участвовать в проектах по разработке и оптимизации DWH с учетом актуальных практик.

⚠️Также, если вы хотите освоить ключевые навыки, необходимые для установки, настройки и поддержки аналитической СУБД ClickHouse, ждем Вас на курсах:

Запросы в Clickhouse
📆 Даты: 21 – 23 июля 2025 г.

Разработка и поддержка в Clickhouse
📆 Даты: 28 – 30 июля 2025 г.


👉 оставляй заявку , расскажем, как будет организовано твое обучение.
👍51
🚙 Наш маршрут 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
🔥32👍106
Временные таблицы в базах данных

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

🔎 Временная таблица — это специальный тип таблицы в базе данных, которая существует только в течение сессии пользователя или до конца транзакции. Она создается для временного хранения данных и автоматически удаляется после завершения работы.

Чем они отличаются от обычных таблиц?

1️⃣ Временность: Временные таблицы существуют только в течение сессии или транзакции, тогда как обычные таблицы сохраняются в базе данных до тех пор, пока их не удалят вручную.
2️⃣ Изоляция: Временные таблицы видны только в пределах текущей сессии или транзакции, что обеспечивает изоляцию данных между разными пользователями или процессами.
3️⃣ Производительность: Временные таблицы часто хранятся в оперативной памяти, что позволяет значительно ускорить операции с данными.

Эти особенности и дают плюсы использования временных таблиц для оптимизации ETL

Пример создания временной таблицы в SQL из результата SELECT запроса:

CREATE TEMPORARY TABLE temp_table (
id INT,
name VARCHAR(50),
value DECIMAL(10, 2)
);

--либо создание из результата SELECT запроса
CREATE TEMPORARY TABLE temp_table AS
SELECT
id
, name
, value
FROM table
;


Также хочу отметить, что временные таблицы позволяют оптимизировать выполнение запросов, если вам нужно преобразовывать и извлекать данные из множества разных таблиц в базе. Например, если из таблицы с продажами за все время вам нужны продажи только за последний месяц для разных видов расчетом, сохраните продажи за последний месяц во временную таблицу и обращайтесь к ней для ваших расчетов, чтобы не делать несколько тяжелых запросов к таблице всех продаж.
14👍8🔥4
HTML Embed Code:
2025/07/09 05:54:22
Back to Top