在 SQL Server Analysis Services 中,必须将数据作为包含在事例表中的一系列事例馈送到数据挖掘算法中。 但是,并非所有情况都可以由单个数据行描述。 例如,一个案例可能源自两个表:一个包含客户信息的表,另一个表包含客户购买信息。 客户信息表中的单个客户在客户购买表中可能有多个项目,这使得难以使用单行描述数据。 Analysis Services 提供了一种独特的方法来处理这些情况,方法是使用 嵌套表。 下图演示了嵌套表的概念。
在此关系图中,第一个表(即父表)包含有关客户的信息,并为每个客户关联唯一标识符。 第二个表,即子表,包含每个客户的购物记录。 子表中的购买项通过唯一标识符 CustomerKey 列与父表建立联系。 在图表中,第三个表格显示了这两个合并的表格。
嵌套表在事例表中表示为具有 TABLE 数据类型的特殊列。 对于任何特定的情况行,此类列包含从子表中选出并与父表关联的行。
嵌套表中的数据可用于预测或输入,或用于两者。 例如,模型中可能有两个嵌套表列:一个嵌套表列可能包含客户购买的产品列表,而另一个嵌套表列包含有关客户爱好和兴趣的信息,可能从调查中获取。 在此方案中,可以使用客户的爱好和兴趣作为分析购买行为以及预测可能购买的输入。
联接事例表和嵌套表
为了创建嵌套表,两个源表必须包含一个定义的关系,以便一个表中的项可以与其他表相关。 在 SQL Server Data Tools (SSDT)中,可以在数据源视图中定义此关系。
注释
CustomerKey 字段是关系键,用于链接数据源视图定义中的事例表和嵌套表,以及建立挖掘结构中列的关系。 但是,通常不应在基于该结构的挖掘模型中使用此关系键。 通常最好省略挖掘模型中的关系键列(如果它只用于联接表,并且不提供对分析感兴趣的信息)。
可以使用数据挖掘扩展插件(DMX)或分析管理对象(AMO)以编程方式创建嵌套表,也可以在 SQL Server Data Tools (SSDT)中使用数据挖掘向导和数据挖掘设计器。
在挖掘模型中使用嵌套表列
在事例表中,密钥通常是客户 ID、产品名称或系列中的日期:唯一标识表中行的数据。 . 但是,在嵌套表中,键通常不是关系键(或外键),而是表示要建模的属性的列。
例如,如果事例表包含订单,而嵌套表包含订单中的商品,那么你可能会对跨多个订单的嵌套表中存储的商品之间的关系进行建模,这些订单存储在事例表中。 因此,虽然 Items 嵌套表通过关系键 OrderID 联接到 Orders 事例表,但不应将 OrderID 用作嵌套表键。 而是选择 “项 ”列作为嵌套表键,因为该列包含要建模的数据。 在大多数情况下,可以安全地忽略挖掘模型中的 OrderID ,因为事例表和嵌套表之间的关系已经由数据源视图定义建立。
选择要用作嵌套表键的列时,必须确保该列中的值对于每个事例都是唯一的。 例如,如果事例表表示客户,而嵌套表表示客户购买的项目,则必须确保每个客户未多次列出任何项目。 如果客户多次购买了同一项,则可能需要创建一个不同的视图,该视图包含聚合每个唯一产品的购买计数的列。
决定如何处理嵌套表中的重复值取决于要创建的挖掘模型以及要解决的业务问题。 在某些情况下,你可能不关心客户购买特定产品的次数,但想要检查是否存在至少一次购买。 在其他方案中,购买的数量和顺序可能非常重要。
如果项目的顺序很重要,您可能需要一个额外的列来标识顺序。 使用序列聚类分析算法创建模型时,必须选择其他 键序列 列来表示项的顺序。 键序列列是一种特殊的嵌套键,仅在序列聚类分析模型中使用,并且需要唯一的数字数据类型。 例如,整数和日期都可以用作键序列列,但所有序列值必须是唯一的。 除了键序列列,序列聚类分析模型还具有一个嵌套表键,表示正在建模的属性,例如已购买的产品。
在嵌套表中使用非键嵌套列
定义事例表和嵌套表之间的联接后,选择了一个列,其中包含要用作嵌套表键的有趣且唯一属性的列,则可以包含嵌套表中的其他列,以用作模型的输入。 嵌套表中的所有列都可用于输入、预测和输入,或仅用于预测。
例如,如果嵌套表包含 Product、 ProductQuantity 和 ProductPrice 列,则可以选择 Product 作为嵌套表键,但将 ProductQuantity 添加到挖掘结构以用作输入。
筛选嵌套表数据
在 SQL Server 2014 中,可以针对用于训练或测试数据挖掘模型的数据创建筛选器。 文件过滤器可用于影响模型的组成,或用于在案例子集上测试模型。 还可以将筛选器应用于嵌套表。 但是,对可用于嵌套表的语法有一些限制。
在将筛选器应用于嵌套表时,通常会测试属性是否存在或不存在。 例如,可以应用一个筛选器,该筛选器将模型中使用的事例限制为仅那些在嵌套表中具有指定值的事例。 或者,可以将模型中使用的事例限制为未购买特定项的客户。
在嵌套表上创建筛选器时,还可以使用大于或小于等运算符。 例如,可以将模型中使用的事例限制为至少购买了目标产品的 n 个单位的客户。 筛选嵌套表属性的功能为自定义模型提供了极大的灵活性。
有关如何创建和使用模型筛选器的详细信息,请参阅“挖掘模型筛选器”(Analysis Services - 数据挖掘)。
另请参阅
数据挖掘算法 (Analysis Services - 数据挖掘)
挖掘结构 (Analysis Services - 数据挖掘)