397 subscribers
226 photos
46 videos
11 files
305 links
Data Engineering Technologies.
SQL, Python, Kafka, Spark, Pandas, Airflow, Clickhouse, Greenplum, Postgres, dbt

Буст канала тут - https://t.me/boost/data_engi
Download Telegram
🖼️
И в дополнение к патологии выше, есть целый репозиторий с подобными штуками - ссылка

#python #wtfpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🆒5❤‍🔥2😁1
Если тебе интересно заглянуть под капот Python и узнать, как устроены списки - есть отличная статья, которая начинается с достаточно простого примера и потом плавно погружает в глубины C-шной реализации списков в Python.

Автор статьи серьёзно подошёл к делу: он не только детально всё расписал, но и приложил кучу наглядных иллюстраций.

Даже если ты никогда не программировал на C, тебе будет понятен и интересен материал.

Ссылка на статью, рекомендую ознакомиться — это на самом деле увлекательно 🙂

#python
Please open Telegram to view this post
VIEW IN TELEGRAM
6
И ещё немного про Python.

Полезно тем, кто уже освоил f-строки в Python и использует их для форматирования. Часто ты останавливаешься на чём-то вроде f"string {variable}", но знаешь ли ты, что f-строки скрывают в себе гораздо больше возможностей?

Например, представь, что тебе нужно превратить число в строку, где оно всегда будет занимать три позиции, дополняясь нулями спереди, если это необходимо. С f-строками это сделать проще простого! Если у тебя число 5, ты получишь "005", а если 123, то останется просто "123".

Гайд от PyBites показывает, на что способны f-строки. Если ты ещё не раскрыл для себя все возможности этого удобного инструмента - бегом читать 🙃

Ссылка

А ещё по f-строкам у меня была ссылка на другой хороший материал в посте

#python
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Очень полезная статья для тех, кто работает с celery. А если вы из мира python, то для отложенных задач не так уж и много альтернатив. Через решение непосредственно задачи отдачи метрик в prom раскрывается внутреннее устройство фреймворка: какие настройки есть, как работают и как их правильно использовать.

https://habr.com/ru/companies/domclick/articles/804535/ #dev #python
4
SQLGlot - это SQL-парсер, транспилятор, оптимизатор и движок без зависимостей. Его можно использовать для форматирования SQL или перевода между 21 различным диалектом, таким как DuckDB, Presto / Trino, Spark / Databricks, Snowflake и BigQuery. Он предназначен для чтения различных SQL-вводов и вывода синтаксически и семантически корректного SQL в целевых диалектах.

Это очень универсальный общий SQL-парсер с надёжным набором тестов. Он также достаточно производительный, несмотря на то, что написан исключительно на Python.

Ты можешь легко настраивать парсер, анализировать запросы, обходить деревья выражений и программно строить SQL.

Синтаксические ошибки подсвечиваются, а несовместимости диалектов могут выдавать предупреждения или рэйзить ошибки в зависимости от конфига. Однако SQLGlot не претендует на роль валидатора SQL, поэтому он может пропустить некоторые синтаксические ошибки.

Больше примеров по ссылке
Документация

#sql #parser #python
6❤‍🔥22
🧐
Небольшая подборка не очень популярных, но полезных библиотек для анализа данных

PySheets - предоставляет пользовательский интерфейс для работы с электронными таблицами на Python.
Используй Pandas, создавай диаграммы, импортируй таблицы Excel, анализируй данные и создавай отчеты.

py2wasm - преобразует программы и данные на Python в WebAssembly и запускает их в ~3 раза быстрее.

databonsai - библиотека на Python, которая использует LLM для задач очистки данных, таких как категоризация, преобразование и извлечение.

#py #python #dev
Please open Telegram to view this post
VIEW IN TELEGRAM
6❤‍🔥32
from dataclasses import dataclass


@dataclass
class Car:
mark: str
model: str = 'Supra'
colour: str = 'red'
max_speed: int = 300


print(Car().max_speed)

#py #python #task #quiz
8
🐍🦆

Построение эффективных дата-пайплайнов с помощью Python и DuckDB

TL;DR: DuckDB делает обработку данных дешёвой и простой. Покажу, как эффективно использовать DuckDB в цикле постов

👇👇👇

0⃣ Прелюдия

1️⃣ Начало

2️⃣ Проект

#duckdb #python #etl #de #elt
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥63👏1
0⃣-й пост из цикла.

Прелюдия

🔘Ты ежедневно обрабатываешь несколько ГБ данных, но тратишь часы на настройку/отладку масштабных систем обработки данных? Кто бы ни создавал инфраструктуру данных, он скорее всего скопировал её из какого-то блога/выступления крупной технологической компании!

🔘Представь, что внезапно ответственность за управление расходами команд обработки данных легла на твои плечи. Тебе приходится тщательно проверять все расходы на систему, какими бы незначительными они ни были, чтобы сэкономить немного денег для компании.

🔘Может быть неприятно, когда поставщики данных взимают с компании кучу денег и с радостью возьмут ещё больше, если ты не будешь осторожен с использованием доставшегося тебе легаси.

🔘Представь себе, если бы затраты на обработку данных были очень дешёвыми! Представь себе, что ты можешь быстро воспроизводить и отлаживать проблемы на своем ноутбуке!

