BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс Современная архитектура хранилища данных » DuckDB для Data Engineer » Интеграции с Pandas и NumPy: конвертация и производительность

Интеграции с Pandas и NumPy: конвертация и производительность

В современном аналитическом конвейере DuckDB выступает как легковесная встраиваемая база данных, ориентированная на быстрый SQL-аналитический слой, а Pandas и NumPy остаются основными инструментами подготовки данных и числовых экспериментов в Python. Эффективная интеграция между этими технологиями обеспечивает минимальные задержки при конвертации данных, максимальную производительность вычислений и гибкость в построении пайплайнов. Глубокое понимание архитектурных особенностей обмена данными, правил типизации и стратегий передачи позволяет не только ускорить обработку больших датасетов, но и сохранить управляемость кода и прозрачность процессов.

Цель главы - рассмотреть архитектурные принципы обмена данными между Pandas/NumPy и DuckDB, раскрыть механизмы конвертации и типизации, обсудить опционы интеграции (register, Arrow-based обмен), а также представить практические решения по оптимизации производительности в рамках аналитических пайплайнов.

  • Разбор архитектуры обмена данными между Pandas/NumPy и DuckDB, включая память, схемы и протоколы.
  • Правила конвертации и маппинга типов с учётом пропусков и временных меток.
  • Подходы к передаче данных: регистрация DataFrame, использование PyArrow и сценарии потоковой обработки больших датасетов.
  • Практические рекомендации по настройке производительности и сценариям внедрения.

     

Архитектура интеграции Pandas/NumPy и DuckDB

DuckDB работает как встроенная аналитическая база данных с встраиваемым SQL-движком. Взаимодействие с данными в Python строится на основе двух опций: прямого взаимодействия с объектами Pandas через механизм регистрации Python-объектов и применения форматов колонарной памяти (Arrow) для передачи данных. Основная идея - минимизировать копирование данных и обеспечить потоковую обработку, чтобы запросы к DuckDB могли опираться на данные в указанных представлениях без расширенной сериализации.

Ключевые принципы:

  • Встраиваемая архитектура: DuckDB запускается внутри процесса Python, что позволяет избегать сетевых задержек и хранить данные в общей памяти между Python-объектами и движком SQL.
  • Разделение представления данных: Pandas DataFrame остаётся в формате Python-объекта и может быть представлен как виртуальная таблица внутри DuckDB либо через конвертацию в Arrow-таблицу, что позволяет DuckDB считывать данные по требованию.
  • Zero-copy подход: при использовании Arrow-таблиц есть возможность минимизировать копирование, передавая указатели на колонки в памяти, однако реальная копия может потребоваться в зависимости от формата входных данных и операций оптимизации.
  • Параллелизм и управление ресурсами: DuckDB может распараллеливать вычисления, в то же время Python-обёртки и обмен данными через регистрированные объекты влияют на план выполнения и общую пропускную способность.

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

 

Типизация и конвертация данных между Pandas/NumPy и DuckDB

Переход между Pandas/NumPy и DuckDB требует аккуратной сопоставимости типов. В DuckDB реализованы типы, которые хорошо покрывают диапазон значений, встречающихся в типичных датасетах, включая целочисленные, вещественные, логические, временные и строковые типы. На практике основная сложность состоит в корректной обработке пропусков (NA), временных меток, категориальных данных и объектов Python.

Ключевые принципы маппинга:

  • Целочисленные и вещественные типы: Pandas int64, float64 сопоставляются с соответствующими типами в DuckDB (INTEGER, DOUBLE). При наличии пропусков DuckDB поддерживает пустые значения через NA, и следует учитывать поведение агрегаций в presence of NULL.
  • Логические значения: bool в Pandas превращается в BOOLEAN в DuckDB.
  • Временные метки: datetime64[ns] в Pandas транслируются в TIMESTAMP без часового пояса в DuckDB; временные зоны требуют явного приведения к TIMESTAMP WITH TIME ZONE, если необходима поддержка TZ.
  • Объекты и строковые данные: объектные столбцы (object) в Pandas чаще всего соответствуют VARCHAR в DuckDB; для текстовых данных можно являться и более специфические форматы, однако рекомендуется привести к строковому типу до выполнения важных операций.
  • Категориальные данные: Pandas Categorical иногда эффективнее хранить как словарную кодировку; DuckDB поддерживает словарную кодировку спутанной строкой, что может дать небольшой выигрыш по памяти и скорости агрегирования, но следует внимательно тестировать на конкретном наборе данных.
  • Пропуски и аномальные значения: важно явно обрабатывать NaN/NULL до анализа, либо полагаться на NULL-обработку на стороне DuckDB (COALESCE, CASE WHEN IS NULL и т.д.).

