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

 

适用于: SQL Server 2016 Preview

在本课程中,您将使用 INSERT INTO #40; DMX ) 语句的 vAssocSeqLineItems 和 vAssocSeqOrders 从 AdventureWorksDW2012 可处理的挖掘结构和挖掘模型中创建示例数据库 第 1 课︰ 创建市场篮挖掘结构第 2 课︰ 向市场篮挖掘结构添加挖掘模型

处理挖掘结构时,Analysis Services 将读取源数据并生成支持挖掘模型的结构。 处理挖掘模型时,由挖掘结构定义的数据被通过您选择的数据挖掘算法。 该算法将搜索趋势和模式,然后在挖掘模型中存储此信息。 因此,挖掘模型不包含实际源数据,而是包含由算法发现的信息。 有关处理挖掘模型的详细信息,请参阅 处理要求和注意事项和 #40; 数据挖掘 )

如果更改了结构列或源数据,则只需要重新处理挖掘结构。 如果到已处理的挖掘结构添加挖掘模型,则可以使用 INSERT INTO MINING MODEL 语句,以基于现有数据为新挖掘模型定型。

由于市场篮挖掘结构包含嵌套的表,您将需要定义要使用嵌套的表结构中,要定型的挖掘列,并使用 形状 命令来定义请求定型数据从源表的查询。

INSERT INTO 语句

为了定型市场篮挖掘结构及其关联的挖掘模型,请使用 INSERT INTO #40; DMX ) 语句。 可以将该语句中的代码分为下列几部分。

  • 标识挖掘结构

  • 列出挖掘结构中的列

  • 定义定型数据使用 形状

下面是一般示例, 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>]  

代码的接下来各行指定该挖掘结构定义的列。 必须列出挖掘结构的每一列,并且每列必须映射到源查询数据所包含的对应列。 您可以使用 跳过 以忽略源数据中存在但挖掘结构中不存在的列。 有关如何使用 跳过, ,请参阅 INSERT INTO #40; DMX )

(  
   <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>]  

在本课程中,您将使用 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])  
    

    在语句中, 产品 指由 SHAPE 语句定义的 Products 表。 跳过 用于忽略模型列,该列作为键,将源数据中存在但不是由挖掘结构。

  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 视图。 这些视图包含将用于定型挖掘模型的源数据。 如果尚未创建此项目或这些视图,请参阅 数据挖掘基础教程

    形状 命令时,将使用 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 另存为

  7. 另存为 对话框中,浏览到相应的文件夹,并将文件 Process Market Basket.dmx

  8. 在工具栏上,单击 Execute 按钮。

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

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

下一课

第 4 课:执行市场篮预测