9

実際、私はR + PythonとRPY2を使用してデータを操作し、ggplotを使用して美しいグラフィックを作成しています。PostgreSQLデータベースにいくつかのデータがあり、psycopg2を使用してデータをクエリしています。

私は論文を始めていますが、将来的には、(非常に大きな)シミュレーションデータ(多次元、集計クエリなど)を格納するためのOLAPキューブが必要になります。

Python(Python + R、Javaのjpivotやその他のダッシュボードは必要ありません)とMondrianのようなOLAPエンジンとのインターフェースに関するベストプラクティスまたは標準プラクティスはありますか?Googleで解決策を検索しましたが、何も見つかりませんでした。

SQLAlchemyとDjango-ORMを簡単に評価しましたが、OLAPサーバー(Mondrianまたはその他)にクエリを実行するためのMDXまたはXML/Aインターフェイスがありません...

MDXでクエリを記述し、psycopg + ODBCを使用して、OLAPサーバーにクエリを実行し、OLAPサーバーからシミュレーションデータからの回答を得ることができますか(Pythonオブジェクトへのマッピングはありませんが、問題ありません)。

アップデート1:

OLAP + Mondrianテクノロジを検索する必要があるのはなぜですか?

Laval大学( GeoSoa departements + Thierry Badard)がOLAP:SOLAPの空間拡張を作成し、これをGeoMondrianとしてMondrianに実装したためです。私は空間マルチエージェントベースのシミュレーション(〜=ジオシミュレーション)に取り組んでいるので、それは私に興味を持っています。

GeoSoa部門は、GeoMondrian:SOLAPLAYERSと空間データを通信および視覚化するためのAjaxベースのコンポーネントを作成しました。これは、XlmaサーブレットによってMondrianサーバーにクエリを実行できます。

問題:おそらくビッグデータの操作が遅い、インターネットまたはApache2が必要分析、ランクテールなど。ここで、SOLAPは、この後の複雑なR分析のためのデータを準備するのに役立ちます。

なぜPythonなのか?

1-空間データへのWebアクセス-

GeoDjangoMapFishのような「クールな」Pythonフレームワークを使用しようとしています。GISの大きなコミュニティ、オープンソース、GeoAlchemyを使用した空間クエリ/データの操作、JavaScript拡張機能やOpenLayersによる視覚化などです。

2-GISの空間データへのローカルアクセス-

データにアクセスして視覚化するためのプラグイン(オープンソースGIS)、およびQGISプラグインとAPI=Pythonを作成したいと思います。

3-データの自動分析-

ユーザーまたは科学者は、グリッドコンピューティングを使用してシミュレーションを実行し、このデータに対して実行する自動分析(R + ggplot2 + MDXクエリ)を選択します。ここでの私の目標は、シミュレーションの総合的なレポート(グラフィック、表形式のデータなど)を作成することです。

したがって、シミュレーション後、データはOLAP / SOLAPキューブに送られ、多くのPythonスクリプト(ユーザーが作成)はMDXでデータを取得し、R + RPY2でデータを操作し、doku-wikiなどで科学者のためにクールな出力を作成して生成しますコミュニティプラットフォーム。

問題?

1-外部コンポーネントと通信するためのMondrianのAPIコアであるOlap4jは、Java製です:/

2-SOLAPLAYERSはAjaxを使用してデータにアクセスしますが、私には遅すぎます。

3-SQLAlchemyとGeoAlchemyには、多次元データベース(OLAP)へのドライバー接続がありません。

* 解決?*

1-Pythonを使用してolap4jのJavaオブジェクトまたはJavaコレクションにアクセスするためのPy4j?Javaマップコレクションにアクセスするための独自の関数を作成しますか?=>危険で、それほど簡単ではありませんか?..。

2-Ajax Mondrianサーバーを使用したXLMA?遅すぎます。

3-自分のpy-connectorをOLAPMondrianに書き込みますか?=>痛い。難しい方法だと思います。

私は何をすべきか?

4

4 に答える 4

6

私はPythonを知りませんが、mondrian/olap4jの作者です。

py4jを使用してolap4jにアクセスできる場合は、すばらしいです。そうでない場合は、必ずXMLAを検討してください。思ったほど遅くないかもしれません(PythonのXML解析が遅い場合を除きます)。最大の問題は、SOAP要求の作成と応答の理解の複雑さです。

ジュリアン

于 2010-09-30T20:01:41.730 に答える
5

ご存知のように、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]') 

サーバーで使用するために、それをサーブレットにパッケージ化し、MDXをajaxで送信します。ajax呼び出しは大きなオーバーヘッドではないため、Mondrianサーバーと通信するだけでなく、PythonとJavaを結合する必要はないと思います。

于 2010-12-09T21:22:09.307 に答える
2

非常に大規模なデータキューブのストレージと取得の場合、HDF5ストレージはかなりうまく機能します(Pythonインターフェイスの場合はh5pyまたはPyTables)。その後、アプリケーションは、HDF5データベースのローカルコピーを備えたマシンで実行するか、アドホックサーバーソリューションを作成できます(Pythonのまま)。

私は必要に応じてハイブリッドSQL/HDF5ストレージ戦略を設計してきましたが、それらはかなりうまく機能しています。

MDXクエリ言語が本当に必要な場合:

  • ORMとして(stackoverflowに関する以前の回答)

  • cubulus(ただし、MDXのサブセットのみが実装されています)

  • 選択したOLAPを別のサーバーとして実行し、アドホックインターフェイスを介して通信します(httpを介したXMLの場合もあります)。

于 2010-09-27T08:02:24.737 に答える
1

少し完了するために、私はXMLAサーバーにアクセスするためのこのPythonパッケージを発見しました:www。Mondrian、icCube、MSASで動作しているとのことです。

于 2012-11-23T08:57:50.437 に答える