第 3 课:处理市场篮挖掘结构
在本课中,您将使用 INSERT INTO (DMX) 语句以及 AdventureWorksDW2012 示例数据库中的 vAssocSeqLineItems 和 vAssocSeqOrders 来处理在第 1 课:创建市场篮挖掘模型和第 2 课:向市场篮挖掘结构中添加挖掘模型中创建的挖掘结构和挖掘模型。
处理挖掘结构时,Analysis Services 将读取源数据并生成支持挖掘模型的结构。 处理挖掘模型时,挖掘结构定义的数据将通过所选择的数据挖掘算法进行传递。 该算法将搜索趋势和模式,然后在挖掘模型中存储此信息。 因此,挖掘模型不包含实际源数据,而是包含由算法发现的信息。 有关处理挖掘模型的详细信息,请参阅处理要求和注意事项(数据挖掘)。
如果更改了结构列或源数据,则只需要重新处理挖掘结构。 如果将挖掘模型添加到已处理的挖掘结构中,则可以使用 INSERT INTO MINING MODEL 语句针对现有数据为新的挖掘模型定型。
由于市场篮挖掘结构包含嵌套表,因此,需要使用嵌套表结构定义要定型的挖掘列,并使用 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 来定义源数据。 有关针对源数据定义查询的其他方法的信息,请参阅 <source data query>。
课程任务
在本课中,您将执行以下任务:
- 处理市场篮挖掘结构
处理市场篮挖掘结构
使用 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 另存为”**。
在**“另存为”**对话框中,浏览到适当的文件夹,并将文件命名为 Process Market Basket.dmx。
在工具栏中,单击**“执行”**按钮。
在该查询完成运行之后,可以查看已经找到的模式和项集,查看关联,或按项集、概率或重要性进行筛选。 若要查看这些信息,请在 SQL Server Management Studio 中右键单击所需数据模型的名称,再单击**“浏览”**。
在下一课中,您将基于添加到市场篮结构中的挖掘模型创建多个预测。