在本课中,你将使用 AdventureWorksDW2012 示例数据库中的 INSERT INTO (DMX) 语句和 vAssocSeqLineItems 和 vAssocSeqOrders 来处理在第 1 课中创建的挖掘结构和挖掘模型:创建市场篮挖掘结构和第 2 课:将挖掘模型添加到市场篮挖掘结构。
处理挖掘结构时,Analysis Services 会读取源数据并生成支持挖掘模型的结构。 处理挖掘模型时,挖掘结构定义的数据将通过所选的数据挖掘算法传递。 该算法搜索趋势和模式,然后将此信息存储在挖掘模型中。 因此,挖掘模型不包含实际源数据,而是包含算法发现的信息。 有关处理挖掘模型的详细信息,请参阅处理要求和注意事项(数据挖掘)。
仅当更改结构列或更改源数据时,才必须重新处理挖掘结构。 如果将挖掘模型添加到已处理的挖掘结构,则可以使用该 INSERT INTO MINING MODEL 语句对现有数据训练新的挖掘模型。
由于 Market Basket 挖掘结构包含嵌套表,因此必须使用嵌套表结构定义要训练的挖掘列,并使用 SHAPE 命令定义从源表拉取训练数据的查询。
INSERT INTO 语句
若要训练市场篮挖掘结构及其关联的挖掘模型,请使用 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> )  
)  
代码的最后一行定义将用于训练挖掘结构的数据。 由于源数据包含在两个表中,因此将用于 SHAPE 关联表。
SHAPE {  
  OPENQUERY([<datasource>],'<SELECT statement>') }  
APPEND  
(   
  {OPENQUERY([<datasource>],''<nested SELECT statement>'')  
}  
RELATE [<case key>] TO [<foreign key>]  
) AS [<nested table>]  
在本课中,你将用于 OPENQUERY 定义源数据。 有关定义源数据查询的其他方法的信息,请参阅 <源数据查询>。
课程任务
在本课中,你将执行以下任务:
- 处理市场购物篮数据挖掘结构
 
处理市场购物篮数据挖掘结构
使用 INSERT INTO 处理挖掘结构
在 对象资源管理器中,右键单击 Analysis Services 实例,指向 “新建查询”,然后单击 “DMX”。
查询编辑器打开后,将包含一个新的空白查询。
将 INSERT INTO 语句的泛型示例复制到空白查询中。
替换以下内容:
[<mining structure>]替换为:
Market Basket替换以下内容:
<mining structure columns> [<nested table>] ( SKIP, <skipped column> )替换为:
[OrderNumber], [Products] (SKIP, [Model])在语句中,
Products引用 SHAPE 语句定义的 Products 表。SKIP用于忽略源数据中作为键存在的 Model 列,但未由挖掘结构使用。替换以下内容:
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 视图。 这些视图包含将用于训练挖掘模型的源数据。 如果尚未创建此项目或这些视图,请参阅 基本数据挖掘教程。
你将在
SHAPE命令中使用OPENQUERY来定义两个查询。 第一个查询定义父表,第二个查询定义嵌套表。 这两个表通过两个表中都存在的 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]在“ 文件 ”菜单上,单击“ 保存 DMXQuery1.dmx As”。
在“ 另存为 ”对话框中,浏览到相应的文件夹,并命名该文件
Process Market Basket.dmx。在工具栏上,单击“ 执行 ”按钮。
查询完成运行后,可以查看找到的模式和项集、查看关联或按项集、概率或重要性进行筛选。 若要查看此信息,请在 SQL Server Management Studio 中右键单击数据模型的名称,然后单击“ 浏览”。
在下节课中,您将基于添加到购物篮结构中的挖掘模型创建多个预测。