• 検索結果がありません。

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