[SSAS] 名称などのディメンションの並び順を別の属性(列)の値をもとに並び替えるようにする

ディメンションを作成した直後は自分自身の属性の表示名称をもとに並び替えられるようになっているため、名前に関連する属性は文字コード順で並び替えられてしまいます。また、数値であっても文字列として並び替えられるので「1,10,11,12,2,3…」のようになってしまいます。

並び替えの変更で一番簡単なのはKeyColumnを変更し、Orderby をKeyにすることです。手順は以下のようになります。

少し手順が多いので箇条書きで書きます。

■キーによる並び替え設定手順

  1. 並び順を変更するディメンション(.dim)を開く
  2. 設定変更対象の属性を選択、プロパティを開く
  3. KeyColumns プロパティからキー列を開き、他の列の値で並び替えしたい列を右のリストに移動させる。複数の列選択可、上の項目ほど優先度が高い
  4. NameColumn を開き、表示名称を選択する
  5. OrderBy を「Key」に変更

以上の方法で別の列の値をもとに並び替えられるので確認してみてください。

上記の方法は簡単なのですが欠点が一つあり、キー項目を変えてしまっているため、キーを使用している箇所に影響が出る場合があります。たとえば、Reporting Services のレポートではフィルターをキーで管理しているため、レポートのフィルターで特定の値をフィルターで設定した後に、KeyColumns で設定した値が変更されてしまうと、レポートにフィルター設定が無効になってしまう場合があります。特に設定したキーが自動付番であったりすると確実に影響します。

 

そこで別な並び替えの設定としては「属性キー」を使用した並び替えを行う方法があります。こちらは対象属性のキーを変更しないため上記のように見た目の値が変更されていないにも関わらず内部のキーが変わってしまうという事態を防ぐことができます。ただし、データの持ち方はシステムそれぞれですので、どちらを採用するかは開発者の判断に任せます。

属性キーを使用した並び替えの設定は以下のようになります。

■属性キーによる並び替え設定手順

  1. 並び順を変更するディメンション(.dim)を開く
  2. 「属性リレーションシップ」のタブを選択
  3. 並び替えを変更する属性を右クリックして「新しい属性リレーションシップ」を選択
  4. 属性リレーションシップの作成ダイアログで「関連属性」の名前から並び替えの基準にしたい列(属性)を選択、OKボタンをクリック
  5. 「ディメンション構造」タブをクリック
  6. 並び替え変更対象の属性を選択し、プロパティを表示
  7. OrderBy を「AttributeKey」に変更
  8. OrderByAttribute から先ほど並び替え対象に選択した属性を選択

一応属性の少ないシンプルなディメンションであれば上記の手順で並び替えは可能なのですが、階層化されていたり、多くの属性が存在する場合は手順が複雑になるかもしれません。

 

【参考】

]]>

クライアントに表示される特定のディメンションの属性を非表示にする方法 [SQL Server Analysis Services]

キューブとディメンションを作成しクライアントに公開する際、不要なディメンションの属性が公開されてしまう場合があります。特にキーとなる属性は公開しなくてもいい場合がありますが、ディメンションのキーとなるため削除するとディメンションとして成り立たなくなってしまいます。

クライアントに公開したくない場合は以下の設定で非公開にできます。(見えないだけなのでディメンション上では存在することになります)

【手順】

  1. 作成したディメンションを開く
  2. 「ディメンション構造」のタブを選択し、属性の項目から非表示にした属性を選択
  3. 属性を右クリックしメニューから「プロパティ」を選択
  4. プロパティから「詳細設定」グループの「AttributeHierarchyVisible」を「False」に設定
]]>