Show Menu
主题×

CrossRows

与其他转换类似,CrossRows 转换也应用于日志源中的数据行(日志条目)。
对于每行数据,转换将获取指定输入字段的值,执行一组处理步骤,并将结果记录到指定的输出字段。但是,当转换对一行数据(此行称为输出行)起作用时,它将该行加上与同一跟踪ID关联的一行或多行其他数据(这些行称为输入行)。 CrossRows 因此,对于给定的跟踪ID,每个输出行的输出字段的值基于一个或多个输入行的输入字段的值。
该转换提供多个条件和约束,使您能够限制转换的输入行。您可以根据 Data Workbench Server 的条件(请参阅 条件 )、相对于输出行的输入行范围或相对于输出行时间的时间范围来表示这些限制。对于那些满足转换条件和约束的输入行,可以应用运算(如 SUM)来确定输出字段的值。
若要使用 CrossRows 转换,数据必须按时间排序并按源数据中的跟踪 ID 分组。因此, CrossRows 仅当在文件或文件中定 Transformation.cfg 义时才可 Transformation Dataset Include 用。
在查看下表中的参数描述时,请切记以下事项:
  • 输出行是转换在给定的时间点处理的数据行。
  • 输入行是其输入字段值用作转换输入的其他所有数据行(输出行之前、之后或包括输出行)。输入行由 Input Condition(输入条件)、Key(键)、Row Begin(开始行)、Row End(结束行)、Time Begin(开始时间)和 Time End(结束时间)参数决定。
参数 描述 默认值
名称 转换的描述性名称。可以在此处输入任何名称。
Comments(备注) 可选。有关转换的说明。
Condition(条件) 将转换输出限制到特定的日志条目。如果某个特定日志条目不满足条件,Output(输出)参数中的字段将保持不变。输入仍可用于影响其他日志条目。
Input(输入) 输入行中用作输入的字段名称。
Input Condition(输入条件) 仅从特定输入行接受转换的输入。如果某个特定输入行不满足输入条件,则将忽略来自该行的输入字段且不会影响其他输出行。但是仍将根据指定的条件修改来自该行的输出字段。
可选。用作键的字段名称。
如果指定了键,给定输出行的输入行会限制为与该输出行具有相同键值的连续行块。除此限制之外, CrossRows 转换的其他参数也对输入行施加了其他限制。
例如,如果您在处理 Web 数据并将字段 x-session-key(每个会话都有一个唯一的值)设为键,则转换的输入行会限制为那些与该输出行具有相同 x-session-key 值的行。因此,您考虑的只是那些表示页面查看与输出行发生在相同会话期间的输入行。
Operation(运算)
对于每个输出行,运算会应用于所有满足 Input Condition(输入条件)、Key(键)、Row Begin(开始行)、Row End(结束行)、Time Begin(开始时间)和 Time End(结束时间)参数定义的全部条件的输入行以生成输出:
  • ALL 从输入行中获取输入字段的所有值,并将它们作为矢量输出。
  • SUM 将输入行中输入字段的值解释为数字并对它们求和。
  • FIRST ROW 输出第一个输入行的输入字段值。
  • LAST ROW 输出最后一个输入行的输入字段值。
Output(输出) 输出字段的名称。
Row Begin/Row End(开始行/结束行)
可选。指定相对于输出行的输入行范围。例如,开始行的值为“0”将排除输出行之前的所有行。开始行的值为“1”还会排除输出行。常用范围包括:
  • 开始 0:此行和后面的所有行。
  • 开始 1:后面的所有行。
  • 结束 0:此行和前面的所有行。
  • 结束 -1:前面的所有行。
  • 开始 -1,结束 -1:上一行。
  • 开始 1,结束 1:下一行。
所有行
Time Begin/Time End(开始时间/结束时间)
可选。指定相对于输出行时间的时间范围。例如,结束时间为“30 分钟”将包括在输出行之后 30 分钟内发生的所有行。开始时间为“-30 分钟”将包括在输出行之前 30 分钟内发生的所有行。
可用时间单位有天、周、小时、分钟、ms(毫秒)、ticks(100 纳秒)和 ns(纳秒)。
所有时间
此示例中的 CrossRows 转换应用于 Web 数据行,以查找每次页面查看的下一页面查看时间。由于我们知道,CrossRows 仅在数据集构建过程的转换阶段应用,因此数据行按访客(每个访客有一个唯一的跟踪 ID)和时间排序。
仅对那些填充了 x-is-page-view 字段的输入行(指示数据行表示一次页面查看)考虑输入字段 x-timestamp。为 Key(键)参数指定了 x-session-key 字段(每个会话都有一个唯一的值)。因此,转换的输入行(日志条目)限制为与输出行具有相同 x-session-key 值的连续行块。换句话说,若要考虑对某个输入行进行转换,该输入行必须表示与输出行中的页面查看发生在同一会话过程中的页面查看。The first row operation takes the value of the output field from the first input row satisfying the Input Condition and having the same x-session-key value as the output row.
CrossRows 执行的时间量与其输入大小和输出大小之和成正比。这意味着,对于 SUM、FIRST ROW 和 LAST ROW 运算,其效率不低于其他转换。对于 ALL,情况更复杂一些,因为有可能配置 CrossRows 为每行数据(日志条目)输出一定的数据量,这些数据量与给定跟踪 ID 的总行数(日志条目)成正比。