Практический подход к конвертации:

  • Передача через регистрируемые DataFrame: Pandas DataFrame можно зарегистрировать как виртуальную таблицу в DuckDB и выполнять SQL-запросы напрямую на стыке Python и SQL. Этот путь хорошо подходит для циклов анализа в ноутбуках и сценариев, где данные не требуют полного копирования в DuckDB, а оперативная обработка и агрегации реализуются в SQL-слоях.
  • Передача через PyArrow: конвертация DataFrame в PyArrow Table и регистрация этой таблицы в DuckDB позволяет снизить копирование данных и использовать колоночный формат обмена. Arrow обеспечивает эффективный обмен представить большим наборам данных без полной сериализации.
  • Гибридный подход: для небольших, частых итераций** - регистрировать DataFrame; для больших наборов - конвертировать в Arrow и регистрировать, если план предполагает интенсивную фильтрацию и агрегацию на уровне DuckDB.

Важно помнить: конвертация данных - это не одноразовая операция. В рамках аналитического пайплайна целесообразно держать данные в формате, который максимизирует pushdown SQL-операций, а данные, которые требуют последующей обработки на стороне Python (например, сложные ML-процедуры), возвращать в pandas только после завершённых агрегатов и сводок.

import duckdb
import pandas as pd
import numpy as np

## Пример DataFrame
df = pd.DataFrame({
    'user_id': np.random.randint(1, 1000, size=1_000_000),
    'amount': np.random.randn(1_000_000),
    'ts': pd.date_range('2024-01-01', periods=1_000_000, freq='s')
})

con = duckdb.connect()

## Бескопирная связь с DataFrame через регистр
con.register('df', df)

res = con.execute("""
    SELECT user_id, AVG(amount) AS avg_amount
    FROM df
    WHERE amount > 0
    GROUP BY user_id
    ORDER BY avg_amount DESC
    LIMIT 10
""").fetchdf()

print(res)
import pyarrow as pa

## Создаём Arrow Table из Pandas DataFrame
table = pa.Table.from_pandas(df)

## Регистрация Arrow Table в DuckDB
con.register('tbl', table)

res = con.execute("SELECT AVG(amount) AS avg_amount FROM tbl").fetchdf()
print(res)

С точки зрения NumPy, ситуация аналогична: данные NumPy можно упаковать в Pandas DataFrame, затем применить одну из стратегий регистрации. При большом объёме данных такой подход помогает избежать повторного копирования и упрощает интеграцию с существующими пайплайнами обработки данных на Python.

 

Пути обмена данными: регистрация, Arrow и сценарии потоковой загрузки

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

  • Регистрация DataFrame через con.register: данный подход прост и быстр в прототипировании. Он позволяет продолжать работать в Python без явной миграции данных в DuckDB. Однако такие вызовы чаще всего ограничивают возможности оптимизации внутри DuckDB, особенно когда требуется сложное планирование SQL-запросов и кэширование на уровне движка.
  • Использование PyArrow Table: обмен через Arrow обеспечивает более тесное взаимодействие между Pandas и DuckDB на уровне памяти и чаще даёт лучшие результаты при больших наборах данных, особенно если данные уже в формате Arrow. Это особенно полезно, когда пайплайн включает миграцию данных между этапами, где движок SQL выполняет тяжёлые агрегации и фильтрации.
  • Индуктивная загрузка больших датасетов: когда данные намного превосходят объём доступной памяти или требуется потоковая обработка, предпочтительна стратегия чтения из внешних источников (CSV/Parquet) прямо в DuckDB, а затем последующая фильтрация и агрегация. В этом случае данные не проходят через Python DataFrame на пути к DuckDB, избегая дополнительного копирования, а результаты возвращаются в Python уже как готовый DataFrame для дальнейшего моделирования.

Применение соответствующей стратегии требует учета профиля нагрузки: интерактивная аналитика в ноутбуке обычно выигрывает от регистрации DataFrame и Arrow-обмена; постоянные промышленные пайплайны с большими данными предпочитают прямую загрузку в DuckDB и последующей экспорт результатов в Python.

 

Оптимизация выполнения: режимы, параметры и схемы интеграции

