属性メンバの並べ替えの設定
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)]の「...」
1 2
3 4
ボタンをクリックします。[キー列]ダゕログが表示されたら、[基となる列]から「区分コ ード」列を選択して[OK]ボタンをクリックします。これで KeyColumns プロパテゖを「区 分コード」へ変更できました。
2. 次に、NameColumn プロパテゖが「区分名」へ設定されていることを確認するために、プ ロパテゖの一覧から「NameColumn」を探し、「...」ボタンをクリックします。
[基になる列]で「区分名」を選択されていることを確認して、[OK]ボタンをクリックしま す。これで NameColumn プロパテゖが「区分名」へ設定されています。
OrderBy プロパティで並べ替えの設定
3. 次に、OrderBy プロパテゖを変更して、並べ替えを「区分コード」で行うようにしてみまし ょう。プロパテゖの一覧から「OrderBy」を探し、「Key」を選択します。
これで並べ替えを KeyColumns へ変更することができます。KeyColumns は、前の手順で
「区分コード」へ変更しているので、これで並べ替えができるようになります。
4. 設定が完了したら、ここまでの変更をキューブへ反映させるために、キューブを右クリックし 1
2
1
て[処理]をクリックし、処理を実行します。
ディメンション ブラウザで結果の確認
5. 属性に対するプロパテゖ変更は、次のようにデゖメンション エデゖタの[ブラウザ]タブ(デ ゖメンション ブラウザ)で確認できます。
階層で「区分名」属性を選択し、区分名のメンバが一覧され、これらが区分コードの順に並べ 変わっていることを確認できます。Excel ピボットテーブルからも次のように確認できます。
1
1 2
区分コード順に 並んでいることを確認
3
コード+名前へ表示名を変更
前の手順のように名前(区分名や商品名など)をコード(区分コードや商品コード)で並べ替える 場合は、名前にコードを付加して、「コード:名前」(1:飲料、2:調味料、…)のように表示し たい場合があります。このように複数の列データから表示名を作るには、データソース ビューを 利用して「名前付き計算」を追加します。
それでは、これを試してみましょう。ここでは、商品区分を「区分コード:区分名」で表示するよ うにしてみましょう。
1. まずは、ソリューション エクスプローラで[データソース ビュー]フォルダの「Northwind J」をダブルクリックして開きます。
次に、「商品区分」テーブルを右クリックして「新しい名前付き計算」をクリックします。[名 前付き計算の作成]ダゕログでは、[列名]へ「区分コードと名前」と入力し、[式]へは次 のように入力して、[OK]ボタンをクリックします。
CONVERT(varchar, 区分コード) + ': ' + 区分名
int 型の「区分コード」列を CONVERT 関数で varhcar 型へ変換して、文字列「: 」と「区 分名」列と文字列連結させています。
2. 続いて、次のように「商品」デゖメンションを開き、名前付き計算として追加した「区分コー ドと名前」を「属性」エリゕへドラッグ&ドロップして属性として追加します。
1
2
3
4
3. 次に、属性として追加した「区分コードと名前」をクリックし、右下の[プロパティ]ウン ドウを開きます。
プロパテゖの一覧から「KeyColumns」を展開して[商品区分.区分コードと名前]の「...」
ボタンをクリックします。[キー列]ダゕログでは、[基となる列]から「区分コード」列を 選択して[OK]ボタンをクリックします。これで KeyColumns プロパテゖを「区分コード」
へ変更できます。
4. 次に、プロパテゖの一覧から「NameColumn」を探し、「...」ボタンをクリックします。
2
1
1
2 3
[名前列]ダゕログでは、[基となる列]から「区分コードと名前」列を選択して[OK]ボ タンをクリックします。これで表示名を作成した名前付き計算へ設定できます。
5. 次に、プロパテゖの一覧から「OrderBy」を探し、「Key」を選択します。
これで並べ替えを区分コードで行えるようになります。
6. 最後に、ここまでの設定をキューブへ反映されるために、キューブを右クリックして[処理]
をクリックし、処理を実行します。
1
2
1
1
7. 以上の結果を確認すると、次のようになります。
Note: データソース ビューでの FriendlyName
データソース ビューでは、実際の列名とは異なる名前(別名)を設定できる FriendlyName というプロパテゖもあり ます。たとえば、次のように「受注明細」テーブルの「数量」列に対して、FriendlyName プロパテゖを「受注数量」
と設定したとします。
このように設定した状態でキューブ ウゖザードを実行してキューブを作成すると、Name プロパテゖが「受注数量」
へ設定されたメジャーが作成されるようになります。
1
2
ここを設定しておくと、キューブ ウゖザード でキューブを作ったときに、次のスラドの
Name を自動設定してくれる
3 1
2