STEP 3. 応用的なキューブの設定
3.1 属性メンバーの並べ替えの設定
属性メンバーの並べ替えの設定
char や varchar などの文字データ(商品名や区分名、仕入先名、社員名など)の属性メンバー
は、デフォルトでは名前の順に並べ替えられます。しかし、名前順ではなく、コード順で並べ替え たい場合が多くあります(商品名なら商品コード、区分名なら区分コードで並べ替えるなど)。
また、ピボットテーブルでは、名前だけでなくコードも併せて表示したい場合があります。しかし、
デフォルトでは、次のように1対1の関係のあるデータでも階層的に表示されてしまいます。
これを階層的ではなく、並列(横並び)で表示するには、次のように Excel ピボットテーブルの
[デザイン]タブで[レポートのレイアウト]を「表形式で表示」をクリックします。
この例では、区分名を左へ配置しているので、区分名の順にメンバーが並んでいて、区分コード順 ではないことを確認できます。このような場合にも、属性(区分名)のプロパティを変更すること
区分名と区分コード が階層的に表示され
てしまう
1
2
区分名と区分コード を並べて表示
で、区分コード順に並べ替えることができるようになります。
KeyColumns、NameColumn、OrderBy プロパティ
属性の並べ替えに関わるプロパティには、KeyColumns、NameColumn、OrderBy の 3 つがあ り、KeyColumns はキーとなる列、NameColumn は表示用の列、OrderBy は並べ替えで利 用する列を指定することができます。デフォルトでは、KeyColumns と NameColumn は該当列
(区分名なら区分名)が設定され、OrderBy には「Name」が設定されているので、NameColumn に設定された列で並べ替えるようになっています。
したがって、KeyColumns に名前が設定されている場合は、同じ名前のデータが同一視されてし まうという問題も抱えています(商品名などで、商品コードが違うのに、同じ名前の商品があった 場合は、同じ商品の売上げとして認識されてしまう)。これを回避するには(名前ではなく、コー ドでデータを識別したい場合には)、KeyColumns へコードを設定し、NameColumn へ名前を設 定するようにします。
Let's Try
それでは、これを試してみましょう。ここでは「区分名」属性の KeyColumns を「区分コード」
へ変更して、OrderBy へ「区分コード」を設定するようにしてみましょう。
1. まず、「区分名」属性が含まれている「商品」ディメンションをダブル クリックして開きます。
属性の一覧から「区分名」を選択し、右下の[プロパティ]ウィンドウを開きます。プロパテ ィの一覧から「KeyColumns」を探し、これを展開して[商品区分.区分名(WChar)]の「...」
ボタンをクリックします。[キー列]ダイアログが表示されたら、[基になる列]から「区分コ ード」列を選択して、[OK]ボタンをクリックします。これで KeyColumns プロパティを「区
1 2
3 4
分コード」へ変更できました。
2. 次に、NameColumn プロパティが「区分名」へ設定されていることを確認するために、プ ロパティの一覧から「NameColumn」を探し、「...」ボタンをクリックします。
[名前列]ダイアログが表示されて、[基になる列]で「区分名」を選択されていることを確 認して、[OK]ボタンをクリックします。これで NameColumn プロパティが「区分名」へ 設定されています。
OrderBy プロパティで並べ替えの設定
3. 次に、OrderBy プロパティを変更して、並べ替えを「区分コード」で行うようにしてみまし
ょう。プロパティの一覧から「OrderBy」を探し、「Key」へ変更します。
これで並べ替えを KeyColumns へ変更することができます。KeyColumns は、前の手順で
「区分コード」へ変更しているので、これで並べ替えができるようになります。
1
2
1
以上で、プロパティの設定が完了です。ツールバーの[保存]ボタンをクリックして定義を保 存しておきます。
4. 定義を保存したら、ここまでの変更をキューブへ反映させるために、キューブを右クリックし て[処理]をクリックし、処理を実行します。
ディメンション ブラウザーで結果の確認
5. 属性に対するプロパティ変更は、次のようにディメンション エディターの[ブラウザー]タ ブ(ディメンション ブラウザー)から確認することができます。
[階層]で「区分名」属性を選択すると、区分名のメンバーが表示され、区分コードの順に並 べ変わっていることを確認できます。Excel ピボットテーブルからも次のように確認できます。
1
1 2
区分コード順に 並んでいることを確認
3
コード+名前へ表示名を変更
前の手順のように名前(区分名や商品名など)をコード(区分コードや商品コード)で並べ替える 場合は、名前にコードを付加して、「コード:名前」(1:飲料、2:調味料、…)のように表示し たい場合があります。このように複数の列データから表示名を作るには、データ ソース ビューを 利用して「名前付き計算」を追加します。
それでは、これを試してみましょう。ここでは、商品区分を「区分コード:区分名」で表示するよ うにしてみましょう。
1. まずは、ソリューション エクスプローラーで[データ ソース ビュー]フォルダーの
「Northwind J」をダブル クリックして開きます。
次に、「商品区分」テーブルを右クリックして「新しい名前付き計算」をクリックします。[名 前付き計算の作成]ダイアログでは、[列名]へ「区分コードと名前」と入力し、[式]へは次 のように入力して、[OK]ボタンをクリックします。
CONVERT(varchar, 区分コード) + ': ' + 区分名
int 型の「区分コード」列を CONVERT 関数で varchar 型へ変換して、文字列「: 」と「区
1
2
3
4
分名」列を文字列連結させています。
2. 続いて、次のように「商品」ディメンションを開き、名前付き計算として追加した「区分コー ドと名前」を「属性」ペインへドラッグ&ドロップして属性として追加します。
3. 次に、属性として追加した「区分コードと名前」をクリックし、右下の[プロパティ]ウィン ドウを開きます。
プロパティの一覧から「KeyColumns」を展開して[商品区分.区分コードと名前]の「...」
ボタンをクリックします。[キー列]ダイアログが表示されたら、[基になる列]から「区分コ ード」列を選択して、[OK]ボタンをクリックします。これで KeyColumns プロパティを「区 分コード」へ変更できます。
2
1
1
2 3
4
4. 次に、プロパティの一覧から「NameColumn」を探し、「...」ボタンをクリックします。
[名前列]ダイアログが表示されたら、[基になる列]から「区分コードと名前」列を選択し て、[OK]ボタンをクリックします。これで表示名を作成した名前付き計算列へ設定できます。
5. 次に、プロパティの一覧から「OrderBy」を探し、「Key」を選択します。
これで並べ替えを区分コードで行えるようになります。
6. 最後に、ここまでの設定をキューブへ反映されるために、キューブを右クリックして[処理]
をクリックし、処理を実行します。
1
2
3
1
7. 以上の結果を確認すると、次のようになります。
「1: 飲料」や「2: 調味料」のおうに結果が表示されることを確認できます。
1
2
3
1 2
Note: データ ソース ビューでの FriendlyName
データ ソース ビューでは、実際の列名とは異なる名前(別名)を設定できる FriendlyName というプロパティ もあります。たとえば、次のように「受注明細」テーブルの「数量」列に対して、FriendlyName プロパティを「受 注数量」へ設定したとします。
このように設定した状態でキューブ ウィザードを実行してキューブを作成すると、Name プロパティが「受注数 量」へ設定されたメジャーが作成されるようになります。
1
2
ここを設定しておくと、キューブ ウィザード でキューブを作ったときに、次のスライドの
Name を自動設定してくれる
2 1
3