名前付きセットの定義
名前付きセットとは、ディメンション メンバーのセットを返す多次元式 (MDX) です。 名前付きセットを定義し、キューブ定義の一部として保存できます。さらに、名前付きセットをクライアント アプリケーションで作成することもできます。 名前付きセットは、キューブ データ、算術演算子、数値、関数を組み合わせることによって作成します。 名前付きセットは、クライアント アプリケーションの MDX クエリの中で使用できます。また、サブキューブのセットを定義するときも使用できます。 サブキューブは、クロス結合によるセットのコレクションであり、後続のステートメントに対して、キューブ空間を定義されたサブスペースに制限します。 制限されたキューブ領域の定義は MDX スクリプティングの基本概念です。
名前付きセットを使用すると、MDX クエリを単純化することができ、よく使用する複雑なセット式に対して便利な別名を使用できます。 たとえば、従業員が最も多い Reseller ディメンションのメンバーを含む Large Resellers 名前付きセットを定義できます。 エンド ユーザーはクエリの中でこの Large Resellers 名前付きセットを使用できます。また、サブキューブ内のセットを定義するために名前付きセットを使用することもできます。 名前付きセットの定義はキューブに格納されますが、その値はメモリにしか存在しません。 名前付きセットを作成するには、キューブ デザイナーの [計算] タブで [新しい名前付きセット] コマンドを使用します。 詳細については、「計算」と「名前付きセットの作成」を参照してください。
このトピックの作業では、Core Products と Large Resellers という 2 つの名前付きセットを定義します。
Core Products 名前付きセットの定義
Analysis Services Tutorial キューブのキューブ デザイナーを開いて、[計算] タブに切り替えます。次に、ツール バーの [フォーム ビュー] をクリックします。
[スクリプト オーガナイザー] ペインの [Total Sales Ratio to All Products] をクリックして、[計算] タブのツール バーの [新しい名前付きセット] をクリックします。
[計算] タブで新しい計算を定義する場合、計算は [スクリプト オーガナイザー] ペインに表示されている順序で解決されることに注意してください。 新しい計算を作成するときにペイン内でフォーカスが置かれている位置によって、計算の実行順序が決まります。新しい計算は、フォーカスが置かれている計算の直後に定義されます。
[名前] ボックスに、新しい名前付きセットの名前として「[Core Products]」と入力します。
[スクリプト オーガナイザー] ペインには、スクリプト コマンドまたは計算されるメンバーとは異なる、名前付きセットの固有のアイコンが表示されます。
[計算ツール] ペインの [メタデータ] タブで、[Product]、[Category]、[メンバー]、[All Products] の順に展開します。
注 [計算ツール] ペインにメタデータが表示されない場合、ツール バーの [再接続] をクリックします。 それでも表示されない場合は、キューブを処理するか、Analysis Services のインスタンスを開始する必要があります。
[Bikes] を [式] ボックスにドラッグします。
これで、Product ディメンションの Bike カテゴリに属するメンバーのセットを返すセット式を作成できました。
Large Resellers 名前付きセットの定義
[スクリプト オーガナイザー] ペインの [Core Products] を右クリックして、[新しい名前付きセット] をクリックします。
[名前] ボックスに、この名前付きセットの名前として「[Large Resellers]」と入力します。
[式] ボックスに「Exists()」と入力します。
Exists 関数を使用して、Number of Employees 属性階層内の従業員数が多数であるメンバーのセットと交差する、Reseller Name 属性階層のメンバーのセットを返すようにします。
[計算ツール] ペインの [メタデータ] タブで、Reseller ディメンション、Reseller Name 属性階層の順に展開します。
Reseller Name レベルを Exists セット式のかっこ内にドラッグします。
このセットのすべてのメンバーを返すには、Members 関数を使用します。 詳細については、「Members (セット) (MDX)」を参照してください。
セット式の部分に続けて、ピリオドを入力して、Members 関数を追加します。 式は以下のようになります。
Exists([Reseller].[Reseller Name].[Reseller Name].Members)
これで、Exists セット式の最初のセットを定義できました。続いて 2 番目のセット、つまり多数の従業員を含む Reseller ディメンションのメンバーのセットを追加できます。
[計算ツール] ペインの [メタデータ] タブで、Reseller ディメンションの [Number of Employees] を展開して、[メンバー]、[All Resellers] の順に展開します。
この属性階層のメンバーはグループ化されていません。
Reseller ディメンションのディメンション デザイナーを開いて、[属性] ペインの [Number of Employees] をクリックします。
プロパティ ウィンドウで、DiscretizationMethod プロパティを Automatic に変更して、DiscretizationBucketCount プロパティを「5」に変更します。 詳細については、「属性メンバーのグループ化 (分離)」を参照してください。
SQL Server データ ツール (SSDT) で、[ビルド] メニューの [Analysis Services Tutorial の配置] をクリックします。
配置が正常に完了したら、Analysis Services Tutorial キューブのキューブ デザイナーに切り替え、[計算] タブのツール バーで [再接続] をクリックします。
[計算ツール] ペインの [メタデータ] タブで、[Reseller] ディメンションの [Number of Employees] を展開して、[メンバー]、[All Resellers] の順に展開します。
この属性階層のメンバーには、0 から 4 までの番号が付いた 5 つのグループが含まれるようになりました。 グループの番号は、グループ上にポインターを合わせると表示されるヒントで確認できます。 2 -17 の範囲では、ヒントに [Reseller].[Number of Employees].&[0] が含まれている必要があります。
この属性階層のメンバーがこのようにグループ化されるのは、DiscretizationBucketCount プロパティが 5 に設定され、DiscretizationMethod プロパティが Automatic に設定されているためです。
[式] ボックスで、Exists セット式内の Members 関数の後ろ、右かっこの直前にコンマを追加します。次に、[メタデータ] ペインから [83 - 100] をドラッグしてコンマの後に置きます。
これで、Exists セット式は完成です。この式は、Large Resellers 名前付きセットが軸に設定された場合に、これらの指定された 2 つのセット、つまり全再販業者のセットと 83 から 100 人の従業員を持つ再販業者のセットで交差するメンバーのセットを返します。
次の図は、Large Resellers 名前付きセットの計算式ペインを示しています。
[計算] タブのツール バーで [スクリプト ビュー] をクリックし、計算スクリプトに追加した 2 つの名前付きセットを確認します。
計算スクリプトの最初の CREATE SET コマンドの直前に新しい行を追加して、その行に以下のテキストを独自の行として追加します。
/* named sets */
これで 2 つの名前付きセットが定義され、それらは [スクリプト オーガナイザー] ペインに表示されます。 これらの名前付きセットを配置して、これらのメジャーを Analysis Services Tutorial キューブで表示する準備が整いました。
新しい名前付きセットを使用したキューブの表示
SQL Server Data Tools で、[ビルド] メニューの [Analysis Services Tutorial の配置] をクリックします。
配置が正常に完了したら、[ブラウザー] タブをクリックして、[再接続] をクリックします。
データ ペインのグリッドをクリアします。
Reseller Sales-Sales Amount メジャーをデータ領域に追加します。
次の図のように、Product ディメンションを展開し、Category と Subcategory を行領域に追加します。
メタデータ ペインの Product ディメンションで、Core Products をフィルター領域にドラッグします。
キューブで表示されるのは Category 属性の Bike メンバーと、Bike サブカテゴリのメンバーだけになります。 これは、サブキューブを定義するために Core Products 名前付きセットが使用されているためです。 次の図のように、このサブキューブは、サブキューブ内の Product ディメンション内の Category 属性のメンバーを、Core Product 名前付きセットのメンバーに限定します。
Metadata ペインで Reseller を展開し、フィルター領域に Large Resellers を追加します。
データ ペインの Reseller Sales Amount メジャーには、自転車の大規模な再販業者の売上高だけが表示されるようになります。 また、次の図のように、フィルター ペインには、この特定のサブキューブを定義するために使用される 2 つの名前付きセットが表示されています。
このレッスンの次の作業
スクリプト コマンドによるスコープが指定された割り当ての定義