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]

示例结果: