命令组 的每次迭代都会生成一个新的结果表或数据 CSV 文件,而您希望将它们全部合并到一个文件中。
常见但风险较高的方法
- 选项 1:设置动态链变量
- 可扩展性有限: 动态变量有严格的大小限制。即使你的数据现在能够容纳,但随着数据量的增长,将来也可能会达到容量上限。
- 静默失败: 如果变量达到大小限制,链不会报错;它只会截断数据,导致记录丢失。
- 额外处理: 您仍然需要将最终变量字符串转换回文件才能使用它。
- 选项 2:将每个文件写入 Wdata 表
- 性能缓慢: 每次迭代都需要多次 API 调用并进行身份验证,这会显著降低链式执行速度。
- 复杂检索: 您无法立即使用数据;您必须运行查询才能将所有数据重新连接起来。
- 需要清理: 如果需要重新运行链,则必须先构建额外的逻辑来删除或替换表中的旧文件。
- 选项 3:将每个文件写入 Workiva 电子表格
- 性能缓慢: 与 Wdata 方法类似,循环内重复的 API 调用会导致执行时间过长。
- 出错风险高: 每次插入都必须计算确切的行号;否则,可能会覆盖数据或留下空白。
最佳解决方案:之前的堆栈文件输出
如果列始终相同且标题相同,则最佳解决方案是使用 表格转换堆叠文件命令 及其内置的跨命令组迭代堆叠选项。
注意: 对于此用例,请确保使用“表格转换”堆栈文件,而不是同名的文件实用程序文件。这一点很重要,因为文件实用程序不会识别和删除文件中第一个列标题之后的列标题,而表格转换程序可以。
当此命令位于命令组中且启用迭代时,“先前堆栈文件输出”变量选项将出现在变量面板中其自身的“堆栈文件”部分下。
使用此变量 ,后跟逗号 ,然后是包含要跨迭代堆叠的数据的命令。
注意: 您的链必须在每次迭代中执行堆栈文件命令,而不能跳过该命令。如果链式结构没有正确执行,那么在该迭代之前堆叠的任何数据都将丢失,最终文件中将缺少数据。
命令组之后的任何命令链都可以使用堆栈文件 - “堆栈文件输出”变量,该变量将是包含所有迭代的完整文件。
其他说明
- 如果您想要合并不需要列标题的数据集,文件实用程序堆栈文件命令非常有用,并且它具有相同的“先前堆栈文件输出”选项。
- Handlebars 的“渲染文本模板”和“渲染文件模板”命令有名为“先前渲染的文本”和“先前渲染的文件”的选项,其操作方式与此处看到的“先前堆栈文件输出”选项相同,可用于在迭代中将模板和/或 JSON 文件连接在一起。
- 如果传递给 stack files 命令的新文件没有结果,只要列标题存在,也没关系。