none
ディメンションとメジャーの結合について RRS feed

  • 質問


  • キューブの処理にて以下エラーが発生します。
    「OLAP ストレージ エンジン エラー: 属性キーが処理中に見つかりませんでした: 」

    メジャーに、ディメンションのキーがみつからない場合のエラーという認識ですが、
    間違っていないでしょうか?

    また、上記認識の場合、
    エラーとならないように設定する事は可能なのでしょうか?

    キューブの処理でディメンションキーエラーの設定で無視する事は可能ですが、
    実際のリレーション設定等で外部結合的な設定をしたいです。

     

    2011年2月18日 5:39

回答

  • 下記手順で対応できるかと思います。

    ・キューブのメジャーグループのプロパティで、ErrorConfigration設定をカスタムに設定し、
    KeyNotFound設定をIgnoreErrorに変更します。

    ・関連するディメンションのプロパティで、UnknownMember設定をVisibleに設定します。

    上記設定を行い、それぞれ処理をすれば、ディメンションにない値がファクトにある場合、Unknownで
    集計されて表示されます。

    Unknownの表示を<未割当>等に変更したい場合はディメンションのプロパティで、UnknownMemberName
    に設定してやれば変更出来ます。

    ただし、パフォーマンス上の観点からはデータ転送・変換で内部結合でOKとなるようにきれいなデータを
    作成することが推奨されています。(なので、デフォルトではUnknownを出さないような設定になっている
    のだと思います。)

    実際のところ、この対応を完璧に行うことが出来ないケースもあるので、Unknownメンバを有効化する
    対応はよく行います。

     

     

    • 回答としてマーク 山本春海 2011年3月1日 8:38
    2011年2月18日 9:30
  • 若干補足です。

    >キューブの処理でディメンションキーエラーの設定で無視する事は可能ですが、
    >実際のリレーション設定等で外部結合的な設定をしたいです。
    ということですので、ikemotyさんのご助言のように設定すればいいと思います。

    ただ、これは、キューブとディメンジョンの結合が単純な「標準」だけの場合だけです。
    「参照対象」(メジャーがディメンジョンAのキーを持ち、
    ディメンジョンAがディメンジョンBのキーを持つ)の場合、メジャーとディメンジョンAは
    整合性が保たれていることが前提となるのでデータの欠けが生じます。
    (SSASは、メジャーテーブルと、ディメンジョンAのマスタテーブルを内部結合して、
     ディメンジョンBのキーを持ったメジャーデータを取得しようとするため、
     ディメンジョンAのキーに一致しないメジャーテーブルデータは、メジャーデータから
     除外されてしまいます。・・・エラーにもならず、メッセージもなく無視されます。)

    キー不明は、キューブ処理に大きな負荷をかけるので処理パフォーマンスを劣化させるのと、
    キューブが大きくなると、データ不整合へのトラブル対応(原因調査)が複雑になるので、
    「あらかじめ、不明キーをディメンジョンテーブルに用意しておいて、
     メジャーデータ作成時に不明キーに置き換えておく。」
    などの処理でSSAS以前のテーブルデータの状態で整合性を保っておく方が楽です。


    ---------------------------------
    Infospire Kayano
    • 回答としてマーク 山本春海 2011年3月1日 8:38
    2011年2月21日 6:27
  •  

    ありがとうございます。

    ずばりで外部結合が出来ました。

     

    初期のトランザクションでは速度に大した影響は出ないかもしれません

    時間が経過するほど、重要視しなければいけない問題ですね。

    整合性が取れた形にする必要があるという、課題が出来ました。

    ありがとうございます。

    • 回答としてマーク s_kurihara 2011年2月25日 1:24
    2011年2月25日 1:23

すべての返信

  • 下記手順で対応できるかと思います。

    ・キューブのメジャーグループのプロパティで、ErrorConfigration設定をカスタムに設定し、
    KeyNotFound設定をIgnoreErrorに変更します。

    ・関連するディメンションのプロパティで、UnknownMember設定をVisibleに設定します。

    上記設定を行い、それぞれ処理をすれば、ディメンションにない値がファクトにある場合、Unknownで
    集計されて表示されます。

    Unknownの表示を<未割当>等に変更したい場合はディメンションのプロパティで、UnknownMemberName
    に設定してやれば変更出来ます。

    ただし、パフォーマンス上の観点からはデータ転送・変換で内部結合でOKとなるようにきれいなデータを
    作成することが推奨されています。(なので、デフォルトではUnknownを出さないような設定になっている
    のだと思います。)

    実際のところ、この対応を完璧に行うことが出来ないケースもあるので、Unknownメンバを有効化する
    対応はよく行います。

     

     

    • 回答としてマーク 山本春海 2011年3月1日 8:38
    2011年2月18日 9:30
  • 若干補足です。

    >キューブの処理でディメンションキーエラーの設定で無視する事は可能ですが、
    >実際のリレーション設定等で外部結合的な設定をしたいです。
    ということですので、ikemotyさんのご助言のように設定すればいいと思います。

    ただ、これは、キューブとディメンジョンの結合が単純な「標準」だけの場合だけです。
    「参照対象」(メジャーがディメンジョンAのキーを持ち、
    ディメンジョンAがディメンジョンBのキーを持つ)の場合、メジャーとディメンジョンAは
    整合性が保たれていることが前提となるのでデータの欠けが生じます。
    (SSASは、メジャーテーブルと、ディメンジョンAのマスタテーブルを内部結合して、
     ディメンジョンBのキーを持ったメジャーデータを取得しようとするため、
     ディメンジョンAのキーに一致しないメジャーテーブルデータは、メジャーデータから
     除外されてしまいます。・・・エラーにもならず、メッセージもなく無視されます。)

    キー不明は、キューブ処理に大きな負荷をかけるので処理パフォーマンスを劣化させるのと、
    キューブが大きくなると、データ不整合へのトラブル対応(原因調査)が複雑になるので、
    「あらかじめ、不明キーをディメンジョンテーブルに用意しておいて、
     メジャーデータ作成時に不明キーに置き換えておく。」
    などの処理でSSAS以前のテーブルデータの状態で整合性を保っておく方が楽です。


    ---------------------------------
    Infospire Kayano
    • 回答としてマーク 山本春海 2011年3月1日 8:38
    2011年2月21日 6:27
  •  

    ありがとうございます。

    ずばりで外部結合が出来ました。

     

    初期のトランザクションでは速度に大した影響は出ないかもしれません

    時間が経過するほど、重要視しなければいけない問題ですね。

    整合性が取れた形にする必要があるという、課題が出来ました。

    ありがとうございます。

    • 回答としてマーク s_kurihara 2011年2月25日 1:24
    2011年2月25日 1:23