SELECT FROM <model> PREDICTION JOIN (DMX)
適用対象:SQL Server Analysis Services
マイニング モデルを使用して、外部データ ソース内の列の状態を予測します。 PREDICTION JOIN ステートメントは、ソース クエリからモデルまでの各ケースと一致します。
構文
SELECT [FLATTENED] [TOP <n>] <select expression list>
FROM <model> | <sub select> [NATURAL] PREDICTION JOIN
<source data query> [ON <join mapping list>]
[WHERE <condition expression>]
[ORDER BY <expression> [DESC|ASC]]
引数
n
省略可能。 返す行数を指定する整数値です。
式リストの選択
マイニング モデルから派生する、列の識別子と式のコンマ区切りのリストです。
model
モデル識別子。
sub select
埋め込み select ステートメント。
ソース データ クエリ
ソース クエリです。
結合マッピング リスト
省略可能。 モデルの列とソース クエリの列を比較する論理式。
condition 式
省略可能。 列リストから返される値を制限する条件。
式 (expression)
省略可能。 スカラー値を返す式。
解説
ON 句は、ソース クエリの列とマイニング モデルの列の間のマッピングを定義します。 このマッピングは、ソース クエリからマイニング モデル内の列に列を転送するために使用され、予測を作成するための入力として列を使用できます。 <結合マッピング リストの列>は、次の例に示すように、等号 (=) を使用して関連付けられています。
[MiningModel].ColumnA = [source data query].Column1 AND
[MiningModel].ColumnB = [source data query].Column2 AND
...
入れ子になったテーブルを ON 句にバインドする場合、入れ子になった列のレコードが所属するケースをアルゴリズムが正しく識別できるように、キー列をすべての非キー列とバインドします。
予測結合のソース クエリは、テーブルまたは単一クエリのどちらかにできます。
テーブル式を返さない予測関数は、<選択式リストと><条件式>で指定できます。
NATURAL PREDICTION JOIN は、モデル内の列名と一致するソース クエリの列名を自動的にマップします。
WHERE 条件は、予測可能な列または関連する列にのみ適用できます。
ORDER by 句では、引数として受け取ることができる列は 1 つだけです。つまり、複数の列を並べ替えることはできません。
例 1: シングルトン クエリ
次の例は、特定のユーザーが自転車をリアルタイムで購入するかどうかを予測するクエリを作成する方法を示しています。 このクエリでは、データはテーブルまたはその他のデータ ソースに格納されませんが、クエリに直接入力されます。 クエリ内の人物は、次の特徴を持ちます。
35 才
持ち家所有
2 台の自家用車を所有
2人の子供が家に住んでいる
TM デシジョン ツリー マイニング モデルとサブジェクトに関する既知の特性を使用して、クエリは、自転車を購入したかどうかを示すブール値と、予測がどのように行われたかを説明する PredictHistogram (DMX) 関数によって返される一連の表形式の値を返します。
SELECT
[TM Decision Tree].[Bike Buyer],
PredictHistogram([Bike Buyer])
FROM
[TM Decision Tree]
NATURAL PREDICTION JOIN
(SELECT 35 AS [Age],
'5-10 Miles' AS [Commute Distance],
'1' AS [House Owner Flag],
2 AS [Number Cars Owned],
2 AS [Total Children]) AS t
例 2: OPENQUERY の使用
次の例は、外部データセットに格納されている潜在顧客の一覧を使用してバッチ予測クエリを作成する方法を示しています。 テーブルは Analysis Services のインスタンスで定義されているデータ ソース ビューの一部であるため、クエリでは OPENQUERY を使用してデータを取得できます。 テーブル内の列の名前はマイニング モデルとは異なるため、テーブル内の列をモデル内の列にマップするには、 ON 句を使用する必要があります。
このクエリでは、テーブル内の各ユーザーの姓と名と共に、各ユーザーが自転車を購入する可能性があるかどうかを示すブール型の列が返されます。0 は "おそらく自転車を購入しない" ことを意味し、1 は "おそらく自転車を購入する" ことを意味します。 最後の列には、予測結果の確率が含まれます。
SELECT
t.[LastName],
t.[FirstName],
[TM Decision Tree].[Bike Buyer],
PredictProbability([Bike Buyer])
From
[TM Decision Tree]
PREDICTION JOIN
OPENQUERY([Adventure Works DW Multidimensional 2012],
'SELECT
[LastName],
[FirstName],
[MaritalStatus],
[Gender],
[YearlyIncome],
[TotalChildren],
[NumberChildrenAtHome],
[Education],
[Occupation],
[HouseOwnerFlag],
[NumberCarsOwned]
FROM
[dbo].[ProspectiveBuyer]
') AS t
ON
[TM Decision Tree].[Marital Status] = t.[MaritalStatus] AND
[TM Decision Tree].[Gender] = t.[Gender] AND
[TM Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
[TM Decision Tree].[Total Children] = t.[TotalChildren] AND
[TM Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
[TM Decision Tree].[Education] = t.[Education] AND
[TM Decision Tree].[Occupation] = t.[Occupation] AND
[TM Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
[TM Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
自転車の購入が予測される顧客のみにデータ セットを制限し、顧客名でリストを並べ替えるには、前の例に WHERE 句と ORDER BY 句を追加します。
WHERE [BIKE Buyer]
ORDER BY [LastName] ASC
例 3: アソシエーションの予測
次の例は、Microsoft アソシエーション アルゴリズムから構築されたモデルを使用して予測を作成する方法を示しています。 関連付けモデルの予測を使用して、関連製品を推奨できます。 たとえば、次のクエリは、一緒に購入される可能性が最も高い 3 つの製品を返します。
Mountain Bottle Cage
Mountain Tire Tube
Mountain-200
Predict (DMX)関数はポリモーフィックであり、すべてのモデル型で使用できます。 value3 を関数の引数として使用して、クエリによって返される項目の数を制限します。 NATURAL PREDICTION JOIN 句に続く SELECT リストには、予測の入力として使用する値が用意されています。
SELECT FLATTENED
PREDICT([Association].[v Assoc Seq Line Items], 3)
FROM
[Association]
NATURAL PREDICTION JOIN
(SELECT (SELECT 'Mountain Bottle Cage' AS [Model]
UNION SELECT 'Mountain Tire Tube' AS [Model]
UNION SELECT 'Mountain-200' AS [Model]) AS [v Assoc Seq Line Items ]) AS t
結果の例:
Expression.Model |
---|
HL Mountain Tire |
Water Bottle |
Fender Set - Mountain |
予測可能な属性 ( [v Assoc Seq Line Items]
) を含む列はテーブル列であるため、クエリは入れ子になったテーブルを含む 1 つの列を返します。 既定では、入れ子になったテーブル列の名前は Expression
です。 プロバイダーが階層行セットをサポートしていない場合は、この例に示すように FLATTENED キーワードを使用して、結果を表示しやすくすることができます。
参照
SELECT (DMX)
データ マイニング拡張機能 (DMX) データ定義ステートメント
データ マイニング拡張機能 (DMX) データ操作ステートメント
データ マイニング拡張機能 (DMX) ステートメント リファレンス