このトピックのタスクでは、ユーザー定義階層を作成し、Date、Month、Calendar Quarter、Calendar Semester 属性に表示されるメンバー名を変更します。 また、属性の複合キーを定義し、ディメンション メンバーの並べ替え順序を制御し、属性リレーションシップを定義します。
名前付き計算の追加
名前付き計算 (計算列として表される SQL 式) をデータ ソース ビューのテーブルに追加できます。 式が表示され、テーブル内の列として動作します。 名前付き計算を使用すると、基になるデータ ソースのテーブルを変更することなく、データ ソース ビュー内の既存のテーブルのリレーショナル スキーマを拡張できます。 詳細については、「データ ソース ビューでの名前付き計算の定義 (Analysis Services)」を参照してください。
名前付き計算を追加するには
Adventure Works DW 2012 データ ソース ビューを開くには、ソリューション エクスプローラーの [データ ソース ビュー] フォルダーでダブルクリックします。
[テーブル] ウィンドウの下部にある [
Date] を右クリックし、[新しい名前付き計算] をクリックします。[名前付き計算の作成] ダイアログ ボックスで、[列名] ボックスに「
SimpleDate」と入力し、次のDATENAMEステートメントを入力するか、コピーして [式] ボックスに貼り付けます。DATENAME(mm, FullDateAlternateKey) + ' ' + DATENAME(dd, FullDateAlternateKey) + ', ' + DATENAME(yy, FullDateAlternateKey)DATENAMEステートメントは、FullDateAlternateKey 列から年、月、日の値を抽出します。 この新しい列は、FullDateAlternateKey 属性の表示名として使用します。[OK] をクリックし、[テーブル] ウィンドウで
Date展開します。名前付き計算
SimpleDate日付テーブルの列の一覧に、名前付き計算であることを示すアイコンが表示されます。[ファイル] メニューの [すべてを保存] をクリックします。
[ テーブル ] ウィンドウで、
Dateを右クリックし、[ データの探索] をクリックします。右にスクロールして、[ 日付テーブルの探索 ] ビューの最後の列を確認します。
SimpleDate列がデータ ソース ビューに表示され、元のデータ ソースを変更せずに、基になるデータ ソースの複数の列のデータが正しく連結されていることに注意してください。[日付テーブルの探索] ビューを閉じます。
メンバー名の名前付き計算の使用
データ ソース ビューで名前付き計算を作成した後、名前付き計算を属性のプロパティとして使用できます。
メンバー名に対して名前付き計算を使用するには
SQL Server Data Tools (SSDT) で Date ディメンションの ディメンション デザイナー を開きます。 これを行うには、ソリューション エクスプローラーの [ディメンション] ノードで
Dateディメンションをダブルクリックします。[ディメンション構造] タブの [属性] ウィンドウで、[日付キー] 属性をクリックします。
[プロパティ] ウィンドウが開かない場合は、[プロパティ] ウィンドウを開き、タイトル バーの [自動非表示 ] ボタンをクリックして開いたままにします。
ウィンドウの下部付近にある NameColumn プロパティ フィールドをクリックし、省略記号参照 (...) ボタンをクリックして [ 名前列 ] ダイアログ ボックスを開きます。
ソース列の一覧の下部にある
SimpleDateを選択し、[OK] をクリックします。[ファイル] メニューの [すべてを保存] をクリックします。
階層の作成
[ 属性] ペイン から [階層] ペインに属性をドラッグすることで、新しい 階層 を作成できます。
階層を作成するには
Dateディメンションのディメンション デザイナーの [ディメンション構造] タブで、[属性] ウィンドウから [階層] ウィンドウに Calendar Year 属性をドラッグします。Calendar Semester 属性を 属性 ウィンドウから 階層ウィンドウの カレンダー年レベル の下にある 新しいレベル> のセルにドラッグします。
Calendar Quarter 属性を 属性 ウィンドウから 階層 ウィンドウの 新しいレベル セルにドラッグし、Calendar Semester レベルの下に配置します。
[属性] ウィンドウの 英語の月名 属性を、[階層] ウィンドウの [カレンダー四半期] レベルの下の [<新しいレベル>] セルにドラッグします。
[日付キー] 属性を [属性] ペインから [階層] ペインの [英語の月名] レベルの下にある [<新しいレベル>] セルにドラッグします。
[ 階層 ] ウィンドウで、 階層 階層のタイトル バーを右クリックし、[名前の 変更] をクリックし、「
Calendar Date」と入力します。右クリック コンテキスト メニューを使用して、
Calendar Date階層で、 英語の月名 レベルの名前をCalendar Monthに変更し、 日付キー レベルの名前をDateに変更します。[属性] ウィンドウから 完全な日付の代替キー 属性を削除します。この 属性 は使用されません。 [オブジェクトの削除] 確認ウィンドウで [OK] をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
属性リレーションシップの定義
基になるデータでサポートされている場合は、属性間の属性リレーションシップを定義する必要があります。 属性リレーションシップを定義すると、ディメンション、パーティション、クエリの処理が高速化されます。
属性リレーションシップを定義するには
Dateディメンションのディメンション デザイナーで、[属性リレーションシップ] タブをクリックします。ダイアグラムで、[ 英語の月名 ] 属性を右クリックし、[ 新しい属性リレーションシップ] をクリックします。
[ 属性リレーションシップの作成 ] ダイアログ ボックスの [ソース属性 ] は [英語の月名] です。 関連属性をカレンダー四半期に設定します。
[ リレーションシップの種類 ] の一覧で、リレーションシップの種類を [固定] に設定します。
リレーションシップの種類は Rigid です。メンバー間のリレーションシップは時間の経過と同時に変化しないためです。
OK をクリックします。
ダイアグラムで、[ カレンダー四半期 ] 属性を右クリックし、[ 新しい属性リレーションシップ] をクリックします。
[ 属性リレーションシップの作成 ] ダイアログ ボックスの [ソース属性 ] は [カレンダー四半期] です。 関連属性をカレンダーの半期に設定します。
[ リレーションシップの種類 ] の一覧で、リレーションシップの種類を [固定] に設定します。
OK をクリックします。
ダイアグラムで、[ Calendar Semester ] 属性を右クリックし、[ 新しい属性リレーションシップ] をクリックします。
[ 属性リレーションシップの作成 ] ダイアログ ボックスの [ソース属性 ] は Calendar Semester です。 関連属性をカレンダー年に設定します。
[ リレーションシップの種類 ] の一覧で、リレーションシップの種類を [固定] に設定します。
OK をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
ユニークなディメンションメンバー名の提供
このタスクでは、 EnglishMonthName、 CalendarQuarter、 CalendarSemester 属性で使用されるわかりやすい名前列を作成します。
一意のディメンションメンバー名を提供するために
Adventure Works DW 2012 データ ソース ビューに切り替えるには、ソリューション エクスプローラーの [データ ソース ビュー] フォルダーでダブルクリックします。
[ テーブル ] ウィンドウで、[
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 を定義します。
英語の月名属性のコンポジットキーカラムを定義するには
日付ディメンションの [ ディメンション構造 ] タブを開きます。
[属性] ウィンドウで、[英語の月名] 属性をクリックします。
[ プロパティ ] ウィンドウで、 KeyColumns フィールドをクリックし、参照ボタン (...) をクリックします。
[ キー列 ] ダイアログ ボックスの [ 使用可能な列 ] ボックスの一覧で、 CalendarYear 列を選択し、[ > ] ボタンをクリックします。
EnglishMonthName 列と CalendarYear 列が [キー列] リストに表示されるようになりました。
OK をクリックします。
EnglishMonthName 属性の NameColumn プロパティを設定するには、[プロパティ] ウィンドウの [NameColumn] フィールドをクリックし、参照ボタン (...) をクリックします。
[ 名前列 ] ダイアログ ボックスの [ ソース列 ] ボックスの一覧で
MonthNameを選択し、[OK] をクリック します。[ファイル] メニューの [すべてを保存] をクリックします。
Calendar Quarter 属性の複合 KeyColumns を定義するには
「属性」ウィンドウで、「カレンダー四半期」属性をクリックします。
[ プロパティ ] ウィンドウで、 KeyColumns フィールドをクリックし、参照ボタン (...) をクリックします。
[ キー列 ] ダイアログ ボックスの [ 使用可能な列 ] ボックスの一覧で、 CalendarYear 列を選択し、[ > ] ボタンをクリックします。
CalendarQuarter 列と CalendarYear 列が [キー列] リストに表示されるようになりました。
OK をクリックします。
Calendar Quarter 属性の NameColumn プロパティを設定するには、[プロパティ] ウィンドウの [NameColumn] フィールドをクリックし、参照ボタン (...) をクリックします。
[ 名前列 ] ダイアログ ボックスの [ ソース列 ] ボックスの一覧で
CalendarQuarterDescを選択し、[OK] をクリック します。[ファイル] メニューの [すべてを保存] をクリックします。
カレンダー学期属性の複合キー列を定義するには
[属性]ペインで、[Calendar Semester]属性をクリックします。
[ プロパティ ] ウィンドウで、 KeyColumns フィールドをクリックし、参照ボタン (...) をクリックします。
[ キー列 ] ダイアログ ボックスの [ 使用可能な列 ] ボックスの一覧で、列 CalendarYear を選択し、[ > ] ボタンをクリックします。
CalendarSemester 列と CalendarYear 列が [キー列] リストに表示されるようになりました。
OK をクリックします。
Calendar Semester 属性の NameColumn プロパティを設定するには、プロパティ ウィンドウの NameColumn フィールドをクリックし、参照ボタン (...) をクリックします。
[ 名前列 ] ダイアログ ボックスの [ ソース列 ] ボックスの一覧で
CalendarSemesterDescを選択し、[OK] をクリック します。[ファイル] メニューの [すべてを保存] をクリックします。
変更の展開と表示
属性と階層を変更したら、変更を表示する前に、変更をデプロイし、関連オブジェクトを再処理する必要があります。
変更をデプロイして表示するには
SQL Server Data Tools の [ビルド ] メニューで、[ Analysis Services チュートリアルの展開] をクリックします。
[配置が正常に完了しました] メッセージが表示されたら、
Dateディメンションのディメンション デザイナーの [ブラウザー] タブをクリックし、デザイナーのツール バーの [再接続] ボタンをクリックします。階層 リストから カレンダー四半期 を選択します。 Calendar Quarter 属性階層のメンバーを確認します。
名前として使用する名前付き計算を作成したため、 Calendar Quarter 属性階層のメンバーの名前がより明確で使いやすいことに注意してください。 各年の各 四半期の Calendar Quarter 属性階層にメンバーが存在するようになりました。 メンバーは、時系列順に並べ替えされません。 代わりに、四半期ごとに並べ替え、次に年単位で並べ替えられます。 このトピックの次のタスクでは、この属性階層のメンバーを年順に並べ替え、次に四半期順に並べ替えるために、この動作を変更します。
英語の月名属性階層と Calendar Semester 属性階層のメンバーを確認します。
これらの階層のメンバーも時系列で並べ替えされないことに注意してください。 代わりに、それぞれ月または半期ごとに並べ替え、次に年単位で並べ替えられます。 このトピックの次のタスクでは、この並べ替え順序を変更するようにこの動作を変更します。
並べ替え順序を変更するために、複合キーのメンバー順序を変更する
このタスクでは、複合キーを構成するキーの順序を変更することで、並べ替え順序を変更します。
複合キー メンバーの順序を変更するには
Dateディメンションのディメンション デザイナーの [ディメンション構造] タブを開き、[属性] ウィンドウで [Calendar Semester] を選択します。[プロパティ] ウィンドウで、 OrderBy プロパティの値を確認します。 キーとして設定されています。
Calendar Semester 属性階層のメンバーは、キー値で並べ替えられます。 複合キーでは、メンバー キーの順序は最初に最初のメンバー キーの値に基づき、次に 2 番目のメンバー キーの値に基づきます。 言い換えると、 Calendar Semester 属性階層のメンバーは、最初に半期ごとに並べ替え、次に年順に並べ替えられます。
[プロパティ] ウィンドウで、省略記号参照ボタン (...) をクリックして 、KeyColumns プロパティ値を変更します。
[ キー列 ] ダイアログ ボックスの [ キー列 ] ボックスの一覧で、 CalendarSemester が選択されていることを確認し、下矢印をクリックして、この複合キーのメンバーの順序を逆にします。 OK をクリックします。
属性階層のメンバーは、最初に年順に並べ替え、次に半期順に並べ替えられるようになりました。
属性ペインで[Calendar Quarter]を選択し、[プロパティ]ウィンドウのKeyColumnsプロパティに対する省略記号参照ボタン(...)をクリックします。
[ キー列] ダイアログ ボックスの [ キー列 ] ボックスの一覧で、 CalendarQuarter が選択されていることを確認し、下矢印をクリックして、この複合キーのメンバーの順序を逆にします。 OK をクリックします。
属性階層のメンバーは、最初に年順に並べ替えられた後、四半期順に並べ替えられるようになりました。
[属性] ウィンドウで [英語の月名] を選択し、[プロパティ] ウィンドウの KeyColumns プロパティの省略記号ボタン (...) をクリックします。
[ キー列] ダイアログ ボックスの [ キー列 ] ボックスの一覧で、 EnglishMonthName が選択されていることを確認し、下矢印をクリックして、この複合キーのメンバーの順序を逆にします。 OK をクリックします。
属性階層のメンバーは、最初に年順に並べ替えられた後、月順に並べ替えられるようになりました。
SQL Server Data Tools の [ビルド ] メニューで、[ Analysis Services チュートリアルの展開] をクリックします。 配置が正常に完了したら、ディメンション デザイナーの
Dateディメンションの [ブラウザー] タブをクリックします。[ ブラウザー ] タブのツール バーで、[再接続] ボタンをクリックします。
Calendar Quarter 属性階層と Calendar Semester 属性階層のメンバーを確認します。
これらの階層のメンバーは、年順、四半期または半期順に順に並べ替えられていることに注意してください。
英語の月名属性階層のメンバーを確認します。
階層のメンバーが最初に年順に並べ替えられた後、月単位でアルファベット順に並べ替えられるようになったことに注意してください。 これは、データ ソース ビューの EnglishCalendarMonth 列のデータ型が、基になるリレーショナル データベースの nvarchar データ型に基づく文字列列であるためです。 各年内に月を時系列に並べ替える方法については、「 セカンダリ属性に基づく属性メンバーの並べ替え」を参照してください。