如何在ECL中动态生成并输出多个文件?(附尝试代码及报错)
动态生成多文件的正确实现方式
你的代码报错是因为APPLY是用于数据集转换的纯函数式操作,它不允许在内部执行OUTPUT这种带有副作用(生成文件)的命令。要实现动态输出多个文件,改用EACH循环遍历文件名列表即可:
file_names := DATASET([{'file_1'}, {'file_2'}], {STRING name}); ds := DATASET([{'a'}], {STRING val}); EACH file_name IN file_names DO OUTPUT(ds,, file_name.name, THOR); END;
关键说明:
APPLY的设计目的是对数据集的每一行做转换计算,返回新的数据集,不能用来执行像OUTPUT这样的IO操作。EACH是HPCC Systems中用于循环执行命令式操作的结构,适合处理需要逐行执行副作用操作的场景,比如逐个生成文件。
内容的提问来源于stack exchange,提问作者Vannel
相关产品推荐
相关产品推荐