Производительность интеграции Pandas/NumPy и DuckDB во многом зависит от того, насколько эффективно удаётся pushdown вычислений в движок DuckDB и как организованы конвертации между формами представления данных. Ключевые принципы оптимизации:

  • Прагматичный выбор формата: если задача включает плотную агрегацию и фильтрацию над большими объёмами, Arrow-обмен чаще оказывается эффективнее регистраций Python-объектов, поскольку DuckDB может обрабатывать данные в своём колоночном формате с минимальной задержкой копирования.
  • Минимизация копирования: избегайте лишних преобразований между DataFrame и DuckDB; используйте прямые пути, чтобы DuckDB мог переиспользовать существующие буферы, когда это возможно.
  • Настройки параллелизма: PRAGMA threads управляет числом потоков, используемых DuckDB. В типичных сценариях увеличения числа потоков до 4-8 на сервере или ноутбуке позволило добиться заметной скорости при агрегациях и джойнах над большими наборами данных.
  • Поиск эффективного плана выполнения: команда EXPLAIN даёт вид плана выполнения запроса. Это позволяет выявлять узкие места, такие как лишние сортировки или неэффективные джойны, и перенастраивать запросы или схемы представления данных.
  • Распределение работы между SQL и Python: UDF на Python следует использовать дельно. Чем больше вычислений выполняется внутри DuckDB через SQL, тем выше предсказуемая производительность. Вызовы Python UDF в рамках SQL-процесса часто становятся узким местом.
  • Память и ограничение: установка memory_limit и контроль за расходом памяти - необходимый элемент в продакшн-системах. DuckDB поддерживает динамическое использование памяти, но разумная граница помогает предотвратить перегрузку OCR-узла.
  • Пропускной режим и конвертация типов: избегайте конвертации типов внутри цикла - если возможно, приводите типы один раз до выполнения запросов и конвертируйте результат в нужный формат только после вычислений.
    import duckdb
    import pandas as pd
    import numpy as np
    
    con = duckdb.connect()
    
    ## Оптимизация параллелизма
    con.execute("PRAGMA threads=4")
    
    ## Пример диагностики плана выполнения
    plan = con.execute("""
        EXPLAIN SELECT user_id, AVG(amount) AS avg_amount
        FROM df
        GROUP BY user_id
        ORDER BY avg_amount DESC
        LIMIT 10
    """).fetchdf()
    print(plan)
    

    Если в пайплайне присутствуют явные узкие места, полезно тестировать разные схемы: хранение исходных данных в DuckDB против регистрации DataFrame, изменение форматов хранения (CSV/Parquet) и анализ потребления памяти. Важно помнить: перенос вычислений в SQL-слой чаще даёт устойчивую производительность, тогда как Python-слой может стать bottleneck при частых вызовах над большими блоками данных.

     

Промежуточные результаты и интеграция с аналитическими инструментами

Глубокая интеграция Pandas/NumPy с DuckDB позволяет формировать аналитические пайплайны от этапа подготовки данных до этапа агрегации и экспорта в машинное обучение. В корпоративной среде такие пайплайны часто состоят из:

  • этапа подготовки и очистки данных в Pandas/NumPy;
  • этапа агрегирования и анализа внутри DuckDB, где SQL-операторы обеспечивают производительную реализацию группировок, оконных функций и сложных джойн;
  • этапа экспорта результатов обратно в Python для моделирования или визуализации.

На уровне архитектуры целесообразно держать данные в DuckDB до того момента, пока SQL-слой не выполнит необходимые сводки. Затем данные можно экспортировать в Pandas DataFrame через fetchdf() и передавать в ML-библиотеки (например, Scikit-Learn, CatBoost, LightGBM) или использовать прямо в Python для дальнейшей обработки. Такой подход минимизирует количество трансформаций между представлениями и сохраняет возможность быстрого отката к исходным данным в DuckDB.

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

## Пример экспорта агрегационных результатов в NumPy для последующей ML-обработки
import numpy as np

agg = con.execute("""
    SELECT user_id, AVG(amount) AS avg_amount
    FROM df
    GROUP BY user_id
""").fetchdf()

## Конвертация в NumPy для передачи в ML-пайплайн
## X = agg['avg_amount'].to_numpy(dtype='float64')
user_ids = agg['user_id'].to_numpy(dtype='int64')
## далее X и user_ids передаются в модель

