6

MDX クエリをサポートするアプリケーションを実装したいと考えています。この目的のために、MDX クエリを (xml 記述に基づいて) 下線付きデータベースの SQL に変換するpentaho mondrian (MDX インターフェイスを備えたオープン ソース OLTP サーバー)のライブラリの 1 つを使用したいと思います。 MDX から SQL へのマッピングを機能させるためにプロジェクトに含める必要のあるライブラリ (およびその使用方法) について説明します。

アプリケーションでモンドリアンのコンポーネントを再利用した経験のある人はいますか?

4

4 に答える 4

1

Olap4jは現在pentahomondrianの一部です。おそらく、olap4j APIに情報を見つけることができますか?http://www.olap4j.org/

このページで私は見る:

org.olap4j.mdx.parser:MDXクエリ言語のパーサー。

olap4jは、OLAP用のオープンJavaAPIです。

JDBCのように考えてください。ただし、多次元データにアクセスするためのものです。

olap4jは、任意のOLAPサーバーに共通のAPIとして設計されているため、あるOLAPサーバーでアプリケーションを作成し、それを別のサーバーに簡単に切り替えることができます。そして、そのAPIに基づいて構築され、ツールとコンポーネントのコレクションが増えていきます。

于 2010-09-27T16:15:05.213 に答える
1

Mondrian の最新の 3.2.0 ビルドをダウンロードすることをお勧めします。これは、すべての依存関係と共に配布されます。ディストリビューションには、その依存関係を説明する ivy ファイルも含まれています。

最新リリース: http://forums.pentaho.com/showthread.php?77035-Mondrian-3.2-GA-Schema-Workbench-and-Agg-Designer-stable-available-on-SourceForge&p=239443#poststop

ドキュメントは、Pentaho の Web サイトにもあります。幸運を!

于 2010-09-24T03:49:42.737 に答える
0

mondrian.rolap.agg.AggregationManager に関連するコードがあるようですが、簡単ではありません。

parseTree = this.olap4jConnection.getMondrianConnection().parseStatement(mdx);
DrillThrough plan1 = (DrillThrough)parseTree;
Query query = plan1.getQuery();
query.setResultStyle(ResultStyle.LIST);
this.setQuery(query);
CellSet cellSet = this.executeOlapQueryInternal(
    query, 
    (MondrianOlap4jCellSetMetaData) null
);
List coords = Collections.nCopies(cellSet.getAxes().size(), Integer.valueOf(0));
MondrianOlap4jCell cell = (MondrianOlap4jCell) cellSet.getCell(coords);
ResultSet resultSet = cell.drillThroughInternal(
    plan1.getMaxRowCount(), 
    plan1.getFirstRowOrdinal(), 
    plan1.getReturnList(), 
    true, 
    (Logger)null, 
    rowCountSlot
);

最後の行に従うと、

cell.drillThroughInternal(...)

あなたはここで終わるでしょう

文字列 sql = this.getDrillThroughSQL(fields, extendedContext);

しかし、mondrian が mdx に対して 1 つの SQL のみを生成するかどうかはよくわかりません。XMLA (ほとんどのツールがインターフェイスとして使用) を介して、完全なクエリが書き換えられていない単一の軸でドリルスルーを要求できると思います。

これが答えることを願っています。

于 2016-03-26T07:42:09.780 に答える