第 3 课:处理市场篮挖掘结构

在本课中,您将使用 INSERT INTO (DMX) 语句以及 AdventureWorksDW2008R2 示例数据库中的 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 处理挖掘结构

  1. 对象资源管理器中,右键单击 Analysis Services 实例,指向**“新建查询”**,再单击 DMX

    将打开查询编辑器,其中包含一个新的空白查询。

  2. 将 INSERT INTO 语句的一般示例复制到空白查询中。

  3. [<mining structure>]
    

    替换为

    Market Basket
    
  4.    <mining structure columns>
       [<nested table>]
       ( SKIP, <skipped column> )
    

    替换为

    [OrderNumber],
    [Products] 
    (SKIP, [Model])
    

    在该语句中,Products 是指由 SHAPE 语句定义的 Products 表。SKIP 用于忽略模型列,该列作为一个键存在于源数据中,但是挖掘结构并不使用它。

  5. 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 2008R2],'SELECT OrderNumber
                FROM vAssocSeqOrders ORDER BY OrderNumber')}
    APPEND
    ( 
      {OPENQUERY([Adventure Works DWR2],'SELECT OrderNumber, Model FROM 
        dbo.vAssocSeqLineItems ORDER BY OrderNumber, Model')
    }
    RELATE OrderNumber to OrderNumber 
    ) AS [Products]
    

    源查询引用 AdventureWorksDW2008R2 示例项目中定义的 AdventureWorksDW2008R2 数据源。它使用此数据源访问 vAssocSeqLineItems 和 vAssocSeqOrders 视图。这些视图包含将用于定型挖掘模型的源数据。如果您尚未创建此项目或这些视图,请参阅数据挖掘基础教程

    在 SHAPE 命令中,将使用 OPENQUERY 定义两个查询。第一个查询定义父表,第二个查询定义嵌套表。这两个表是使用 OrderNumber 列关联的,两个表中都包含该列。

    现在,完整的语句应该如下所示:

    INSERT INTO MINING STRUCTURE [Market Basket]
    (
       [OrderNumber],[Products] (SKIP, [Model])
    )
    SHAPE {
      OPENQUERY([Adventure Works DW 2008R2],'SELECT OrderNumber
                FROM vAssocSeqOrders ORDER BY OrderNumber')}
    APPEND
    ( 
      {OPENQUERY([Adventure Works DW 2008R2],'SELECT OrderNumber, Model FROM 
        dbo.vAssocSeqLineItems ORDER BY OrderNumber, Model')
    }
    RELATE OrderNumber to OrderNumber 
    ) AS [Products]
    
  6. 在**“文件”菜单中,单击“DMXQuery1.dmx 另存为”**。

  7. 在**“另存为”**对话框中,浏览到适当的文件夹,并将文件命名为 Process Market Basket.dmx。

  8. 在工具栏中,单击**“执行”**按钮。

在该查询完成运行之后,可以查看已经找到的模式和项集,查看关联,或按项集、概率或重要性进行筛选。若要查看这些信息,请在 SQL Server Management Studio 中右键单击所需数据模型的名称,再单击**“浏览”**。

在下一课中,您将基于添加到市场篮结构中的挖掘模型创建多个预测。