ディメンションを作成した直後は自分自身の属性の表示名称をもとに並び替えられるようになっているため、名前に関連する属性は文字コード順で並び替えられてしまいます。また、数値であっても文字列として並び替えられるので「1,10,11,12,2,3…」のようになってしまいます。
並び替えの変更で一番簡単なのはKeyColumnを変更し、Orderby をKeyにすることです。手順は以下のようになります。
少し手順が多いので箇条書きで書きます。
■キーによる並び替え設定手順
- 並び順を変更するディメンション(.dim)を開く
- 設定変更対象の属性を選択、プロパティを開く
- KeyColumns プロパティからキー列を開き、他の列の値で並び替えしたい列を右のリストに移動させる。複数の列選択可、上の項目ほど優先度が高い
- NameColumn を開き、表示名称を選択する
- OrderBy を「Key」に変更
以上の方法で別の列の値をもとに並び替えられるので確認してみてください。
上記の方法は簡単なのですが欠点が一つあり、キー項目を変えてしまっているため、キーを使用している箇所に影響が出る場合があります。たとえば、Reporting Services のレポートではフィルターをキーで管理しているため、レポートのフィルターで特定の値をフィルターで設定した後に、KeyColumns で設定した値が変更されてしまうと、レポートにフィルター設定が無効になってしまう場合があります。特に設定したキーが自動付番であったりすると確実に影響します。
そこで別な並び替えの設定としては「属性キー」を使用した並び替えを行う方法があります。こちらは対象属性のキーを変更しないため上記のように見た目の値が変更されていないにも関わらず内部のキーが変わってしまうという事態を防ぐことができます。ただし、データの持ち方はシステムそれぞれですので、どちらを採用するかは開発者の判断に任せます。
属性キーを使用した並び替えの設定は以下のようになります。
■属性キーによる並び替え設定手順
- 並び順を変更するディメンション(.dim)を開く
- 「属性リレーションシップ」のタブを選択
- 並び替えを変更する属性を右クリックして「新しい属性リレーションシップ」を選択
- 属性リレーションシップの作成ダイアログで「関連属性」の名前から並び替えの基準にしたい列(属性)を選択、OKボタンをクリック
- 「ディメンション構造」タブをクリック
- 並び替え変更対象の属性を選択し、プロパティを表示
- OrderBy を「AttributeKey」に変更
- OrderByAttribute から先ほど並び替え対象に選択した属性を選択
一応属性の少ないシンプルなディメンションであれば上記の手順で並び替えは可能なのですが、階層化されていたり、多くの属性が存在する場合は手順が複雑になるかもしれません。