Вопрос

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

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

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

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

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

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

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

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

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

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

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

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

Я пытаюсь использовать «крутую» структуру Python, например ГеоДжанго или КартаРыбы:большое сообщество ГИС, открытый исходный код, использование ГеоАлхимия для управления пространственными запросами/данными, включая визуализацию с расширениями 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. SOLAPLAYERS использует Ajax для доступа к данным, что для меня слишком медленно.

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

* Решение?*

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

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

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

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

Это было полезно?

Решение

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

Я использую Mondrian, упакованный в .jar, для обработки запросов MDX в командной строке и отправки обратно 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, и они работают довольно хорошо.

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

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

  • кубулус (хотя реализована только часть MDX)

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top