TS 填充工具
单个工具示例
TS 填充工具有一个单个工具示例。转至示例工作流以了解如何在 Alteryx Designer 中访问此示例和其他更多示例。
使用 TS 填充获取时间序列数据的数据流,然后对序列中存在的任何空白进行填充。
此工具主要用作使用下游时间序列相关工具和宏指令的准备步骤。如果数据流在时间序列中包含空白,那么某些时间序列工具就会产生意外结果或错误,例如,您的数据序列本应包含每 5 分钟一次的测量值,但实际上并没有每 5 分钟测量一次。无论何时,当您怀疑数据流中可能存在空白时,请使用此宏指令。
注意
此工具使用 R 工具。转至选项 > 下载预测工具,并登录到 Alteryx 下载和许可门户以安装 R 和 R 工具使用的包。请访问 下载和使用预测工具。
连接输入
TS 填充工具需要一个 Designer 数据流,该数据流具有一个包含日期或日期时间值的列。
配置工具
使用配置选项卡为时间序列的填充方式设置控件。
选择日期或日期时间列:选择指示何时收集数据行的日期或日期时间列。
间隔:选择测量时间序列的间隔。选项包括分钟、小时、日、周、月和年。
增量:选择用来分隔每个唯一时间序列周期的增量。您可以将增量设置为从 1 到 100 的任意整数。
示例
要生成涵盖“每 3 周”的序列,请将间隔设置为周,并将增量设置为 3。
查看输出
输入宏指令的每一行都会出现在输出中。此外,宏指令还会评估时间序列中是否有任何周期缺失,如果有,则会生成一行来填补空白。
该工具会将两个数据列附加到传入数据流:
OriginalDateTime:日期时间列,包含未更改的原始日期时间值。
FlagGeneratedRow:布尔标志列,其中“True”表示数据行由宏指令生成,以填补时间序列空白,“False”则表示它是源数据行。
对于通过宏指令的源数据行:
FlagGeneratedRow 列显示“False”,表示它是源数据行,而不是由宏指令生成的行。
[yourDateTimeColumn] 列则被“四舍五入”到适当的周期。请参阅下文的 四舍五入 部分。
所有其他通过的源列均保持不变。
对于为填补空白而生成的行:
FlagGeneratedRow 列显示为“True”,表示该行由宏指令生成,而不是源数据行。
[yourDateTimeColumn] 列有一个由宏指令生成的填充日期或日期时间值,该值“填补”了序列中识别到的空白。
所有其他列均为空。
周期开始/结束
根据最常见的业务使用情形,时间序列周期的处理方式如下:
“时间级别”:用于间隔
“日期级别”:对于间隔不少于一天的情况,周期为“周期结束”。
日期时间“四舍五入”
宏指令对传入数据进行的唯一修改是:将“四舍五入”应用于 [yourDateTimeColumn]。它基于三个关键元素:
间隔
数据流中的最早日期时间值
增量
首先,所选间隔的所有小数都将被截断。例如,如果选择“小时”作为间隔,宏指令将截断日期时间值中的任何分钟和秒,比如:下午 1:58 将变为下午 1:00。
截断所选间隔的小数后,宏指令将确定有效周期。进入宏指令的最早日期时间值构成序列的基础。继续上面的“小时序列”示例,如果 [yourDateTimeColumn] 中最早的日期时间为下午 1:58,则第一个周期为下午 1:00。如果所选增量为 5,那么后续周期会在前一个周期的基础上连续加上所选的增量(5 小时),在此示例中生成下午 1:00、下午 6:00、晚上 11:00 等结果。
最后,在确定了所有有效周期后,所有日期时间值便会调整为适当的有效周期。因此,[yourDateTimeColumn] 中,下午 5:59 的原始值会变成下午 5:00,而下午 6:02 会变成下午 6:00,依此类推。
周期“标签”
在由宏指令应用所有日期时间调整后,得到的 [yourDateTimeColumn] 现在实际上就是该周期的“标签”。但是,数据类型是日期或日期时间列(而不是字符串),因此这个“标签”可能并不完全直观。关键是要认识到,日期或日期时间“标签”中属于所选间隔“小数”的任何部分都应被忽略。因此,如果您的间隔是“年”,那么一个周期示例可以是“2018-01-01”,但标签中重要的是年,而标签的小数部分“01-01”应被忽略,这意味着该周期只是 2018 年,或“2018 年的任何时间”。请参阅下表。
数据保存
请注意,除了上述日期时间“四舍五入”之外,宏指令不会更改任何传入数据。它不会对传入数据进行任何合并、汇总、唯一化或任何类型的验证。但是,由于日期四舍五入,同一周期内的多个测量值现在将带有相同的周期标签。因此,数据现在更清晰,也更容易汇总,因为数据可以按这个一致的、四舍五入的周期标签进行“分组”。
夏令时
请注意,宏指令不考虑夏令时,因此如果您的时间级别序列数据跨越了夏令时转换,那么宏指令可能会生成表示无效小时的小时行(或分钟行)。例如,三月份“夏令时开始”时时钟向前调整一小时的地区,将会为夏令时开始当天凌晨 2 点生成行,即使该时间实际上从未发生(时钟从 1:59:59 切换到 3:00:00)。使用宏指令后的筛选工具可以轻松删除该小时。
使用案例示例
为帮助进一步理解,以下表格列出了可用的间隔选项,随后列出了返回的数据类型,以及该间隔类型的周期是“周期开始”还是“周期结束”间隔。然后,该表格显示了序列中的增量和“第一个原始值”的示例,以说明会得到什么样的周期“标签”,以及周期标签实际含义的英文描述。最后,该表格注明了周期标签中哪些部分基本上应被忽略,比如属于间隔的小数部分。
间隔 | 返回的数据类型 | 周期开始/结束 | 增量示例 | 第一个原始值示例 | 得到的第一个周期标签 | 周期描述 | 周期标签中应忽略的部分 |
---|---|---|---|---|---|---|---|
分钟 | 日期时间 | 开始 | 2 | 2015-04-09 02:16:33 | 2015-04-09 02:16:00 | “开始于 2:16 的 2 分钟周期,涵盖 2:16 和 2:17” | 秒 |
小时 | 日期时间 | 开始 | 4 | 2015-04-09 02:16:33 | 2015-04-09 02:00:00 | “开始于 2 点的 4 小时周期,涵盖 2 点、3 点、4 点和 5 点” | 分钟或更短 |
日 | 日期 | 结束 | 6 | 2015-04-09 02:16:33 | 2015-04-09 | “结束于 4 月9 日的 6 天周期,涵盖 4 月 4 日到 4 月 9 日。” | 小时或更短 |
周 | 日期 | 结束 | 1 | 2015-04-09 02:16:33 | 2015-04-09 | “结束于 4 月9 日的 1 周周期,涵盖 4 月 3 日到 4 月 9 日。” | 小时或更短 |
月 | 日期 | 结束 | 3 | 2015-04-09 02:16:33 | 2015-04-01 | “结束于四月的 3 个月周期,涵盖二月、三月和四月。” | 天或更短 |
年 | 日期 | 结束 | 2 | 2015-04-09 02:16:33 | 2015-04-01 | “结束于 2015 年的 2 年周期,涵盖 2014 年和 2015 年。” | 月或更短 |