Запросить OLAP Mondrian (MDX, XMLA) с интерфейсом Python?

На самом деле я использую R + Python с RPY2 для управления данными и ggplot для создания красивая графика ... У меня есть данные в базе данных PostgreSQL, и я использую psycopg2 для запроса данных.

Я начинаю писать диссертацию, и в будущем мне понадобится куб OLAP для хранения моего (очень big) данные моделирования: множественные измерения, агрегационные запросы и т. д.

Есть ли лучшая или стандартная практика взаимодействия между Python (а мне нужен Python + R, без jpivot или какой-либо другой панели инструментов на Java) и механизмом OLAP, например Мондриан? Я искал в Google любое решение и ничего не нашел.

Я кратко оценил SQLAlchemy и Django-ORM, но у них нет MDX или интерфейс XML / A для запроса сервера OLAP (Mondrian или другого) ...

Можно ли написать запрос в MDX и с помощью psycopg + ODBC запросить мой сервер OLAP и сервер OLAP, который даст мне ответ из моих данных моделирования (нет сопоставления с объектом Python, но для меня это нормально)?

Обновление 1:

Зачем нужно искать технологии OLAP + Mondrian?

Поскольку Университет Лаваля (департаменты GeoSoa + Тьерри Бадард) написал пространственное расширение для OLAP : SOLAP, и реализовал это в Mondrian как GeoMondrian. Это меня интересует, потому что я работаю над пространственным многоагентным моделированием (~ = геомоделирование).

Отдел GeoSoa создал компонент на основе Ajax для передачи и визуализации пространственных данных с помощью GeoMondrian: SOLAPLAYERS, который может запрашивать сервер Mondrian с помощью своего сервлета Xlma.

Проблема: вероятно, медленная обработка больших данных, нужен Интернет или Apache 2. Вкратце, это только для визуализации данных или карты ... В моем случае мне нужны необработанные данные, чтобы сделать мои собственные манипуляции с данными + графика с R: пространственный анализ, регрессия анализ, ранговый хвост и т. д. Здесь SOLAP помогает мне подготовить данные для этого более позднего комплексного анализа R.

Почему именно Python?

1 - Доступ к пространственным данным через Интернет -

Я пытаюсь использовать "крутой" фреймворк Python, например GeoDjango или MapFish: большое сообщество в ГИС, открытый исходный код, используйте GeoAlchemy для управления пространственными запросами / данными, включая визуализацию с расширениями JavaScript и OpenLayers и т. д.

2 - Локальный доступ к пространственным данным в ГИС -

Я хочу создать плагин в QGIS (ГИС с открытым исходным кодом) для доступа и визуализации данных, а также плагин QGIS и API = Python.

3 - Автоматический анализ данных -

Пользователь или ученый запускает моделирование с вычислением сетки и выбирает автоматический анализ (запрос R + ggplot2 + MDX), который они хотят запустить на этих данных. Моя цель здесь - создать синтетический отчет моделирования (графические, табличные данные и т. Д.).

Итак, после моделирования данные попадают в куб OLAP / SOLAP, и многие сценарии Python (созданные пользователем) получают данные с помощью MDX, манипулируют данными с помощью R + RPY2, а также пишут и производят классный вывод для ученых на doku-wiki или другом сообщество-платформа.

Проблема?

1 - Olap4j, ядро ​​API Mondrian для связи с внешним компонентом, создано на Java: /

2 - СОЛАПЛЕЕРЫ используют Ajax для доступа к данным, что для меня слишком медленно.

3 - SQLAlchemy и GeoAlchemy не имеют подключения драйвера к многомерной базе данных (OLAP).

* Решение? *

1 - Py4j для доступа к объекту Java или коллекции Java в olap4j с помощью Python? Написать мою собственную функцию для доступа к отображаемой коллекции Java? => опасно и не очень просто? ...

2 - XLMA с сервером Ajax Mondrian? Это слишком медленно.

3 - Написать свой py-коннектор в OLAP Mondrian? => Ой. Думаю, это трудный путь.

Что я должен делать?


person reyman64    schedule 25.09.2010    source источник
comment
Я ищу решение, кажется, я могу попытаться связать программное обеспечение вызова olap4j (java) и pythonToJava, такое как JPype или Py4j ... У другого человека есть другой ответ или замечание?   -  person reyman64    schedule 26.09.2010
comment
Просто сообщите, существует сводная таблица на чистом javascript, которая может сводить кубы XMLA OLAP с интуитивно понятным пользовательским интерфейсом и высокой производительностью. демо и документы   -  person Sean Zhao    schedule 28.09.2013


Ответы (4)


Как вы знаете, Mondrian - это законченный движок OLAP, написанный на java поверх базы данных, такой как MySQL. Итак, если я понимаю ваш вопрос, вы хотите использовать Mondrian и задумываться, как его связать с Python.

Я использую Mondrian, упакованный в .jar, для обработки запросов многомерных выражений в командной строке и отправки обратно JSON. Python вызывает его прямо в командной строке.

import commands
result = commands.getoutput('java -jar Mondrian_cli.jar -q 
select NON EMPTY Crossjoin({[Measures].[Store Sales]}, 
Crossjoin([Time].[1997].Children, [Store].[All Stores].Children)) ON COLUMNS, 
[Product].[All Products].Children ON ROWS from [Sales]') 

А для использования на сервере я упаковываю его в сервлет и отправляю MDX с помощью ajax. Вызовы ajax не являются большими накладными расходами, и поэтому я не вижу необходимости связывать Python и Java, а не просто общаться с сервером Mondrian.

person Biovisualize    schedule 09.12.2010

Я не знаю python, но я автор mondrian / olap4j.

Если вы можете использовать py4j для доступа к olap4j, отлично. Если нет, обязательно рассмотрите XMLA. Это может быть не так медленно, как вы думаете (если только синтаксический анализ XML в Python не медленный). Самая большая проблема - сложность построения запросов SOAP и понимания ответов.

Юлиан

person Julian Hyde    schedule 30.09.2010

Для хранения и извлечения очень больших кубов данных достаточно хорошо работает хранилище HDF5 (h5py или PyTables для интерфейса Python). Затем ваше приложение может либо работать на машине с локальной копией базы данных HDF5, либо создать специальное серверное решение (все еще на Python).

При необходимости я разрабатывал гибридные стратегии хранения SQL / HDF5, и они работают довольно хорошо.

Если действительно нужен язык запросов многомерных выражений:

  • как ORM (более ранние ответы на stackoverflow)

  • cubulus (хотя реализована только часть многомерных выражений)

  • запустите выбранный OLAP как отдельный сервер и общайтесь с ним через специальный интерфейс (может даже быть XML через http).

person lgautier    schedule 27.09.2010
comment
Возможно, HDF5 - лучшее решение для хранения, но мне абсолютно необходима база данных, такая как PG + OLAP, с простым языком запросов, таким как MDX или SQL, чтобы легко манипулировать / агрегировать / визуализировать измерение. Это для начинающих ученых-пользователей ... - person reyman64; 27.09.2010

В завершение, я только что обнаружил этот пакет python для доступа к серверу XMLA: www. Он говорит, что работает с Mondrian, icCube, MSAS.

person Marc Polizzi    schedule 23.11.2012