Requête OLAP Mondrian (MDX, XMLA) avec une interface Python?
Question
En fait, je suis en utilisant R + Python avec RPY2 pour manipuler des données et ggplot pour créer de beaux graphiques .. J'ai des données dans une base de données PostgreSQL, et j'utilise psycopg2 aux données de la requête.
Je commence une thèse, et à l'avenir je besoin d'un cube OLAP pour stocker mon (très gros) des données de simulation:. dimension multiple, requête d'agrégation, etc
Y at-il meilleur ou pratique standard d'interface entre Python (et je veux Python + R, pas JPivot ou d'un autre tableau de bord en Java) et un moteur OLAP comme Mondrian ? J'ai cherché sur Google pour toute solution, et ne je trouve quelque chose.
J'ai brièvement évalué SQLAlchemy et Django-ORM, mais ils ont pas MDX ou XML / une interface pour interroger un serveur OLAP (Mondrian ou autre) ...
Est-il possible d'écrire une requête dans MDX et, avec psycopg + ODBC, requête mon serveur OLAP et le serveur OLAP me donner une réponse de mes données de simulation (pas de mappage sur l'objet Python, mais il est OK pour moi)?
Mise à jour 1:
Pourquoi ai-je besoin de chercher autour de la technologie OLAP Mondrian +?
Parce que Université de Laval (GeoSOA DEPARTEMENTS + Thierry Badard) a écrit un espace extension OLAP: SOLAP, et mis en œuvre dans ce Mondrian comme GeoMondrian . Cet intérêt moi parce que je travaille sur la simulation à base d'agents multiples spatiale (~ = de géosimulation).
Le département GeoSOA a créé un nouveau composant à base Ajax pour communiquer et visualiser les données spatiales avec GeoMondrian:. SOLAPLayers, qui peut interroger un serveur Mondrian par son servlet Xlma
Problème: probablement lent dans la grande manipulation de données, besoin d'Internet ou Apache 2. En bref, il est seulement de visualiser les données ou la carte ... Dans mon cas, j'ai besoin des données brutes pour faire ma propre manipulation de données + graphiques avec R: spatiale l'analyse, l'analyse de régression, queue de rang, etc. ici, l'aide SOLAP me préparer les données pour cette analyse de R plus tard complexe.
Pourquoi Python?
1 - l'accès Web aux données spatiales -
Je suis en train d'utiliser un "cool" cadre Python, comme GeoDjango ou MapFish : grande communauté dans SIG, open source, utilisez GeoAlchemy pour manipuler requêtes spatiales / données, comprennent la visualisation avec des extensions JavaScript et
La solution Comme vous le savez, Mondrian est un moteur OLAP complet écrit en Java sur une base de données comme MySQL. Donc, si je comprends bien votre question, vous voulez utiliser Mondrian et je me demande comment l'interface avec Python. J'utilise Mondrian emballé dans un .jar pour les requêtes MDX de processus sur la ligne de commande et de renvoyer un JSON. Python appelle directement dans la ligne de commande. Et pour l'utilisation du serveur, je le paquet dans un servlet et j'envoie MDX avec ajax. Les appels ajax ne sont pas un gros frais généraux et voilà pourquoi je ne vois pas la nécessité de couplage Python et Java plutôt que de simplement communiquer avec le serveur Mondrian. 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]')
Autres conseils
Je ne sais pas python, mais je suis auteur de Mondrian / olap4j.
Si vous pouvez utiliser py4j pour accéder olap4j, grand. Sinon, pensez certainement XMLA. Il ne peut pas être aussi lent que vous pensez (à moins que l'analyse XML de python est lent). Le plus gros problème est la complexité de la construction des requêtes SOAP et comprendre les réponses.
Julian
Pour le stockage et la récupération très grande des cubes de données, le stockage HDF5 fonctionne plutôt bien (ou h5py PyTables pour une interface Python). Votre application peut alors soit exécuter sur une machine avec une copie locale de la base de données de HDF5 ou faire une solution de serveur ad-hoc (encore en Python).
J'ai été la conception de stratégies de stockage SQL hybrides / HDF5 en cas de besoin, et ils sont performants plutôt bien.
Si vraiment besoin du langage de requête MDX:
Pour compléter un peu, je viens de découvrir ce paquet python pour accéder au serveur XMLA: www . Il dit qu'il travaille avec Mondrian, icCube, MSAS.