🔘В цикле постов расскажу, как использовать последние достижения в области систем обработки данных и дешёвое оборудование для обеспечения дешёвой обработки данных. Буду использовать DuckDB и Python, чтобы показать, как быстро и дёшево обрабатывать данные, одновременно улучшая эргономику разработчиков.

#duckdb #python #etl #de #elt
Please open Telegram to view this post
VIEW IN TELEGRAM
55
1️⃣-й пост из цикла

Начало

Если ты активно работаешь с данными, ты, вероятно, сталкивался с такими системами, как Snowflake, Databricks, Kafka и т.д., о которых было написано много статей о том, как они произвели революцию в обработке данных.

Однако, несмотря на всю эту шумиху, многие компании поняли, что всё это быстро становится дорогостоящим. Мониторинг и отработка отказов обходятся дорого, особенно в таких системах, как Kafka, Apache Spark и Snowflake, в которых много узлов.

Если тебе интересно:

🔜 Как будущее уходит от распределенных вычислений?

🔜 Почему компании тратят умопомрачительные суммы денег на эти бесполезные ресурсы?

🔜 Почему небольшие компании имитируют то, что делают крупные компании, не будучи при этом крупными компаниями?

🔜 Зачем нужно просматривать данные в инфракрасном диапазоне с помощью микроскопа, да ещё и переплачивать за все эти популярные инструменты?

🔜 Как избежать выплаты 1000 долларов за случайное сканирование данных.

🔜 Как избегать поставщиков данных, которые почти всегда возлагают ответственность за то, чтобы пользователи использовали их инструменты “правильным образом”?

Если да, то этот цикл постов для тебя. Представь, если бы твои затраты на обработку данных были настолько низкими, что тебе даже не пришлось бы их отслеживать!

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


#duckdb #python #etl #de #elt #kafka #spark #databricks #snowflake
Please open Telegram to view this post
VIEW IN TELEGRAM
12
Не могу не поделиться один классным фреймворком - FastStream. Он существенно упрощает реализацию консьюмеров и продюсеров для RabbitMQ, Kafka и т.п. И за счёт этого позволяет сконцентрироваться на бизнес-логике. В комплекте идёт удобный DI (dishka), валидация через pydantic, генерация AsyncAPI, подключение по OpenTelemetry, метрики, мидлвари и куча клиентов. Настоятельно рекомендую!

И нет, FastStream решает более общую задачу, нежели Celery; так что сравнивать их некорректно.

https://habr.com/ru/articles/822505/ #python
❤‍🔥3👏3😁1
😁932
pytest - непростой фреймворк. Это мощный комбайн, под капотом которого происходит много действий (в том числе и магических). Поэтому если вы хотите подружится с ним, понять и принять, то лучший способ - покопаться в его внутрянке и решить какую-то учебную задачу. Например, переделать вывод результатов во что-то более читаемое.

P.S. Бонусом идёт список полезных материалов по pytest на самом Хабре в конце статьи.

https://habr.com/ru/articles/844728/ #python
8
Выкатили релиз Python 3.13.0, и он приносит несколько важных обновлений, которые могут улучшить производительность и удобство разработки.

▶️Экспериментальная поддержка JIT-компиляции, которая обещает значительное ускорение работы кода.

▶️Появилась возможность редактирования многострочного кода в интерактивном интерпретаторе, что облегчает работу с длинными выражениями.

▶️Добавлены новые возможности для работы с типами, такие как typing.TypeIs.

▶️Для мобильных разрабов теперь доступны поддержка Android и iOS на уровне Tier 3.

Детали релиза тут: Python 3.13.0.

#dev #python #release #3.13
Please open Telegram to view this post
VIEW IN TELEGRAM
11
😁9
В python добавляют очередной тип строк, который явно разделяет шаблон и его аргументы. Выглядеть это будет примерно так:
attributes = {"src": "shrubbery.jpg", "alt": "looks nice"}
template = t"<img {attributes:.2f} />"
assert html(template) == '<img src="shrubbery.jpg" alt="looks nice" />'
assert template.strings == ("<img ", " />")
assert template.interpolations == attributes
assert template.interpolations[0].format_spec == ".2f"

Т.е. html - кастомная функция, которая разворачивает аргумент-словарь у строки в набор тегов. Я вот так сходу не могу придумать мест применения, кроме экранирования секретов в логах. Но во-первых, это решается по-другому (своим логгером), а во-вторых, уже есть string.Template, который делает нечто похожее. Ну ладно, ещё защита от инъекций (XSS, SQL и т.п.), но там это делается совсем другим способом.

В общем, меня не покидает ощущение, что python становится слишком фичастым. И когда-нибудь это обязательно стрельнет.

https://habr.com/ru/articles/911196/ #python
6❤‍🔥1😁1
Кто-то считает DjangoORM злом, а я думаю, что инструментом просто надо уметь пользоваться. А т.к. это обёртка над другой технологией, то надо разбираться и в ней. Вот хорошая и лёгкая для чтения статья как в действительности DjangoORM работает с БД. Приведены некоторые оптимизации, нюансы использования и т.п. Хороший кандидат, кстати, для перевода на Хабр.

Но не нужно применять все эти хаки постоянно. ИМХО, они нужны больше для оптимизации - когда действительно что-то идёт не так. Какая разница сколько у вас индекс весит, если база нагружена на 20% и свободного места ещё 100Gb.

https://hakibenita.com/django-foreign-keys #python
👏5😁1