在工作中,我遇到了一个用 InfoSphere 11.7 编写的旧流程,我正在尝试将其迁移到另一个框架,但似乎没有人知道它是如何工作的(当然包括我)。
ETL 过程将固定长度的 .txt UTF-8 文件作为输入。文件结构如下:
300000007200_0000000000004 20230524123704000000 P4 0001000073873269002000005091662 0001000073875269002 8 1
700202909 2160000000005967 20230524041311000000 P1 000100005606358000700000236541000045097 2502000501851 0001000066063680007 1000 000000237540000000 1
30000008810000000000003279 20230524041319000000 P2 00010000681349580050000366684071497 6204131926 00000100006813496800464000000000000000036768100000 1
在某些时候,程序会在每行的某个位置使用
IsNull
函数计算空值,例如:
If IsNull(Substrings(Input.reg,1,1)) then " " else Substrings(Input.reg,1,1)
我熟悉 pandas 或 SQL 中的空值,但我不确定在这种情况下什么是空值。根据我的理解,永远不会有空值,因为文件中的每个位置总会有一个字符(包括空格)。
我说得对吗?
开发人员搜索 Substrings(Input.reg,1,1),其理论上可以返回 null 尽管事实上输入无法传递某些内容来获取 null。如果目标列类型不可为空,则需要传递一个返回“not-null”的表达式。因此,它们像这样包装输入,或者使用 NullToValue() 或 NullToEmpty() 函数包装输入,以便表达式本身保证不可为空的输出。