第 3 课:处理购物篮挖掘结构

在本课中,你将使用 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 处理挖掘结构

  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 用于忽略源数据中作为键存在的 Model 列,但未由挖掘结构使用。

  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],'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]  
    
  6. 在“ 文件 ”菜单上,单击“ 保存 DMXQuery1.dmx As”。

  7. 在“ 另存为 ”对话框中,浏览到相应的文件夹,并命名该文件 Process Market Basket.dmx

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

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

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

下一课

第 4 课:执行市场购物篮分析预测