none
ディメンションのOrderByAttribute属性について(Analysis Services 2005)

    質問

  • SQL Server 2005 Analysis Servicesを利用していての質問です。

    顧客ごとの商品の購買記録について分析をしているのですが、商品の並び方を変えたいと考えています。MSDNや海外サイトを参考にディメンションのOrderByAttributeというプロパティを活用すると、できそうなところまでアタリはつけたのですが、配置時に下記のエラーが出てしまってうまく実現できません。

    OLAPストレージ エンジンエラー:'商品名' 属性('MEISAI' ディメンション、'Sample' データベース)を処理中にエラーが発生しました。

    物理テーブルは以下のような構成です。
    ○伝票ヘッダーテーブル
    ○伝票明細テーブル
    ○顧客マスタ
    ○商品マスタ

    ・ヘッダーの主キーは伝票番号とシステムIDの2つ
    ・明細の主キーは伝票番号とシステムIDと行番号と入力順番号の4つ
    ・伝票ヘッダーと明細は伝票番号とシステムIDの複合主キーで関連づいてます。
    ・ヘッダーには顧客IDがあり、それと顧客マスタが紐づいて顧客名が取得できます
     また、注文日付もあります。
    ・明細には商品IDがあり、それと商品マスタが紐づいて商品名が取得できます
     また、数量と金額があります。

    メジャーとディメンションの基本的な構築はでき、キューブブラウザで参照したときに
    顧客名や商品名、注文日付や数量×金額の小計などの計算値も確認できています。

    ただ、以下のように出力した際に

              注文日付
    ______________________________
    伝票番号 商品名 |【価格】【数量】【小計】 
         商品名 |【価格】【数量】【小計】 
         商品名 |【価格】【数量】【小計】 
    伝票番号 商品名 |【価格】【数量】【小計】 
         商品名 |【価格】【数量】【小計】 
    ・・・・

    この商品名の並び順が商品マスタの商品コード順の並びになっているのですが、
    ここの並びを明細の行番号順に変えたいと考えています。

    明細には行番号のフィールドがありますので、その行番号の属性を
    ディメンションに追加し、商品名属性の新しい属性リレーションシップの下に
    紐づけて以下のプロパティの設定をしています。

    Attribute:Sort
    Cardinality:Many
    Name:Sort
    RelationshipType:Rigid
    Visible:True

    また、追加した属性自体のプロパティは以下のようにしています。
    AttributeHierarchyEnabled:False
    AttributeHierarchyOptimizedState:NotOptimized
    AttributeHierarchyOrderd:False
    AttributeHierarchyVisible:False

    さらに商品名属性のプロパティで以下のようにしています。
    OrderBy:AttributeKey
    OrderByAttribute:Sort

    これで設定して配置しようとすると前述のエラーが発生する状態です。


    そもそもOrderByAttributeの使い方が間違っているかもしれませんが、、
    識者の方原因や対処がわかりましたらご教授いただければと思います。

    2012年2月24日 10:18

回答

  • すみません、自己解決しました。
    OrderByAttributeを利用しなくても、階層とレベルの個所で新規に階層を作成し、並び順の下階層に商品名を配置、さらにキューブブラウザで参照する商品名をディメンション直下の商品名ではなく、先ほど作成した階層以下の商品名を使うことで行番号順に並べることができました。

    • 回答としてマーク CrimsonPork 2012年2月27日 1:36
    2012年2月27日 0:39