Excel 範囲スライサーと同様に、SQL スライサーでもユーザーは使い慣れたツリー スタイルでアイテムを選択できます。

データベース スキーマに応じて四つの異なるクエリ レイアウトから選択できます。いずれの場合も、結果セットは最終的なツリーを表示したい順序になっている必要があります。以下のモードがあります。

  • 深さ列
    • 結果セットには、ノードのキー、説明z、深さに対応した三つの列があります。
  • 親列
    • 結果セットには、キー、説明、親キーに対応した三つの列があります。
    • キーと親キーを null にすることはできず、最上位ノードには -1 を使用できます。
  • レベルごとに 1 列
    • 各列はツリー内のレベルです。上位ノードの値が各行で繰り返されます。
  • レベルごとのキーとキャプション
    • 各キーとキャプション列のペアがツリー内のレベルです。上位ノードの値が各行で繰り返されます。

この例では、Microsoft の Adventure Works デモ リレーショナル データベースと、Adventure Works キューブのユーザーには製品ディメンション ソースとして馴染みのある DimProduct、DimProductSubcategory、DimProductCategory の各テーブルを使用しています。

こちらでは深さ列クエリ スタイルを使用しています。重要なポイントは、SQL クエリによって次の三つの列が返されていることです。

  • ID 列
  • キャプション列
  • ツリー レベル列

これら以外の列はすべて無視されます。

  1. Adventure Works リレーショナル データベースに接続した後、上記の三つの列を返すクエリを入力します。今回の例では次のクエリを使用できます。
    SELECT
    'c' + CONVERT(varchar(10), p3.ProductKey) AS Id
    , p3.EnglishProductName AS Caption
    , 3 AS TreeLevel
    , p1.EnglishProductCategoryName + p2.EnglishProductSubcategoryName + p3.EnglishProductName AS Ordering
    FROM dbo.DimProduct p3
    JOIN dbo.DimProductSubcategory p2
    ON p3.ProductSubcategoryKey = p2.ProductSubcategoryKey
    JOIN dbo.DimProductCategory p1
    ON p1.ProductCategoryKey = p2.ProductCategoryKey
    UNION ALL
    SELECT
    'b' + CONVERT(varchar(10), p2.ProductSubcategoryKey) AS Id
    , p2.EnglishProductSubcategoryName AS Caption
    , 2 AS TreeLevel
    , p1.EnglishProductCategoryName + p2.EnglishProductSubcategoryName AS Ordering
    FROM dbo.DimProductSubcategory p2
    JOIN dbo.DimProductCategory p1
    ON p1.ProductCategoryKey = p2.ProductCategoryKey
    UNION ALL
    SELECT
    'a' + CONVERT(varchar(10), p1.ProductCategoryKey) AS Id
    , p1.EnglishProductCategoryName AS Caption
    , 1 AS TreeLevel
    , p1.EnglishProductCategoryName AS Ordering
    FROM dbo.DimProductCategory p1
    ORDER BY Ordering

    この特定のクエリについては、注意すべき点がいくつかあります。
    • 上記の三つの列がクエリに表示される最初の三つの列になります。
    • スライサーの出力には影響しないものの、クエリによって出力を順序付けるために使用される 4 番目の列があります。
    • キー列には、選択されたレベルを示すイニシャル (a、b、又は c) と、それに続くキーを示す数字が表示されます。
  2. [Insert Slicer] ダイアログでツリー タイプを選択します。
  3. 次のような出力になります。
  1. [Update range with selection] プロパティと [First column] オプションが選択されている場合、複合キーがセルに出力されます。これを Excel 式で解析できます。たとえば、出力セルが A1 であると仮定すると次のようになります。
    レベル: =IF(LEFT(A1,1)="a","Category",IF(LEFT(A1,1)="b","Subcategory",IF(LEFT(A1,1)="c","Product","Unknown")))
    Id: =MID(A1,2,LEN(A1)-1)