0

SQL Server Analysis Services 2008 R2 内でディメンション属性間の属性リレーションシップを実装するための最適なユース ケース シナリオを正しく理解するのは難しいと感じています。

私が読んだことから、「不自然な階層」はパフォーマンス上の理由から避けるべきであり、「自然な」階層はユーザー定義の階層として優先されるようです。

参照: http://support.microsoft.com/kb/2131988

以上のことから、次のシナリオについてあなたの考えをお聞きしたいと思います。

次の属性を持つディメンションがあります。


次元名: DimReserveData
次元メンバー:

プログラム ライン
カバレッジ コード
カバレッジ タイプ
カバレッジ ステータス


以下に示すように、これらの属性を同じ順序で階層内に配置したいと思います。

ReserveDataHierarchy
.........................................
プログラム ライン
カバレッジ コード
カバレッジ タイプ
カバレッジ ステータス
. ...................................................

階層情報:

プログラム ラインは、提供される保険補償プログラムを表すコードです。(例: AA-23、BB-25、CC-78 など)

カバレッジ コード属性は、特定のプログラム ラインに対して提供される特定のカバレッジを表す数値コードを表します。(例: 123、456 など)

カバレッジ タイプは、特定のカバレッジ コードに関連付けられたカバレッジのタイプを表します。(例: 車両または身体)。

カバレッジ ステータスは、特定のカバレッジのステータス (オープンまたはクローズ) を表します。

したがって、階層内のカーディナリティに関して次のことが言えます。

1 つのプログラム行に多数のカバレッジ コードを含めることができます。
1 つのカバレッジ コードに多くのタイプを含めることができます。
1 つのカバレッジ タイプに多くのステータス値を含めることができます。

したがって、階層を参照すると、次の属性と対応するメンバーが生成されます。

DimReserveData
.................................................. ................................................................... .*................................................
プログラム行 | カバレッジ コード | カバレッジ タイプ | カバレッジ ステータス ................................................................. ................................................................... ...................................
AA-12 ................... ……123…………車両……オープン
BB-14 .. ..........456.................車両用...................... ....クローズド
CC-23 ....123 ...................車両 .... ..........開く
DD-23 ..........456................. ……ボディ…………オープン

私の質問は、これらの属性を「自然な」または「不自然な」階層内でモデル化することが適切かどうかです。パフォーマンスを向上させるために、「自然な」階層を使用したいと考えています。

明らかに、この階層を「自然な」ものとしてモデル化するには、属性関係を使用する必要があります。

上記の階層例に戻りますが、特定のカバレッジ コード属性が複数のプログラム ラインおよび同じカバレッジ タイプを含む複数のカバレッジ コードに属している場合、「自然な」階層は可能でしょうか?

この役立つ投稿: http://sqlserverpedia.com/blog/sql-server-bloggers/idiots-guide-to-ssas-attribute-relationships/では、1 つの都市が複数の州または県に属しているシナリオで、階層内の各属性が一意に定義されるように、属性キー列を変更できます。

これは上記の例で機能しますか?

次のように属性関係をモデル化できると考えています:(SSAS 2008 R2を使用)

[ディメンションからのサロゲート キー属性] -- > カバレッジ ステータス -- > カバレッジ タイプ -- > カバレッジ コード -- > プログラム ライン

上記の各属性には、次のようにキー列が設定されます。

...................................................
カバレッジ ステータス:
........... .........................
補償ステータス
補償タイプ

...................................................
補償の種類:
................... .........................
補償タイプ
補償コード

...................................................
補償コード:
................... ...................................
カバレッジ コード
プログラム ライン

...................................
プログラムライン:
................... ...................................
プログラムライン

これは機能しますか?このシナリオは、 「不自然な」階層に適していますか?

上記の私の投稿をお読みいただき、誠にありがとうございます。

ありがとう!

4

2 に答える 2

1

これらを階層に含める必要がある場合は、強制的に自然なものにします。不自然な階層を使用するよりも、パフォーマンスの低下が少なくなります。強制自然階層のペナルティは、主にキーサイズの増加に関連しています (複合キーを使用して階層を自然化するため)。

しかし、おそらく、これらの属性をユーザー階層に強制することによって何を達成しようとしているのかを考えるべきでしょうか?

一部の MDX クエリを簡素化するためですか? ディメンションが広すぎて (キーに直接関連する属性が多すぎて)、処理中にメモリ不足が発生していませんか?

答えが単にこれらの属性をユーザー インターフェイス (Excel など) 用にグループ化することである場合は、これらの属性を好みの順序で表示できる命名規則を使用することを検討することをお勧めします...

于 2012-04-16T17:21:21.797 に答える