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

このレッスンでは、INSERT INTO (DMX) ステートメントと AdventureWorksDW2012 サンプル データベースの 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],'SELECT OrderNumber
                FROM vAssocSeqOrders ORDER BY OrderNumber')}
    APPEND
    ( 
      {OPENQUERY([Adventure Works DW],'SELECT OrderNumber, Model FROM 
        dbo.vAssocSeqLineItems ORDER BY OrderNumber, Model')
    }
    RELATE OrderNumber to OrderNumber 
    ) AS [Products]
    

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

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

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

    INSERT INTO MINING STRUCTURE [Market Basket]
    (
       [OrderNumber],[Products] (SKIP, [Model])
    )
    SHAPE {
      OPENQUERY([Adventure Works DW],'SELECT OrderNumber
                FROM vAssocSeqOrders ORDER BY OrderNumber')}
    APPEND
    ( 
      {OPENQUERY([Adventure Works DW],'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 構造に追加したマイニング モデルに基づいて、いくつかの予測を作成します。

次のレッスン

レッスン 4: マーケット バスケット予測の実行