web-dev-qa-db-ja.com

参照時にSSAS階層が重複する

キューブ内のディメンションが重複を提供しているため、キューブの処理中にエラーは発生しませんが、キューブを参照すると重複が表示される可能性があります。

ディメンションには階層があり、階層はCountry -- State -- Area

DBでは、ディメンションデータは次のようになります。

+---------+------------+-----------+
| Country |   State    |  Subarea  |
+---------+------------+-----------+
| India   | Karnataka  | Bangalore |
| India   | Telangana  | Hyderabad |
+---------+------------+-----------+

これで、属性Countryでキューブを参照すると、countryの下に2つのメンバーが "India"として表示されます。属性に対してメジャーが選択されると、これら2つの値の間で売上が分割されます。

この問題を回避するための回避策はありますか?

1
Harsha

その動作はKeyColumns設定に依存します。

datasource viewにこれら2つの名前付きクエリを含むキューブがあるとします。

都市:

SELECT        1 AS id, 'India' AS country, 'Calcutta' AS city
UNION
SELECT        2 AS id, 'India' AS country, 'Bangalore' AS city

販売:

SELECT        1 AS city, 5 AS salesamount
UNION
SELECT        2 AS city, 5 AS salesamount

Id列をKeyColumnsとして使用する、次のようなsales.city->cities.idリレーションのSalesテーブルにリンクされた、都市に基づくディメンション:

enter image description here

結果はこれです:

enter image description here

ただし、この属性のKeyColumnプロパティをcountryに変更すると、次のようになります。

enter image description here

その結果、すべての売り上げが1つの国で報告されます。

enter image description here

私は同意します ドキュメント は少し簡潔です:

属性がバインドされているデータソースビューの基になるリレーショナルテーブルの列である、属性のキーを表す1つまたは複数の列が含まれています。 NameColumnプロパティに値が指定されていない限り、各メンバーのこの列の値はユーザーに表示されます。

「表示された値が同じであっても、キー列の個別の値ごとに1つの個別の属性メンバーがある」と解釈する必要がある場合

ただし、キー列を変更すると、NameColumnおよびOrderByプロパティの変更が必要になる場合があることに注意してください。

また、KeyColumnsは、私の例のように単一のキーではなく、一意のキーとして機能する複数の列で構成できます。

既存のレポートで既に設定されている構造を変更するのが危険すぎる場合は、属性を追加することをお勧めします。