Интеграция с NumPy и Pandas: практические сценарии

  • Exploration и прототипирование: в ноутбуке часто возникают сценарии быстрого анализа в Pandas. Регистрация DataFrame и выполнение SQL-запросов через DuckDB позволяют быстро получить сводки, не выходя за пределы удобного окружения Python.
  • Построение пайплайна ETL: данные сначала подготавливаются в Pandas для специфических преобразований, затем выгружаются в DuckDB для эффективной агрегации и фильтраций, после чего результы возвращаются в Pandas для последующего ML-моделирования.
  • Интеграция NumPy в вычисления: DuckDB способен обработать числовые массивы через таблицы, а затем результаты конвертировать обратно в NumPy-форматы для моделей, где требуется низкоуровневая числовая обработка или матричное вычисление.

Практические советы:

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

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

  • Проверяйте планы выполнения (EXPLAIN) и используйте параллелизм разумными рамками, чтобы избежать перегрузок памяти.

  • При конвертации результата в Pandas помните о пропусках и типизации - это поможет сохранить корректность downstream-аналитики.

    import numpy as np
    import pandas as pd
    import duckdb
    
    ## Пример прямой передачи NumPy массива через DataFrame в DuckDB
    arr = np.random.normal(0, 1, size=1_000_000)
    df_np = pd.DataFrame({'val': arr})
    
    con = duckdb.connect()
    con.register('np_table', df_np)
    
    res = con.execute("SELECT MIN(val), MAX(val), AVG(val) FROM np_table").fetchdf()
    print(res)
    

    Практические рекомендации по внедрению

  • Начинайте с прототипирования в ноутбуке: регистрируйте DataFrame, экспериментируйте с агрегациями и джойнами, добейтесь быстрого ответа на базовых сценариях.

  • Для production-пайплайна выстраивайте чёткую стратегию миграции: какие источники данных загружаются в DuckDB, какие происходят конвертации в Pandas и как возвращаются результаты.

  • Отслеживайте характеристики памяти и параллелизма: используйте PRAGMA threads и memory_limit в зависимости от нагрузки и числа доступных CPU.

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

  • Включайте в пайплайн проверки консистентности типов между Pandas и DuckDB и используйте стандартные средства валидации данных, чтобы избежать ошибок на этапе продакшна.

     

Key takeaways

  • DuckDB и Pandas/NumPy лучше всего работают, когда данные не копируются бесконечно: используйте Arrow-обмен и регистрацию DataFrame, чтобы снизить задержки и сохранить гибкость анализа.
  • Типизация - важная часть интеграции: корректный маппинг типов, обработка пропусков и datetime-времён являются основой надёжности вычислений.
  • Планирование выполнения и параллелизм должны управляться явно: используйте EXPLAIN и PRAGMA threads для балансирования нагрузки.
  • Для больших пайплайнов предпочтительно держать данные в DuckDB до финального шага анализа и экспорта в Pandas/NumPy, что упрощает контроль над конвейером и повышает производительность.
  • Регистрация DataFrame и использование PyArrow - две базовых стратегии, которые позволяют добиться минимальных задержек и эффективного обмена данными.
  • Важно тестировать сценарии на реальных объемах данных: производительность зависит от конкретной схемы данных и характера запросов.
  • Экспорт результатов обратно в Pandas/NumPy следует планировать с учётом пропусков и типов, чтобы сохранить совместимость с downstream-анализом.

     

