3

私はこの深さの MDX には比較的慣れていませんが、ここに私のジレンマがあります。私の目標は、.Net ストアド プロシージャを使用して計算されるメンバーを実装することです。計算 (XIRR) は、一連のキャッシュ フロー日付とキャッシュ フロー金額に基づいて行われます。理想的には、これは Excel/Browser ユーザーがメジャーとして使用できるキューブ内の計算になります。

簡単に始めるために、現在のコンテキストに基づいて特定のディメンションのメンバーの数をカウントするために、独自の COUNT 計算メンバー/メジャー (.Net を使用していなくても) を実装しようとしています。たとえば、Customer Id Key を持つディメンション Customer があるとします。そして、私のデータベースには合計 100 人の顧客がいるとしましょう。したがって、Count(Customer.CustomerId.AllMembers) は 100 になります。ブラウザーの使用を開始して、Customer.CustomerId.&1、Customer.CustomerId.&2 (顧客 ID 1 および 2) でフィルターを指定すると、カウント計算メンバーが2 を返しますが、合計 100 カウントを返します。私は存在を使用してみました。根本的にまだ理解していないことがあると確信しています。

SSAS/MDX と計算をよく理解している人からの助けを大いに感謝します。前もって感謝します。

マーティ

4

1 に答える 1

2

ここでいくつかの問題が発生する可能性があります。同様のことをしようとしたときにしました。

計算されたメンバーはクライアントのサブ選択を尊重していませんが、これは正常です。理論的には、動的セットを作成し、それを計算メンバーで使用して、フィルターが作成したサブキューブのコンテキストでディメンション数を強制的に評価することになります。Mosha の良い記事がここにあります: http://sqlblog.com/blogs/mosha/archive/2007/08/25/mdx-in-katmai-dynamic-named-sets.aspx

したがって、次のような結果になります。

CREATE DYNAMIC SET CurrentCube.Customers AS
EXISTING(Customer.CustomerId.CHILDREN);

CREATE MEMBER CurrentCube.Measures.CustomerCount AS
Customers.COUNT

ここで、実際の問題は SSAS のバグですhttps://connect.microsoft.com/SQLServer/feedback/details/484865/calcuated-member-with-a-reference-to-dynamic-named-set-kills -the-cubes-performanceしたがって、おそらくローカルでは問題なく動作する上記のコードは、運用キューブを強制終了します。これは私にとって刺激的な学習体験でした。

回避策のいずれかを機能させることができるかどうかを確認してください。私にはできませんでした。

必要なものは取得できましたが、クエリ スコープの動的セットを MDX クエリの一部として作成する必要があり、それをキューブ オブジェクトとして作成することはできませんでした。

WITH DYNAMIC SET Customers AS
EXISTING(Customer.CustomerId.CHILDREN);

MEMBER Measures.CustomerCount AS
Customers.COUNT

SELECT
Measures.CustomerCount 
ON COLUMNS
FROM [Cube]
WHERE Customer.CustomerId.&[1]

乗り方を教えてください。

于 2013-07-19T13:35:08.927 に答える