OPENROWSET (DMX)
ソース データ クエリを外部プロバイダへのクエリで置き換えます。INSERT、SELECT FROM PREDICTION JOIN、および SELECT FROM NATURAL PREDICTION JOIN ステートメントは OPENROWSET をサポートします。特定のプロバイダ用の構文の詳細については、「OPENROWSET (Transact-SQL)」を参照してください。
構文
OPENROWSET(provider_name,provider_string,query_syntax)
引数
provider_name
OLE DB プロバイダ名です。provider_string
指定されたプロバイダの OLE DB 接続文字列です。query_syntax
行セットを返すクエリ構文です。
説明
Analysis Services サーバーのプロパティを設定することにより、OPENROWSET を使用したアドホック クエリを有効にすることは可能です。ただし、OPENROWSET ではなく、OPENQUERY を使用することをお勧めします。OPENROWSET では、データ マイニング タスクと関係のないデータベース テーブルであってもユーザーによる参照が可能になりますが、OPENQUERY を使用すると、どのデータ ソースに対してユーザーによるアクセスを可能にするかを制御することができます。
アドホック OPENROWSET クエリを有効にする場合、プロバイダ ID を指定して、サーバーおよびデータベースへの接続のインスタンス化に使用できるプロバイダを制限する必要があります。詳細については、「データ マイニング プロパティ」を参照してください。
OPENROWSET の正確な構文は、指定したプロバイダによって異なります。通常、データ マイニング プロバイダは、provider_name と provider_string を使用してデータ ソース オブジェクトへの接続を確立し、ソース データから行セットを取得するために query_syntax で指定されたクエリを実行します。
例
次の例では、Transact-SQL SELECT ステートメントを使用して AdventureWorksDW2008 データベースの ProspectiveBuyers テーブルからデータを取得し、新規顧客ごとのクラスタを予測する、PREDICTION JOIN ステートメントについて示します。
ユーザー ID の DMUser は、新規顧客の格納に使用されるデータ テーブルに対して読み取り専用権限が与えられている SQL ログインです。OPENROWSET でのパスワードはクリア テキストであるため、セキュリティ上のリスクがあります。OPENROWSET の代わりに OPENQUERY を使用して、可能な限り低いアクセス レベルでリレーショナル データ ソースをセキュリティ保護することをお勧めします。
OPENROWSET ステートメントの SELECT 句内の最初の 3 つのフィールドは予測用のモデルでは使用されませんが、顧客の識別に役立ちます。予測に使用する列をモデルの入力列にマップするには、それらを ON 句に追加する必要があります。
SELECT
t.[ProspectiveBuyerKey], t.[LastName], t.[FirstName],
Cluster()
FROM
[TM_Clustering]
PREDICTION JOIN
OPENROWSET('SQLOLEDB','localhost';'DMUser';'&IZqw3x&',
'SELECT
[ProspectiveBuyerKey], [FirstName],[LastName],
[MaritalStatus],
[Gender],
[YearlyIncome],
[TotalChildren],
[NumberChildrenAtHome],
[HouseOwnerFlag],
[NumberCarsOwned]
FROM
[AdventureWorksDW2008].[dbo].[ProspectiveBuyer]
') AS t
ON
[TM_Clustering].[Marital Status] = t.[MaritalStatus] AND
[TM_Clustering].[Gender] = t.[Gender] AND
[TM_Clustering].[Yearly Income] = t.[YearlyIncome] AND
[TM_Clustering].[Total Children] = t.[TotalChildren] AND
[TM_Clustering].[Number Children At Home] = t.[NumberChildrenAtHome] AND
[TM_Clustering].[House Owner Flag] = t.[HouseOwnerFlag] AND
[TM_Clustering].[Number Cars Owned] = t.[NumberCarsOwned]
例の結果 :