在 Ab Initio 图中,我有一个输入文件,其中行中有管道分隔的值。我使用类似的 DML 文件来解析它:
record
decimal("|",0, maximum_length=19, sign_reserved) v1 = NULL("");
utf8 string("|", maximum_length=10) v2 = "";
utf8 string("|", maximum_length=10) v3 = "";
utf8 string("|", maximum_length=40) v4 = "";
utf8 string("|", maximum_length=255) v5 = "";
utf8 string("\n", maximum_length=40) v6 = "";
end
为了在以后与其他数据的相等比较中使用,我想让所有这些字符串用管道分隔,所以我需要更改 v6 值。
我尝试通过将输出 DML 更改为此一个简单的 Reformat 来做到这一点,并将转换函数留空:
record
decimal("|",0, maximum_length=19, sign_reserved) v1 = NULL("");
utf8 string("|", maximum_length=10) v2 = "";
utf8 string("|", maximum_length=10) v3 = "";
utf8 string("|", maximum_length=40) v4 = "";
utf8 string("|", maximum_length=255) v5 = "";
utf8 string("|", maximum_length=40) v6 = "";
string(1) newline = "\n";
end
但是,这在 v6.6 中留下了垃圾字符。后来我需要过滤 v6 值以使其仅包含正确的字符。这个解决方案似乎并不整洁。
为了避免这些垃圾留在 v6 中,我尝试使用 reinterpret_as、string_concat 和其他方法,但最终没有一个好的解决方案。我应该如何以简单的方式更改 v6 的分隔符?