Date ディメンションの変更
このトピックの実習では、ユーザー定義階層を作成し、Date、Month、Calendar Quarter、および Calendar Semester 属性に表示されるメンバ名を変更します。また、属性の複合キーの定義、ディメンション メンバの並べ替え順序の制御、および属性リレーションシップの定義も行います。
名前付き計算の追加
名前付き計算 (計算列として表される SQL 式) をデータ ソース ビューに追加できます。この式は、テーブル内の列として表示され動作します。名前付き計算を使用すると、基になるデータ ソースのテーブルを変更せずに、データ ソース ビュー内の既存のテーブルのリレーショナル スキーマを拡張できます。詳細については、「データ ソース ビューでの名前付き計算の定義 (Analysis Services)」を参照してください。
名前付き計算を追加するには
Adventure Works DW データ ソース ビューを開きます。これには、ソリューション エクスプローラの [データ ソース ビュー] フォルダでこのデータ ソース ビューをダブルクリックします。
[テーブル] ペインで [Date] を右クリックし、[新しい名前付き計算] をクリックします。
[名前付き計算の作成] ダイアログ ボックスの [列名] ボックスに「SimpleDate」と入力します。次に、[式] ボックスに次の CASE ステートメントを入力します。
DATENAME(mm, FullDateAlternateKey) + ' ' + DATENAME(dd, FullDateAlternateKey) + ', ' + DATENAME(yy, FullDateAlternateKey)
この CASE ステートメントは、FullDateAlternateKey 列から年、月、および日付の値を取得します。この新しい列を、FullDateAlternateKey 属性の表示名として使用します。
[OK] をクリックします。次に、[テーブル] ペインで [Date] を展開します。
SimpleDate 名前付き計算が Customer テーブルの列の一覧に表示されます。そのアイコンは、SimpleDate が名前付き計算であることを示しています。
[ファイル] メニューの [すべてを保存] をクリックします。
[テーブル] ペインで [Date] を右クリックし、[データの探索] をクリックします。
[Customer テーブルの探索] ビューで、最後の列を確認します。
データ ソース ビューに [SimpleDate] 列が表示されています。元のデータ ソースは変更されずに、データ ソースから取得された複数の列のデータが適切に連結されています。
[Customer テーブルの探索] ビューを閉じます。
メンバ名に対応する名前付き計算の使用
データ ソース ビューで名前付き計算を作成したら、その名前付き計算を属性のプロパティとして使用できます。
メンバ名に対応する名前付き計算を使用するには
Business Intelligence Development Studio で Date ディメンションのディメンション デザイナを開きます。これを行うには、ソリューション エクスプローラの [ディメンション] ノードで Date ディメンションをダブルクリックします。
[ディメンション構造] タブの [属性] ペインで、[Date Key] 属性をクリックします。
[プロパティ] ウィンドウを開いて、タイトル バーにある [自動的に隠す] ボタンをクリックします。これにより、[プロパティ] ウィンドウが開いたままになります。
[NameColumn] プロパティ フィールド内をクリックし、参照ボタン ([...]) をクリックして、[名前列] ダイアログ ボックスを開きます。
[基になる列] ボックスの一覧で [SimpleDate] を選択し、[OK] をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
階層の作成
新しい階層は、属性を [属性] ペインから [階層] ペインにドラッグすることで作成できます。
階層を作成するには
Date ディメンションのディメンション デザイナで、[属性] ペインの [Calendar Year] 属性を [階層] ペインにドラッグします。
[属性] ペインの [Calendar Semester] 属性を、[階層] ペインの [<新しいレベル>] セル ([Calendar Year] レベルの下) にドラッグします。
[属性] ペインの [Calendar Quarter] 属性を、[階層] ペインの [<新しいレベル>] セル ([Calendar Semester] レベルの下) にドラッグします。
[属性] ペインの [English Month Name] 属性を、[階層] ペインの [<新しいレベル>] セル ([Calendar Quarter] レベルの下) にドラッグします。
[属性] ペインの [Date Key] 属性を、[階層] ペインの [<新しいレベル>] セル ([English Month Name] レベルの下) にドラッグします。
[階層] ペインで、[Hierarchy] 階層のタイトル バーを右クリックし、[名前の変更] を選択して「Calendar Date」と入力します。
Calendar Date 階層で、English Month Name レベルの名前を Calendar Month に、Date Key レベルの名前を Date に変更します。
FullDateAlternateKey 属性はもう使用しないので、[属性] ペインからこの属性を削除します。
[ファイル] メニューの [すべてを保存] をクリックします。
属性リレーションシップの定義
基になるデータで属性リレーションシップがサポートされる場合、属性間の属性リレーションシップを定義する必要があります。属性リレーションシップを定義すると、ディメンション、パーティション、およびクエリの処理速度が上がります。
属性リレーションシップを定義するには
Date ディメンションのディメンション デザイナで、[属性リレーションシップ] タブをクリックします。
ダイアグラムで、[English Month Name] 属性を右クリックし、[新しい属性リレーションシップ] をクリックします。
[属性リレーションシップの作成] ダイアログ ボックスで、[基になる属性] に [English Month Name] を指定します。[関連属性] を [Calendar Quarter] に設定します。
[リレーションシップの種類] ボックスの一覧で、リレーションシップの種類を [固定] に設定します。
リレーションシップの種類を [固定] に設定するのは、時間が経過してもメンバ間のリレーションシップが変化しないためです。
[OK] をクリックします。
ダイアグラムで、[Calendar Quarter] 属性を右クリックし、[新しい属性リレーションシップ] をクリックします。
[属性リレーションシップの作成] ダイアログ ボックスで、[基になる属性] に [Calendar Quarter] を指定します。[関連属性] を [Calendar Semester] に設定します。
[リレーションシップの種類] ボックスの一覧で、リレーションシップの種類を [固定] に設定します。
[OK] をクリックします。
ダイアグラムで、[Calendar Semester] 属性を右クリックし、[新しい属性リレーションシップ] をクリックします。
[属性リレーションシップの作成] ダイアログ ボックスで、[基になる属性] に [Calendar Semester] を指定します。[関連属性] を [Calendar Year] に設定します。
[リレーションシップの種類] ボックスの一覧で、リレーションシップの種類を [固定] に設定します。
[OK] をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
一意なディメンション メンバ名の指定
この実習では、EnglishMonthName、CalendarQuarter、および CalendarSemester 属性で使用する表示名の列を作成します。
一意なディメンション メンバ名を指定するには
Adventure Works DW データ ソース ビューに切り替えます。それには、ソリューション エクスプローラの [データ ソース ビュー] フォルダでこのデータ ソース ビューをダブルクリックします。
[テーブル] ペインで [Date] を右クリックし、[新しい名前付き計算] をクリックします。
[名前付き計算の作成] ダイアログ ボックスの [列名] ボックスに「MonthName」と入力します。次に、[式] ボックスに次のステートメントを入力します。
EnglishMonthName+' '+ CONVERT(CHAR (4), CalendarYear)
このステートメントは、テーブルの各月に表示されている月と年度を連結し、連結した名前を新しい列に表示します。
[OK] をクリックします。
[テーブル] ペインで [Date] を右クリックし、[新しい名前付き計算] をクリックします。
[名前付き計算の作成] ダイアログ ボックスの [列名] ボックスに「CalendarQuarterDesc」と入力します。次に、[式] ボックスに以下の SQL スクリプトを入力します。
'Q' + CONVERT(CHAR (1), CalendarQuarter) +' '+ 'CY ' + CONVERT(CHAR (4), CalendarYear)
この SQL スクリプトは、テーブルの各四半期に表示されている四半期と年度を連結し、連結した名前を新しい列に表示します。
[OK] をクリックします。
[テーブル] ペインで [Date] を右クリックし、[新しい名前付き計算] をクリックします。
[名前付き計算の作成] ダイアログ ボックスの [列名] ボックスに「CalendarSemesterDesc」と入力します。次に、[式] ボックスに以下の SQL スクリプトを入力します。
CASE WHEN CalendarSemester = 1 THEN 'H1' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear) ELSE 'H2' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear) END
この SQL スクリプトは、テーブルの各半期に表示されている半期と年度を連結し、連結した名前を新しい列に表示します。
[OK] をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
複合 KeyColumns の定義と名前列の設定
KeyColumns プロパティは、属性のキーを表す 1 つ以上の列を示します。この実習では、複合 KeyColumns を定義します。
English Month Name 属性の複合 KeyColumns を定義するには
Date ディメンションの [ディメンション構造] タブを開きます。
[属性] ペインで、[English Month Name] 属性をクリックします。
[プロパティ] ウィンドウで [KeyColumns] フィールドをクリックし、参照ボタン ([...]) をクリックします。
[キー列] ダイアログ ボックスの [使用できる列] ボックスの一覧で [CalendarYear] 列を選択し、[>] をクリックします。
[EnglishMonthName] 列と [CalendarYear] 列が [キー列] ボックスの一覧に表示されるようになりました。
[OK] をクリックします。
EnglishMonthName 属性の NameColumn プロパティを設定するには、プロパティ ウィンドウで [NameColumn] フィールドをクリックし、参照ボタン ([...]) をクリックします。
[名前列] ダイアログ ボックスの [基になる列] ボックスの一覧で [MonthName] を選択し、[OK] をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
Calendar Quarter 属性の複合 KeyColumns を定義するには
[属性] ペインで、[Calendar Quarter] 属性をクリックします。
[プロパティ] ウィンドウで [KeyColumns] フィールドをクリックし、参照ボタン ([...]) をクリックします。
[キー列] ダイアログ ボックスの [使用できる列] ボックスの一覧で [CalendarYear] 列を選択し、[>] をクリックします。
[CalendarQuarter] 列と [CalendarYear] 列が [キー列] ボックスの一覧に表示されるようになりました。
[OK] をクリックします。
Calendar Quarter 属性の NameColumn プロパティを設定するには、プロパティ ウィンドウで [NameColumn] フィールドをクリックし、参照ボタン ([...]) をクリックします。
[名前列] ダイアログ ボックスの [基になる列] ボックスの一覧で [CalendarQuarterDesc] を選択し、[OK] をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
Calendar Semester 属性の複合 KeyColumns を定義するには
[属性] ペインで、[Calendar Semester] 属性をクリックします。
[プロパティ] ウィンドウで [KeyColumns] フィールドをクリックし、参照ボタン ([...]) をクリックします。
[キー列] ダイアログ ボックスの [使用できる列] ボックスの一覧で [CalendarYear] 列を選択し、[>] をクリックします。
[CalendarSemester] 列と [CalendarYear] 列が [キー列] ボックスの一覧に表示されるようになりました。
[OK] をクリックします。
Calendar Semester 属性の NameColumn プロパティを設定するには、プロパティ ウィンドウで [NameColumn] フィールドをクリックし、参照ボタン ([...]) をクリックします。
[名前列] ダイアログ ボックスの [基になる列] ボックスの一覧で [CalendarSemesterDesc] を選択し、[OK] をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
変更の配置と表示
属性と階層を変更したら、変更を表示する前に変更を配置し、関連するオブジェクトを再処理する必要があります。
変更を配置して表示するには
BI Development Studio で、[ビルド] メニューの [Analysis Services Tutorial の配置] をクリックします。
"配置が正常に完了しました" というメッセージが表示されたら、Date ディメンションのディメンション デザイナの [ブラウザ] タブをクリックし、ディメンション デザイナのツール バーにある再接続アイコンをクリックします。
[階層] ボックスの一覧から [Calendar Quarter] を選択します。Calendar Quarter 属性階層のメンバを確認します。
名前付き計算を作成して名前として使用しているため、Calendar Quarter 属性階層のメンバ名がわかりやすい名前になっています。Calendar Quarter 属性階層に、各年度の各四半期がメンバとして表示されるようになりました。ただし、これらのメンバは年度順に並んでいません。まず四半期順に並べ替えられ、次に年度順に並べ替えられています。このトピックの次の実習では、この属性階層のメンバが年度順に並べられ、さらに四半期順に並べられるように設定します。
English Month Name および Calendar Semester 属性階層のメンバを確認します。
この 2 つの階層のメンバも日時順には並んでいません。EnglishMonthName は月、CalendarSemester は半期の順にまず並べ替えられ、その後、年度順に並べ替えられています。このトピックの次の実習では、この並べ替え順序が変わるように複合キーを修正します。
複合キーのメンバの順序を変更することによる並べ替え順序の変更
この実習では、複合キーを構成するキーの順序を変更することにより並べ替え順序を変更します。
複合キーのメンバの順序を変更するには
Date ディメンションのディメンション デザイナで、[ディメンション構造] タブをクリックします。次に、[属性] ペインで [Calendar Semester] を選択します。
[プロパティ] ウィンドウで、OrderBy プロパティの値を確認します。Key に設定されています。
Calendar Semester 属性階層のメンバは、キー値に基づいて並べ替えられます。複合キーにより、メンバのキーがまず 1 番目のキーに基づいて並べ替えられ、次に 2 番目のキーに基づいて並べ替えられています。つまり、Calendar Semester 属性階層のメンバはまず半期順に並べ替えられ、続いて年度順に並べ替えられています。
KeyColumns プロパティの値を変更するため、[プロパティ] ウィンドウで参照ボタン ([...]) をクリックします。
[キー列] ダイアログ ボックスの [キー列] ボックスの一覧で、[CalendarSemester] が選択されていることを確認します。次に、下矢印をクリックし、この複合キーのメンバの順序を逆にします。[OK] をクリックします。
CalendarSemester 属性階層のメンバが、まず年度順に並べ替えられ、続いて半期順に並べ替えられるようになりました。
[属性] ペインで [Calendar Quarter] を選択した後、[プロパティ] ウィンドウで、KeyColumns プロパティの参照ボタン ([...]) をクリックします。
[キー列] ダイアログ ボックスの [キー列] ボックスの一覧で、[CalendarQuarter] が選択されていることを確認します。次に、下矢印をクリックし、この複合キーのメンバの順序を逆にします。[OK] をクリックします。
CalendarQuarter 属性階層のメンバが、まず年度順に並べ替えられ、続いて四半期順に並べ替えられるようになりました。
[属性] ペインで [English Month Name] を選択した後、[プロパティ] ウィンドウで、KeyColumns プロパティの参照ボタン ([...]) をクリックします。
[キー列] ダイアログ ボックスの [キー列] ボックスの一覧で、[EnglishMonthName] が選択されていることを確認します。次に、下矢印をクリックし、この複合キーのメンバの順序を逆にします。[OK] をクリックします。
EnglishMonthName 属性階層のメンバが、まず年度順に並べ替えられ、続いて月順に並べ替えられるようになりました。
BI Development Studio で、[ビルド] メニューの [Analysis Services Tutorial の配置] をクリックします。配置が正常に完了したら、Date ディメンションのディメンション デザイナで [ブラウザ] タブをクリックします。
[ブラウザ] タブのツール バーで、再接続アイコンをクリックします。
Calendar Quarter および Calendar Semester 属性階層のメンバを確認します。
これらの階層のメンバは、日時順に並べ替えられるようになりました。まず年度順に並べ替えられ、続いて Calendar Quarter は四半期順に、CalendarSemester は半期順に並べ替えられています。
English Month Name 属性階層のメンバを確認します。
属性階層のメンバは、まず年度順に並べ替えられ、続いて月名順 (アルファベット順) に並べ替えられるようになりました。これは、データ ソース ビューの EnglishCalendarMonth 列のデータ型が、基になるリレーショナル データベースでの nvarchar データ型に基づき、文字列型となっているためです。各年度の月を古い順に並べ替えられるようにする方法の詳細については、「2 次属性に基づく属性メンバの並べ替え」を参照してください。