筛选挖掘模型中的嵌套表(数据挖掘中级教程)

 

适用于: SQL Server 2016 Preview

创建并浏览模型后,您决定将精力集中在客户数据的某个子集上。 例如,您可能希望仅分析包含特定项的购物篮,或者可能希望仅分析在某个时间段内没有购买任何物品的客户的人口统计信息。

Analysis Services 提供的功能来筛选挖掘模型中使用的数据。 此功能很有用,因为不需要将新的数据源视图设置为使用不同的数据。 在数据挖掘基础教程中,您学习了如何通过对事例表应用条件来筛选平面表中的数据。 在此任务中,您将创建一个应用于嵌套表的筛选器。

针对嵌套表和针对事例表的筛选器

如果您的数据源视图包含一个事例表和一个嵌套表,如 Association 模型中使用的数据源视图,则可以筛选事例表中的值、筛选嵌套表中是否存在某个值,或者这两者的组合。

在本任务中,您将首选制作 Association 模型的副本,然后将 IncomeGroup 和 Region 属性添加到新的相关模型中,以便您能够筛选事例表中的这些属性。

创建和修改 Association 模型的副本

  1. 挖掘模型 的选项卡上 SQL Server Data Tools (SSDT), ,用鼠标右键单击 关联 模型并选择 新建挖掘模型

  2. 有关 模型名称, ,类型 Association Filtered。 有关 算法名称, ,选择 Microsoft 关联规则。 单击 “确定”

  3. 在 Association Filtered 模型的列,单击 IncomeGroup 行并将值从 忽略输入

接下来,将在新的关联模型中创建一个针对事例表的筛选器。 仅当客户在目标区域中时或者仅当客户达到目标收入水平时,该筛选器才传递给模型。 然后,将添加第二个筛选条件集,以指定模型仅使用其购物篮已至少包含一项的客户。

将筛选器添加到挖掘模型中

  1. 挖掘模型 选项卡上,右键单击 Association Filtered 模型并选择 设置模型筛选器

  2. “模型筛选器” 对话框的 “挖掘结构列” 文本框中,单击网格中的第一行。

  3. 挖掘结构列 文本框中,选择 IncomeGroup。

    该文本框左侧的图标会发生改变,以指示所选项是列。

  4. 单击 运算符 文本框并选择 = 从列表中的运算符。

  5. 单击 文本框,然后键入 的框中。

  6. 单击网格中的下一行。

  7. 单击 和/或 文本框中,在下一行中的网格和选择 或者

  8. 挖掘结构列 文本框中,选择 IncomeGroup。 在 文本框中,键入 中等

    您创建的筛选条件自动添加到 表达式 文本框中,并应显示,如下所示︰

    [IncomeGroup] = 'High' OR [IncomeGroup] = 'Moderate'

  9. 单击在网格中,将使用默认运算符保留的下一行 AND

  10. 有关 运算符, ,保留默认值 Contains。 单击 文本框。

  11. 筛选器 对话框中,在下方的第一行 挖掘结构列, ,选择 模型

  12. 有关 运算符, ,选择 IS NOT NULL。 保留 文本框保留为空白。 单击 “确定”

    中的筛选条件 表达式 文本框 模型筛选器 对话框中将自动更新以包括新条件,对嵌套表。 完成的表达式如下:

    [IncomeGroup] = 'High' OR [IncomeGroup] = 'Moderate' AND EXISTS SELECT * FROM [vAssocSeqLineItems] WHERE [Model] <> NULL).

  13. 单击“确定”。``

启用钻取并处理筛选后的模型

  1. 挖掘模型 选项卡上,用鼠标右键单击 Association Filtered 模型并选择 属性

  2. 更改 AllowDrillThrough 属性设置为 True

  3. 用鼠标右键单击 Association Filtered 挖掘模型,然后选择 进程模型

  4. 单击 中要部署到新的模型的错误消息 Analysis Services 数据库。

  5. 处理挖掘结构 对话框中,单击 运行

  6. 处理完成后单击 关闭 退出 处理进度 对话框中,单击 关闭 再次以退出 处理挖掘结构 对话框。

您可以通过下面的方法进行验证:使用 Microsoft 一般内容树查看器并查看 NODE_SUPPORT 的值,看筛选模型所包含事例的数目是否小于原始模型中事例的数目。

注释

您刚才创建的嵌套表筛选器仅检查嵌套表中是否至少存在一个行;然而,您还可以创建用来检查特定产品是否存在的筛选条件。 例如,可以创建下面的筛选器:

[IncomeGroup] = 'High' AND  
 EXISTS (SELECT * FROM [<nested table name>] WHERE [Model] = 'Water Bottle' )   

此语句表示您正在将事例表中的客户限制为仅为那些已购买水壶的客户。 但是,由于嵌套表属性的数量不受限制,因此,Analysis Services 不提供可供选择的可能值的列表。 从而,您必须键入确切的值。

您可以单击 编辑查询 以手动更改筛选器表达式。 但是,如果手动更改筛选表达式的任意部分,网格都将被禁用,并且此后只能在文本编辑模式下编辑筛选表达式。 若要恢复网格编辑模式,必须清除筛选表达式并重新开始。

警告


不能在嵌套表筛选器中使用 LIKE 运算符。

课程中的下一个任务

预测关联 ( 数据挖掘中级教程 )

另请参阅

模型筛选器语法和示例(Analysis Services – 数据挖掘)
挖掘模型的筛选器(Analysis Services - 数据挖掘)