レッスン 3: Market Basket マイニング構造の処理

このレッスンでは、INSERT INTO (DMX) ステートメントと AdventureWorksDW2008R2 サンプル データベースの vAssocSeqLineItems および vAssocSeqOrders を使用して、「レッスン 1: Market Basket マイニング構造の作成」および「レッスン 2: Market Basket マイニング構造へのマイニング モデルの追加」で作成したマイニング構造とマイニング モデルを処理します。

マイニング構造の処理では、Analysis Services でソース データが読み込まれ、マイニング モデルをサポートする構造が構築されます。マイニング モデルの処理では、マイニング構造で定義されたデータが、選択したデータ マイニング アルゴリズムを介して受け渡されます。このアルゴリズムでは傾向とパターンが検索され、結果の情報がマイニング モデルに保存されます。したがって、マイニング モデルには、実際のソース データではなく、アルゴリズムで検出された情報が含まれます。マイニング モデルの処理の詳細については、「データ マイニング オブジェクトの処理」を参照してください。

マイニング構造の再処理は、構造列またはソース データを変更した場合にのみ必要です。処理済みのマイニング構造にマイニング モデルを追加する場合は、INSERT INTO MINING MODEL ステートメントを使用して既存のデータに対して新しいマイニング モデルをトレーニングできます。

Market Basket マイニング構造には入れ子になったテーブルが含まれるため、入れ子になったテーブル構造でトレーニングするようにマイニング列を定義する必要があります。また、SHAPE コマンドを使用して、ソース テーブルからトレーニング データを抽出するクエリを定義する必要があります。

INSERT INTO ステートメント

Market Basket マイニング構造と、それに関連するマイニング モデルをトレーニングするには、INSERT INTO (DMX) ステートメントを使用します。ステートメントのコードは次の部分に分けられます。

  • マイニング構造の指定

  • マイニング構造の列の一覧

  • SHAPE によるトレーニング データの定義

INSERT INTO ステートメントの汎用例を次に示します。

INSERT INTO MINING STRUCTURE [<mining structure name>]
(
   <mining structure columns>
   [<nested table>]
   ( SKIP, <skipped column> )
)
SHAPE {
  OPENQUERY([<datasource>],'<SELECT statement>') }
APPEND
( 
  {OPENQUERY([<datasource>],'<nested SELECT statement>')
}
RELATE [<case key>] TO [<foreign key>]
) AS [<nested table>]

コードの最初の行では、トレーニングするマイニング構造を指定します。

INSERT INTO MINING STRUCTURE [<mining structure name>]

コードの次の数行では、マイニング構造で定義される列を指定します。ここではマイニング構造の各列を指定する必要があります。各列はソース クエリ データ内の列にマップされている必要があります。SKIP を使用すると、ソース データに存在するがマイニング構造に存在しない列を無視できます。SKIP の使用方法の詳細については、「INSERT INTO (DMX)」を参照してください。

(
   <mining structure columns>
   [<nested table>]
   ( SKIP, <skipped column> )
)

コードの最後の行では、マイニング構造のトレーニングに使用されるデータを定義します。ソース データは 2 つのテーブルに格納されているため、SHAPE を使用してテーブルを関連付けます。

SHAPE {
  OPENQUERY([<datasource>],'<SELECT statement>') }
APPEND
( 
  {OPENQUERY([<datasource>],''<nested SELECT statement>'')
}
RELATE [<case key>] TO [<foreign key>]
) AS [<nested table>]

このレッスンでは、OPENQUERY を使用してソース データを定義します。ソース データに対するクエリを定義する他の方法については、「<source data query>」を参照してください。

このレッスンの作業

このレッスンでは、次の作業を行います。

  • Market Basket マイニング構造の処理

Market Basket マイニング構造の処理

