DE – Telegram
524 subscribers
314 photos
81 videos
15 files
410 links
Data Engineering Technologies.
SQL, Python, Kafka, Spark, Pandas, Airflow, Clickhouse, Greenplum, Postgres, dbt, LLM agentic systems, AI, robots, drones etc.

Boost channel - https://news.1rj.ru/str/boost/data_engi
Download Telegram
❤️ ingestr

Твой личный маг по переносу данных. Без кода, без сложностей - чистая магия! 🪄


✔️ Проще не бывает: копируй данные из своей базы в любое место всего одной командой.

🔄 Инкремент: append, merge or delete+insert без головной боли.

🐍 Установка одним тапом - и всё готово к работе!


#инструментыДляРазработчиков #безКодирования #простотаИУдобство #переносДанных #автоматизация #длинныеНеудобныеБесполезныеХэштегиКоторыеНикомуНафигНеНужны
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2❤‍🔥1
🔥 Открываем двери для упрощённой обработки данных с dlt - data load tool

Твой скрипт уже почти идеален? Сделай его волшебным с библиотекой data load tool! Без хлопот по подключениям, без лишних сервисов – просто чистая магия загрузки данных из любых источников прямо в твои руки. 🧙‍♀️

😎 Особенность? Никаких контейнеров, никаких сложностей. Импортируй dlt в свой код и вуаля - твои данные летят как по волшебству в структурированном виде! 🌪️

🎓 А ещё, dlt и dbt вместе - это как два могучих волшебника одного клана! Есть поддержка dbt из коробки

📌dlt используется под капотом у Ingestr, про который был предыдущий пост.

#Python #DataIngestion #Innovation
Please open Telegram to view this post
VIEW IN TELEGRAM
🆒2
😁8
PyGraphistry: Революция в Визуализации Графов! 🔍

PyGraphistry - мощный инструмент на основе Python, который радикально изменит твой подход к анализу и визуализации сложных сетей! 🚀

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

🌐 Визуальные возможности на новом уровне:
WebGL клиентская технология рендеринга предоставляет возможность отображения до 8 млн узлов и рёбер, перенося визуализацию графов на качественно новый уровень.

💻 Мощный аналитический инструмент:
Серверный GPU-аналитик способен обрабатывать ещё бОльшие графы, вне зависимости от их размера, делая PyGraphistry идеальным выбором для проектов любой сложности.

📊 Интеграция с PyData Экосистемой:
PyGraphistry плавно интегрируется с основными инструментами PyData, такими как Pandas, Spark, Dask, а также с графовыми и нейронными сетями DGL и PyTorch, расширяя границы возможного в анализе данных.

🔆 Универсальная совместимость:
Подойдет для работы с различными источниками данных Python, включая CSV, SQL, Neo4j, и другие, что делает PyGraphistry незаменимым инструментом в арсенале любого аналитика.

#PyGraphistry #Python #визуализация_данных #аналитика #GPU
Please open Telegram to view this post
VIEW IN TELEGRAM
🆒2❤‍🔥1
dbt-af

🔥 Подход к интеграции dbt и airflow. Ребята недавно заопенсорсили либу. Есть туториал.

Можно накидывать ишью, препарировать в форках, использовать, ставить звёздочки ⭐️

#dbt #airflow
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5🆒2❤‍🔥1
DuckDB in action 🦆

Команда MotherDuck предлагает бесплатный PDF-файл с ранним доступом к книге "DuckDB в действии". Первые несколько глав помогут понять основы DuckDB, и со временем авторы будут добавлять новые главы [по таким темам, как интеграция с Python, WASM, пайплайны передачи данных], которые будут высланы бесплатно.

В DuckDB легко обрабатывать гигабайты данных — и всё это без хранилища данных. Звучит как кликбейт, но надо проверить 🙃

Обещают, что не нужно дорогостоящее оборудование или развёртывание целого нового кластера, когда нужно проанализировать большой набор данных. Просто нужен DuckDB! Современная и быстрая встроенная БД работает на ноуте и позволяет легко обрабатывать данные практически из любого источника, включая JSON, CSV, Parquet, SQLite и Postgres. В DuckDB in action описано всё, что нужно знать, чтобы максимально эффективно использовать этот инструмент, обеспечить безопасность данных локально и сэкономить сотни долларов на счетах за облако. Верим? 🙂

Книгу можно скачать с сайта MotherDuck

#book
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2🆒2
Learn Streaming Data Fundamental with Redpanda

Отличный способ изучить основы потоковой передачи данных — запишись в Университет Redpanda для бесплатного онлайн-обучения. Курсы включают в себя 8 уроков и заканчиваются небольшим квизом.

Начни с курса «Основы потоковой передачи данных», чтобы получить прочную базу знаний в этой области. Помимо этого есть более продвинутые курсы, такие как управление кластерами. ⚡️

Redpanda это аналог Kafka, что обещает сервис?

🟡 никакой java – сервис написан на c++ с тулингом на go. На выходе у нас 2 бинарных файла и всё
🟡полная совместимость с протоколом Apache Kafka. Ни надо ничего переписывать на стороне клиентов, подмены транспорта никто не заметит
🟡своя реализация raft протокола – не нужны никакие сторонние сервисы
🟡очень эффективное использование ресурсов – это общий тренд такого рода инструментов-заместителей
🟡самостоятельное лечение кластера при потерях брокеров
🟡встроенная schema registry и http proxy
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2
✏️ Полезные SQL-запросы для очистки данных


1️⃣ Удаляем дубликаты записей

