Запросов в OLAP Мондриан (многомерные выражения, XML для аналитики) с интерфейс Python?


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

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

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

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

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

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

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

Потому чтоуниверситет Лаваля (geosoa departements + Thierry Badard) написал пространственное расширение для OLAP: SOLAP и реализовал его в Mondrian какGeoMondrian . Это меня интересует, потому что я работаю над пространственным мультиагентным моделированием ( ~= geosimulation).

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

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

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

1-веб-доступ к пространственным данным -

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

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

Я хочу создать плагин в QGIS (open source GIS) для доступа и визуализации данных, а также плагин QGIS и API = Python.

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

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

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

проблема?

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

2-SOLAPLAYERS использует Ajax для доступа к данным, слишком медленно для меня.

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

* решение? *

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

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

3-написать свой собственный py-коннектор для OLAP Mondrian ? => Ай. Это трудный путь, я думаю.

Что мне делать?

4 8

4 ответа:

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

Я использую Mondrian, упакованный в a .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.

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

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

Джулиан

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

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

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

  • Как ОРМ (ранее ответы на stackoverflow)

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

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

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