关联表

概念信息

DEFINE RELATION 命令

关联表使您可以将最多 18 个具有不同记录结构的 Analytics 表组合,并访问和分析关联的表中的任何域组合,就如同它们在同一表中一样。

如果两个表包含一个或多个不同的域(数据元素),则记录结构会有所不同。对于需要快速概览数个实际表格上的数据关联的信息工作来说,或者如果需要在生成报告前链接具有相应全名的代码,关联是理想的选择。

示例

场景

您想要创建一份销售报告,其中包含有关三月份客户和已销售产品的详情,但这些数据分散在三个表中。

方法

您将 Customer 主表与 Orders 表相关联,将 Orders 表与 Product 主表相关联,以创建一个包含报告所需的所有信息的临时表关联:

  • 客户名称和位置来自 Customer 主表
  • 订单详情来自 Orders 表
  • 产品详情来自 Product 主表

关联操作会创建一个“虚拟”表

关联表得到的结果是虚拟的,进行了关联的各个表仍然保持独立,并且可随时取消关联。

和联接或合并不同,关联不会创建新的表格。只会让关联的表或子表的域在从中创建关联的父表中可用。

如果需要,可执行单独的操作,从父表和子表中将任何域组合提取到新的表格中。

使用公共键域关联表

您使用公共键域 – 即同时出现在这两个表中的员工编号、供应商 ID 或地址等数据元素来关联表。如果关键字域中存在相同的值,则最后会实现匹配,将来自分开的两个表中的各个记录关联。基本关联操作不支持部分匹配。

对您要关联的表中的键域有多个要求:

键域特征 要求
数据元素 必须相同。例如,两个键域都是员工编号域。
数据类型

可为任何数据类型,但键域的数据类型必须彼此相同。例如,两个字符域。

日期时间子类型(日期、日期时间和时间)只能与相同子类型关联。

字段类型 可以是物理域或计算域。
域名称 可以不同。
开始位置 可以不同。
域长度

必须相同。

字符域中的对齐方式和大小写 必须相同。

父和子表及关键字域

在关联操作中的表和关键字域基于将表添加到关联中的次序而被定为父项子项

  • 父表 – 添加的第一个表(打开一个表时将自动添加,并开始关联操作)
  • 父关键字域 – 从父表中选择的关键字域
  • 子表 – 添加的第二个表,以及所添加的任何后续表
  • 子关键字域 – 从子表或后续各表中选择的关键字域

您可以自由选择所需的主和子表和关键字域。然而,只有在键域符合关联的要求时,关联才会成功。

有关详细信息,请参见关于关键字域

访问子表域

建立关联后,您可以将任意子表中的域添加到父视图,尽管并未要求您如此操作。无论是否将子表域添加到父视图,都可以使用 Analytics 对话框中的源表下拉列表以及表达式生成器,通过父表访问和分析子表域。

通过父表访问的子表域以表名.域名格式显示,以指明域来自哪个表。可以访问关联的表,并修改关联,但是仅可通过父表而不是子表进行这些操作。

对关联表进行排序并建立索引

得自关联的虚拟表使用父表的现有排序顺序。在关联表之前不必对父表关键字域进行排序或索引。但是可选择进行该操作,因为在关联期间没有预排序选项可用于父表。

作为关联操作内部功能的一部分,子表关键字域会自动以升序进行索引。即使子表取消了关联,这些子表索引也会存在,并且可在需要时手动删除。

其他有关关联的信息

下表提供有关关联的附加信息。

功能区域

详情

记录匹配

将一对表进行关联在逻辑上等同于使用所有主记录选项将它们进行联接,即使用涉及匹配主记录和辅助记录(父记录和子记录)以及不匹配的主记录的多对一联接类型。

对于相应的多对一联接,关联操作只将父键值与第一个出现的匹配子键值匹配。如果出现其他匹配子关键值,则会忽略它们。在计划表关联时需要考虑到该特性,尤其是在子表中正常地多次出现匹配键值时。一种方法是尝试颠倒两个表的关联,让子表成为父表,反之亦然。

不匹配记录以及缺失域值

如果父键值在关联子表中找不到匹配,对于缺少的域值,Analytics 在字符和日期时间域显示空白,在数字域显示为零,在逻辑域显示为“F”。

子表关键字域中的重复值或空白

如果子表关键字域中的重复值或缺失值在随后的分析中无效,在某些情况下预处理子表来删除重复值和/或空白可解决该问题。

从关联表中提取数据

在从关联表中提取数据时有两个选项可用:

  • 使用提取对话框中的视图选项,可以将父表或子表中的部分或全部数据提取到一个新的 Analytics 表。新表不再与其他任何表关联。

    如果您使用视图选项,您必须首先将相关子表数据添加到父视图。

  • 使用提取对话框中的记录选项,可将父表中的数据提取到一个新的 Analytics 表。新表将保留原始父表的关联。记录选项不支持提取子表数据。

未强制要求关键字域长度相同

Analytics 不强制要求父表和子表中的共用关键字域长度一致。

建议您始终使用长度一致的域,如果需要,请在执行关联前手动协调长度。使用不同长度的关键字域得到的关联结果不可靠。

当执行涉及日期、日期时间、或时间的操作时,因为 Analytics 使用内部的 Analytics 日期时间格式,日期时间关键字域长度可能不同。

更改关键字域数据类型

正在使用父关键字域或子关键字域进行表的关联时,不能更改它们的数据类型。如果需要更改任一域的数据类型,必须先删除关联。如果数据类型的更改结果彼此不同,则将不再能使用这两个域进行表的关联。

避免条件索引

请勿对子表关键字域使用条件索引。可在对父表及其关联的表进行操作时应用条件。

在构建关联时使用条件索引可能导致在关联层级中的不同点造成不需要的数据间隔。更安全的方法是构建呈现的数据集与关联所需的一样完整的关联,然后根据需要应用条件。

正在关联的表的位置限制

要进行关联,表必须处于同一 Analytics 项目中。服务器表必须位于同一服务器上,并且必须使用相同的服务器配置文件进行访问。不能将本地表与服务器表关联。

调整对齐方式和大小写

在使用字符关键字域关联成对表格时,对齐方式和大小写必须一致:

  • 两种关键字域必须具有相同对齐方式:使用 LTRIM( ) 函数从关键字域删除前导空格。

  • 两种关键字域的大小写必须相同,可为大写、小写或首字母大写。要调整大小写,可使用 UPPER( )、LOWER( ) 或 PROPER( ) 函数。

关联基于 UTC 或非 UTC 数据

基于 UTC 和非 UTC 日期时间关键字域可用于关联两个表。(UTC 是通用协调时间,经度零度时间)。执行包含日期时间或时间操作时,Analytics 使用内部 Analytics 日期时间格式,这样会将随后的两个日期时间解释为相同的,并组成一个匹配:

  • 基于 UTC – 31/12/2014 10:30:15-05:00

  • 非 UTC – 31/12/2014 15:30:15

如果您在 Analytics 操作中混合了 UTC 和非 UTC 时间数据,您应该保持谨慎。尽管 Analytics 会匹配以上的两个时间值,这样做可能没有逻辑意义,因为一个值会引用一个时区,而其他值不会。要了解 UTC 相关的更多信息,请参阅 日期和时间选项