DELETE FROM your_table
WHERE rowid NOT IN (
SELECT MAX(rowid)
FROM your_table
GROUP BY column1, column2, ...
);

2️⃣ Удаляем строки с NULL-значениями

DELETE FROM your_table
WHERE column1 IS NULL OR column2 IS NULL;

3️⃣ Заменяем NULL-значения на дефолтное выражение

UPDATE your_table
SET column1 = 'default_value'
WHERE column1 IS NULL;

4️⃣ Переводим текст в верхний регистр

UPDATE your_table
SET column1 = UPPER(column1);

5️⃣ Обрезаем лишнее

UPDATE your_table
SET column1 = TRIM(column1);

6️⃣Конвертируем строки в формат дат

UPDATE your_table
SET date_column = TO_DATE(date_string, 'YYYY-MM-DD');

7️⃣ Извлекаем год/месяц/день

SELECT EXTRACT(YEAR FROM date_column) AS year,
EXTRACT(MONTH FROM date_column) AS month,
EXTRACT(DAY FROM date_column) AS day
FROM your_table;

Эти запросы могут помочь тебе привести данные в порядок.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥8
🌟 RisingWave - Масштабируемый Postgres для потоковой обработки, аналитики и управления. Альтернатива KsqlDB и Apache Flink.

🚀 В 10 раз производительнее.
🚀 В 10 раз экономичнее.

Завтра пройдёт воркшоп по работе с инструментом.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2😁1🆒1
😁6
👩‍💻 Чистый SQL-код

Ты можешь писать SQL так:

coalesce("Фамилия", '') || ' ' || coalesce("Имя", '') || ' ' || coalesce("Отчество", '')
Но лучшая версия тебя будет использовать функцию concat_ws:

concat_ws(' ', "Фамилия", "Имя", "Отчество")
#база #sql
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥9
Dolt — первая в мире база данных SQL с системой контроля версий.

Управление версиями в БД в стиле Git предоставляет ряд полезных функций, включая:

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


Под капотом Dolt использует Prolly Tree-хранилище схемы и данных, представленных в виде графа. Таким образом достигается контроль версий БД на уровне хранилища.

Механизм хранения Dolt построен на графе коммитов Prolly Trees в стиле Git. Схема таблицы и данные хранятся в Prolly Trees. Корни этих деревьев Prolly вместе с другими метаданными хранятся в графе коммитов, чтобы обеспечить контроль версий в стиле Git.

Блогпост о движке Dolt.
Please open Telegram to view this post
VIEW IN TELEGRAM
🆒4❤‍🔥2
😁5
Методы оптимизации SQL-запросов в высоконагруженных приложениях

Успех высоконагруженных приложений зависит от эффективной работы БД, лежащих в их основе. По мере роста сложности SQL-запросов, особенно тех, которые включают в себя сложные соединения и проблемы индексирования, оптимизация запросов приобретает первостепенное значение.


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

👇👇👇

1️⃣ Ключевые аспекты плана выполнения запроса

2️⃣ Продвинутые стратегии индексирования

3️⃣ Переписывание и оптимизация запросов

4️⃣ Денормализация данных для повышения производительности

5️⃣ Использование временных таблиц для оптимизации запросов

6️⃣ Оптимизация подзапросов и агрегаций

7️⃣ Избегай курсоров и циклов для повышения производительности
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥7
1️⃣-й пост из цикла.

Ключевые аспекты плана выполнения запроса


🟢 Использование индексов:

Обрати пристальное внимание на индексы, используемые в плане выполнения. Убедись, что для столбцов, участвующих в выражениях WHERE, условиях JOIN и выражениях ORDER BY, доступны соответствующие индексы. Если индексы используются не так, как ожидалось, подумай о создании покрывающих индексов или пересмотри дизайн индексов.

🟢 Типы соединений:

В плане выполнения показано, как происходит соединение таблиц. Определи используемые типы соединений (например, NNER JOIN, LEFT JOIN) и оцени влияние на производительность. Убедись, что условия соединения оптимизированы и подходят для данного запроса.

🟢 Операции фильтрации и сортировки:

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

🟢 Вложенные циклы против хэш-соединений:

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

〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️

Использование EXPLAIN для анализа запросов

В большинстве баз данных SQL для анализа плана выполнения можно использовать оператор EXPLAIN:

EXPLAIN
SELECT *
FROM orders
WHERE true
AND customer_id = 123
AND order_date BETWEEN '2023-01-01' AND '2023-06-30';

Внимательно изучи результаты работы EXPLAIN, уделяя внимание вышеупомянутым аспектам. Ищи узкие места в производительности, операции сканирования таблиц и возможности использования индексов.

Помимо изучения текста ответа удобно использовать визуализаторы планов запросов, об одном из таких писал в одном из своих предыдущих постов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🆒4😁2❤‍🔥1
2️⃣-й пост из цикла.

Продвинутые стратегии индексирования

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


🟡 Пересмотр покрывающих индексов

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

CREATE INDEX idx_covering
ON products (product_id)
INCLUDE (product_name, unit_price);

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

🟡 Частичные индексы для отфильтрованных данных

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

CREATE INDEX idx_region_orders 
ON orders (order_date)
WHERE region = 'West';

Этот отфильтрованный индекс фокусируется на заказах из региона 'West', улучшая производительность запроса для этого условия.

🟡 Стратегии индексирования для соединений

Для сложных соединений рассмотри возможность создания индексов, охватывающих столбцы соединений. Такие индексы могут ускорить операции соединения. Проанализируй план выполнения запроса, чтобы определить столбцы, участвующие в условиях соединения, и создай соответствующие индексы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥5
❤‍🔥3
😁4