Запросов в 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 ответа:
Как вы знаете, 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, когда это необходимо, и они работают довольно хорошо.
Если действительно нужен язык запросов многомерных выражений:
Чтобы завершить бит, я только что обнаружил этот пакет python для доступа к серверу XMLA: www. Он говорит, что работает с Mondrian, icCube, MSAS.