FAQ

  1. Какие базовые способы интеграции Pandas с DuckDB существуют и чем они различаются?
  • Регистрация DataFrame через con.register позволяет DuckDB обращаться к данным без явной перезагрузки. Это удобно для быстрого прототипирования и интерактивной аналитики, но может влиять на план выполнения из-за необходимости обращения к Python-объекту.
  • Использование PyArrow-таблиц обеспечивает более эффективный обмен в памяти и уменьшение копирования. Такой подход предпочтителен для больших наборов данных, где сохранение памяти и скорость критичны.

 

  1. Какой формат обмена выбрать для больших датасетов?
  • Для больших датасетов рекомендуется использовать PyArrow-таблицы или прямую загрузку данных в DuckDB через внешние источники (Parquet/CSV) с минимальным участием Python. Это позволяет DuckDB выполнять агрегации и джойны внутри своей памяти без лишних копий и конвертаций.

 

  1. Как конвертировать результаты DuckDB обратно в Pandas?
  • В DuckDB Python API результаты запросов возвращаются как объект, который можно привести к pandas DataFrame через fetchdf(). Этот подход обеспечивает консистентную конвертацию опыта: вы получаете полноценный DataFrame с теми же именами столбцов и типами, пригодными для последующей обработки в Pandas.

 

  1. Как работать с пропусками при конвертации между Pandas и DuckDB?
  • Пропуски в Pandas следует явно обрабатывать или позволять DuckDB обрабатывать их через NULL. В большинстве случаев корректнее перевести данные в DuckDB с явным указанием NULL-значений и использовать COALESCE/IS NULL в SQL-выражениях, если задача требует замены пропусков.

 

  1. Как управлять производительностью интеграции в продакшене?
  • В продакшне стоит определить текущие узкие места: конвертация DataFrame, задержка при передачи данных через регистрируемые таблицы, или нагрузка на параллелизм. Затем применить настройку PRAGMA threads, memory_limit и анализ плана выполнения через EXPLAIN. Эффективной практикой является минимизация межязыковых переходов и для критичных путей держать данные в DuckDB до момента необходимых агрегатов.

 

  1. Можно ли напрямую работать с NumPy-массивами в DuckDB без промежуточного Pandas?
  • Быстрое и надёжное решение - сначала упаковать NumPy-массивы в Pandas DataFrame, затем применить один из стандартных подходов интеграции (регистрация DataFrame или Arrow-таблицы). Это обеспечивает совместимость типов и удобство последующей агрегации в DuckDB, а затем возвращает результаты в NumPy для дальнейших действий.

 

  1. Какие признаки указывают на необходимость перехода к Arrow-обмену?
  • Когда данные велики по объёму и вы видите значительные задержки копирования или задержки при изучении планов выполнения, Arrow-обмен чаще всего даёт преимущества за счёт эффективной передачи памяти и упрощения интероперабельности между Pandas и DuckDB.

 

  1. Какие сценарии интеграции с Pandas/NumPy избегать, чтобы не ухудшать производительность?
  • Избегайте повторной регистрации одного и того же DataFrame в цикле анализа и избыточного копирования данных между Python и DuckDB. Старайтесь держать данные в DuckDB, выполняя как можно больше вычислений в SQL, и только затем возвращать результаты в Python. Это снижает затраты на конвертации и повышает стабильность производительности.

 

  1. Как тестировать производительность интеграции в команде?
  • Разработайте набор бенчмарков на реальных сценариях: агрегации по группам, джойны между локальными наборами и внешними источниками, обработку временных рядов и оконные функции. Сравните показатели времени выполнения и памяти между регистрацией DataFrame и Arrow-обменом, используя EXPLAIN для анализа плана.

 

  1. Какие примеры реального внедрения можно привести в корпоративной практике?
  • Пример 1: прототипирование водоподготовки и аналитики продаж в ноутбуке. DataFrame регистрируется в DuckDB, выполняются агрегации, затем результаты экспортируются в Pandas для визуализации и bouw ML-пайплайна.
  • Пример 2: ETL-процесс, где большие логи регистрируются в DuckDB через Arrow-базу и проходят фильтрацию/агрегацию, после чего итоговые наборы передаются в Pandas для построения моделей, а затем данные загружаются в хранилище для дальнейшей аналитики.

 

← Предыдущая статья
Интеграции с Python: duckdb-py, обмен DataFrames
Следующая статья →
Интеграции через Apache Arrow: совместное использование памяти

 

Узнать стоимость решенияЗапросить видео презентацию

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • KazanExpress — торговая площадка, на которой представлены товары с бесплатной доставкой за один день в более, чем 70 городах России. Аналитическое решение на базе платформы данных Yandex Cloud позволило компании обеспечить демократизацию данных. Результат — принятие обоснованных решений на всех уровнях, увеличение лояльности партнеров и повышение прозрачности бизнеса.

    Мониторинг ключевых метрик в реальном времени минимизировал недополученную прибыль и обеспечил рост прибыльных направлений, а возможности геоаналитики сервиса Yandex DataLens помогли за короткое время проанализировать локации для открытия более 90 ПВЗ в 25 городах России и заложить основу для роста компании.

  •  ООО «ММК-Информсервис» создает высокотехнологичные решения для эффективной работы предприятий. Разрабатывают и внедряют телекоммуникационные и бизнес-приложения, автоматизируют производство, выстраивают и поддерживают корпоративную IT-инфраструктуру.

  • В «Пивоваренной компании «Балтика» аналитическая платформа Loginom применяется для моделирования процессов или построения отчетов, в том числе для формирования рекомендаций по корректировке плана промоактивностей.
     
  • Банк "Санкт-Петербург" - это универсальный коммерческий банк, предоставляющий полный спектр финансовых услуг для частных и корпоративных клиентов. Банк основан в 1990 году и имеет генеральную лицензию Банка России на осуществление банковских операций. Сеть банка включает более 170 офисов и отделений, а также свыше 1000 банкоматов и терминалов в Санкт-Петербурге, Москве и других регионах.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.