1

私は ActivePivot Live で、QueriesService で retrieveObject を呼び出す新しいアクションを作成しようとしています。このようなもの:

IQueriesService queriesService = getSessionService(IQueriesService.class);
ObjectDTO dto = queriesService.retrieveObject("MyDistributedCube", action.getObjectKey());

これはローカル キューブでは正常に機能しますが、リモート サーバーからのオブジェクトの取得に失敗した場合、分散セットアップでは機能します。これは驚くべきことではないかもしれませんが、問題はどうすればそれを機能させることができるかということです。

この例の LargeDealsQuery に似た新しいクエリ タイプは役に立ちますか? http://support.quartetfs.com/confluence/display/AP4/How+to+Implement+a+Custom+Web+Service

アップデート:

これが文脈です。私が持っているのは、ドリルスルーブロッターに適切に表示するにはフィールドが多すぎるため、表示するためだけでなく、転送されるデータの量を減らすために、キューブドリルスルー構成でいくつかを非表示にしています。必要なときにすべてのフィールドを表示するために、「ドリルスルーの詳細」項目を右クリック メニューに追加しました。これにより、1 つのドリルスルー行のすべてのフィールドについてキューブをクエリし、ポップアップで表示します。 . たぶん、この機能を取得するためのより良い方法はありますか?

4

2 に答える 2

0

IQueriesService.retrieveObject()は、ActivePivot 3.x で導入された廃止されたサービスです。当時、ActivePivot は入力オブジェクトをメモリに直接格納していたため、それらのオブジェクトを取得する手段を提供するのは自然なことでした。しかし、ActivePivot の新しいバージョンでは列ストアが導入されました。データは入力オブジェクトから抽出され、列構造にパックおよび圧縮されます。その後、入力オブジェクトが解放され、メモリ使用量が大幅に削減されます。

ActivePivot 4.x の場合、retrieveObject()サービスは間接的ではありますが、ある程度維持されています。実際には、一般的なオブジェクトが圧縮されたデータからオンザフライで再構築されるためです。お気付きのように、実装はローカル キューブのみをサポートしています。分散実装を持つのは、MDX クエリとドリルスルー クエリだけです。

ActivePivot 5.x の場合、retrieveObject()サービスは完全に削除され、基盤となるデータストアへの直接アクセスが優先されます。

生の事実を取得する (分散) ドリルスルー クエリを使用して、ユース ケースに対処できる可能性は十分にあります。もう 1 つの簡単な修正方法は、クラスター内の各ローカル キューブで要求を手動で発行することです。

より一般的には、ドリルスルー クエリ (および MDX クエリと GetAggregates クエリ) は、ActivePivot のコンテキストに依存します。クエリの実行方法を変更する *IContextValue* をクエリにアタッチできます。特にドリルスルー クエリの場合、IDrillThroughPropertiesコンテキスト値をクエリにアタッチできます。

public interface IDrillthroughProperties extends IContextValue {

/**
 * @return The list of hidden columns defined by their header names.
 */
List<String> getHiddenColumns();

/**
 * @return The comparator used to sort drillthrough headers (impacts the column order).
 */
IComparator<String> getHeadersComparator();

/**
 * Returns the post-processed columns defined as plugin definitions of {@link IPostProcessedProperty}.
 * @return the post-processed columns defines as plugin definitions of {@link IPostProcessedProperty}.
 */
List<IPluginDefinition> getPostProcessedColumns();

@Override
IDrillthroughProperties clone();
}

これにより、特定のドリルスルー クエリに必要な列のみを取得できます。

于 2013-10-02T11:51:29.037 に答える
0

あなたの更新によると、次のことを行うことができます: 共有コンテキストではなく、特定のロールまたはユーザーごとに drillthroughProperties を設定し、DT クエリを実行する前に各ユーザーがそれを変更できるようにします。そのため、ユーザーがアクセスできるすべての属性を表示するサービスをコーディングする必要があります。その後、ユーザーはドリルスルーに表示するフィールドを選択し、drillthroughProperties を入力して DT クエリを起動できます。関心のあるものだけが表示されます。これはサンドボックスの通貨コンテキストのように見えますが、ここでは DT に影響します。

于 2013-10-14T11:18:14.867 に答える