INSERT INTO を使用してマイニング構造を処理するには

  1. オブジェクト エクスプローラーで、Analysis Services インスタンスを右クリックし、[新しいクエリ] をポイントして [DMX] をクリックします。

    クエリ エディターが開き、新しい空のクエリが表示されます。

  2. 上の INSERT INTO ステートメントの汎用例を空のクエリにコピーします。

  3. 次の部分を探します。

    [<mining structure>]
    

    これを次の文字列に置き換えます。

    Market Basket
    
  4. 次の部分を探します。

       <mining structure columns>
       [<nested table>]
       ( SKIP, <skipped column> )
    

    これを次の文字列に置き換えます。

    [OrderNumber],
    [Products] 
    (SKIP, [Model])
    

    このステートメントでは、Products は SHAPE ステートメントで定義される Products テーブルを参照します。SKIP は、ソース データにキーとして存在する Model 列を無視するために使用します。マイニング構造に対しては使用できません。

  5. 次の部分を探します。

    SHAPE {
      OPENQUERY([<datasource>],'<SELECT statement>') }
    APPEND
    ( 
      {OPENQUERY([<datasource>],'<nested SELECT statement>')
    }
    RELATE [<case key>] TO [<foreign key>]
    ) AS [<nested table>]
    

    これを次の文字列に置き換えます。

    SHAPE {
      OPENQUERY([Adventure Works DW 2008R2],'SELECT OrderNumber
                FROM vAssocSeqOrders ORDER BY OrderNumber')}
    APPEND
    ( 
      {OPENQUERY([Adventure Works DWR2],'SELECT OrderNumber, Model FROM 
        dbo.vAssocSeqLineItems ORDER BY OrderNumber, Model')
    }
    RELATE OrderNumber to OrderNumber 
    ) AS [Products]
    

    このソース クエリは、AdventureWorksDW2008R2 サンプル プロジェクトで定義されている AdventureWorksDW2008R2 データ ソースを参照します。ソース クエリはこのデータ ソースを使用して、vAssocSeqLineItems ビューと vAssocSeqOrders ビューにアクセスします。これら 2 つのビューには、マイニング モデルのトレーニングに使用されるソース データが含まれます。このプロジェクトやこれらのビューをまだ作成していない場合は、「基本的なデータ マイニング チュートリアル」を参照してください。

    SHAPE コマンド内では、OPENQUERY を使用して 2 つのクエリを定義します。最初のクエリでは親テーブルを定義し、2 つ目のクエリでは入れ子になったテーブルを定義します。2 つのテーブルは、両方のテーブルに存在する OrderNumber 列を使用して関連付けられます。

    最終的なステートメントは次のようになります。

    INSERT INTO MINING STRUCTURE [Market Basket]
    (
       [OrderNumber],[Products] (SKIP, [Model])
    )
    SHAPE {
      OPENQUERY([Adventure Works DW 2008R2],'SELECT OrderNumber
                FROM vAssocSeqOrders ORDER BY OrderNumber')}
    APPEND
    ( 
      {OPENQUERY([Adventure Works DW 2008R2],'SELECT OrderNumber, Model FROM 
        dbo.vAssocSeqLineItems ORDER BY OrderNumber, Model')
    }
    RELATE OrderNumber to OrderNumber 
    ) AS [Products]
    
  6. [ファイル] メニューで、[名前を付けて DMXQuery1.dmx を保存] をクリックします。

  7. [名前を付けて保存] ダイアログ ボックスで、適切なフォルダーを参照して指定し、ファイルに「Process Market Basket.dmx」という名前を付けます。

  8. ツール バーの [実行] ボタンをクリックします。

クエリの実行終了後、見つかったパターンとアイテムセットを表示したり、関連付けを表示したり、アイテムセット、確率、または重要度でフィルタリングしたりできます。この情報を表示するには、SQL Server Management Studio でデータ モデルの名前を右クリックし、[参照] をクリックします。

次のレッスンでは、Market Basket 構造に追加したマイニング モデルに基づいて、いくつかの予測を作成します。