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

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

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

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

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

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

创建和修改 Association 模型的副本

  1. 在 Business Intelligence Development Studio 的**“挖掘模型”选项卡中,右键单击 Association 模型并选择“新建挖掘模型”**。

  2. 对于**“模型名称”,键入 Association Filtered。 对于“算法名称”,选择“Microsoft 关联规则”。 单击“确定”**。

  3. 在针对 Association Filtered 模型的列中,单击 IncomeGroup 行并将值从**“忽略”更改为“输入”**。

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

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

  1. 在**“挖掘模型”选项卡中,右键单击模型 Association Filtered,然后选择“设置模型筛选器”**。

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

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

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

  4. 单击**“运算符”**文本框,然后从列表中选择 = 运算符。

  5. 单击**“值”**文本框,然后在该框中键入 High。

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

  7. 单击网格下一行中的 AND/OR 文本框,然后选择 OR

  8. 在**“挖掘结构列”文本框中,选择 IncomeGroup。 在“值”**文本框中,键入 Moderate。

    您创建的筛选条件将自动添加到**“表达式”**文本框中,且应该如下所示:

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

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

  10. 对于**“运算符”,保留默认值 Contains。 单击“值”**文本框。

  11. 在**“筛选器”对话框中,在“挖掘结构列”**下方的第一行中选择 Model。

  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 运算符。

课程中的下一个任务

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