PythonインターフェイスでOlap Mondrian(MDX、XMLA)をクエリしますか?
質問
実際に私は使用しています r + RPY2を備えたPythonデータとGGPLOTを操作して美しいグラフィックを作成します。PostGreSQLデータベースにデータがあり、PSYCOPG2を使用してデータをクエリしています。
私は論文を始めています、そして将来私は OLAPキューブ 私の(非常に大きな)シミュレーションデータを保存するには:複数の次元、集約クエリなど。
Python間のインターフェースに最適な慣行や標準的なプラクティスはありますか(JPivotまたはJavaの他のダッシュボードが必要です)、および モンドリアン? Googleで解決策を検索しましたが、何も見つかりませんでした。
簡単に評価しました sqlalchemy, 、およびdjango-olですが、それらはありません MDX またはXML/Aインターフェイスを照会するためのOLAPサーバー(Mondrianまたはその他)をクエリします...
MDXでクエリを記述し、PSYCOPG + ODBCを使用してOLAPサーバーをクエリし、OLAPサーバーがシミュレーションデータから回答を提供してくれます(Pythonオブジェクトにはマッピングはありませんが、私には問題ありません)?
更新1:
なぜOLAP + Mondrianテクノロジーを検索する必要があるのですか?
なぜなら ラバル大学 (Geosoa Departments + Thierry Badard)Olap:Solapに空間的拡張機能を書き、Mondrianにこれを実装しました ジェモンドリア人。私は空間的マルチエージェントベースのシミュレーション(〜=地形化)に取り組んでいるので、私は興味を持っています。
Geosoaの部門は、AJAXベースのコンポーネントを作成し、Geomondrian:Solaplayersと空間データを通信および視覚化し、XLMAサーブレットでMondrianサーバーを照会できます。
問題:おそらくビッグデータの操作が遅く、インターネットまたはApacheが必要です。簡単に言えば、それはデータまたはマップを視覚化するためだけです...私の場合、私は自分のデータ操作を作成するために生データが必要です + R:空間分析、回帰分析、ランクテールなど。ここでは、ソラップがこの後の複雑なR分析のためにデータを準備するのに役立ちます。
なぜPython?
1-空間データへのWebアクセス -
「クールな」Pythonフレームワークを使用しようとしています。 Geodjango また マップフィッシュ: :GIS、オープンソース、使用の大きなコミュニティ 地理的 空間クエリ/データを操作するには、JavaScript拡張機能を使用した視覚化を含め、 OpenLayers, 、など
2- GISの空間データへのローカルアクセス -
データにアクセスして視覚化するために、QGIS(オープンソースGIS)にプラグインを作成したいと思います。
3-データの自動分析 -
ユーザーまたは科学者は、グリッドコンピューティングでシミュレーションを実行し、このデータで実行する自動分析(R + GGPLOT2 + MDXクエリ)を選択します。ここでの私の目標は、シミュレーションの合成レポート(グラフィック、表面データなど)を作成することです。
したがって、シミュレーションの後、データはOLAP/SOLAPキューブに移動し、多くのPythonスクリプト(ユーザーが作成した)がMDXでデータを取得し、R + RPY2でデータを操作し、Doku-Wikiまたは別の科学者向けにクールな出力を書き込み、生成するコミュニティプラットフォーム。
問題?
1 -OLAP4J、MondrianのAPIコアである外部コンポーネントと通信すると、Java -Made:/
2 -SolaplayersはAjaxを使用してデータにアクセスしますが、私には遅すぎます。
3 -Sqlalchemy and Geoalchemyには、多次元データベース(OLAP)へのドライバー接続がありません。
* 解決? *
1 -PY4Jは、Pythonを使用してOLAP4JのJavaオブジェクトまたはJavaコレクションにアクセスしますか? Javaマッピングコレクションにアクセスするために私自身の機能を書きますか? =>危険でそれほど簡単ではありませんか?...
2 -Ajax Mondrianサーバーを備えたXLMA?遅すぎます。
3-自分のpy -connectorをOlap Mondrianに書きますか? => uch。それは難しい方法だと思います。
私は何をすべきか?
解決
ご存知のように、MondrianはMySQLのようなデータベースの上にJavaで書かれた完全なOLAPエンジンです。ですから、あなたの質問を理解しているなら、Mondrianを使用して、Pythonとどのようにインターフェイスするのか疑問に思います。
.jarにパッケージ化されたMondrianを使用して、コマンドラインで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]')
サーバーの使用のために、サーブレットにパッケージ化し、AJAXでMDXを送信します。 Ajaxの呼び出しは大きなオーバーヘッドではないため、Mondrian Serverと通信するのではなく、PythonとJavaを結合する必要性がわかりません。
他のヒント
私はPythonを知りませんが、私はMondrian/Olap4jの著者です。
PY4Jを使用してOLAP4Jにアクセスできる場合、素晴らしい。そうでない場合は、XMLAを考慮してください。あなたが思うほど遅くないかもしれません(PythonのXML解析が遅い場合を除きます)。最大の問題は、石鹸の要求を構築し、応答を理解する複雑さです。
ジュリアン
非常に大きなデータキューブのストレージと取得の場合、HDF5ストレージはかなりうまく機能しています(PythonインターフェイスのH5pyまたはPytables)。アプリケーションは、HDF5データベースのローカルコピーを使用してマシンで実行するか、Ad-Hocサーバーソリューション(Python内)を作成できます。
必要に応じてハイブリッドSQL / HDF5ストレージ戦略を設計してきましたが、かなりうまく機能しています。
本当にMDXクエリ言語が必要な場合:
少し完了するために、XMLAサーバーにアクセスするためにこのPythonパッケージを発見しました。 www. 。 Mondrian、ICCube、MSASと連携していると言っています。