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 进行即席查询。然而,建议您改用 OPENQUERY。通过使用 OPENQUERY,您可以控制用户可以访问的数据源,因为使用 OPENROWSET 的用户可能会查看与数据挖掘任务无关的数据库表。
如果您选择启用即席 OPENROWSET 查询,则应通过指定访问接口 ID 来限制可用于实例化到服务器和数据库的连接的访问接口。有关详细信息,请参阅数据挖掘属性。
OPENROWSET 的确切语法取决于您所指定的访问接口。一般而言,数据挖掘访问接口将使用 provider_name 和 provider_string 建立与数据源对象的连接,并执行在 query_syntax 中指定的查询以检索源数据中的行集。
示例
以下示例说明一个 PREDICTION JOIN 语句,该语句通过使用 Transact-SQL SELECT 语句从 AdventureWorksDW2008 数据库的 ProspectiveBuyers 表中检索数据,并针对每个新客户预测一个分类。
用户 ID(即 DMUser)是一个 SQL 登录名,它已被授予针对用于存储新客户的数据表的只读权限。请注意,密码在 OPENROWSET 中以明文表示,因此存在安全风险。建议您改用 OPENQUERY,并通过最低的访问权限级别来保护关系数据源。
模型并不使用 OPENROWSET 语句的 SELECT 子句中的前三个字段来进行预测,但这些字段用于标识客户。对于任何用于预测的列,必须通过将它们添加到 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]
示例结果: