DataStage Transformer 阶段如何检查显式文本是否在列的值中
DataStage Transformer stage how to check if explicit text is in the column's values
目前,我在并行作业中使用 Transformer 阶段内的 Count 函数来检查 1 个阶段变量 (StageVar) 的值是否包含一些显式值,然后给出另一个列 (Code) 一些值。
有很多 Code 可以在 StageVar 中查看,但我只使用 'D' 代码例如:
If the StageVar contains 'DEBT' (and only 'DEBT', not any other string like 'DEBTOR' or 'ODEBT', etc) in its value, the Code column for that row will have the 'D' code.
这是我在代码列的推导中使用的代码:
If Count(StageVar, 'DEBT') > 0 Then 'D' Else SetNull()
它成功地将代码“D”提供给 StageVar 包含“DEBT[ 的那一行=43=]' 字符串。但问题是 StageVar 的内容并不总是具有独立的 'DEBT' 字符串。
在某些情况下,StageVar 可能包含“DEBTOR”,例如 'PAY DEBTOR STATEMENT IN NOVEMBER' 或“ODEBT' 就像 'PAYMENT ODEBT FOR NOVEMBER',我将忽略它并且不会为 Code 列提供 'D' 代码。
但是上面的代码也为他们提供了'D'代码。
你们知道如何在 Transformer 舞台内部解决这个问题吗?
谢谢!
确保 StageVar 有前导 space 和尾随 space。例如" NATIONAL DEBT IS OUT OF CONTROL "
您可以使用 Count() 函数,但 Index() 可能更符合您的需要。还要将您的搜索字符串包含在 space 个字符中。
If Count(StageVar, " DEBT ") > 0 Then "D" Else SetNull()
If Index(StageVar, " DEBT ", 1) > 0 Then "D" Else SetNull()
Index() 在找到第一个匹配项后立即停止搜索。 Count() 必须强制搜索到 StageVar 的末尾。
目前,我在并行作业中使用 Transformer 阶段内的 Count 函数来检查 1 个阶段变量 (StageVar) 的值是否包含一些显式值,然后给出另一个列 (Code) 一些值。
有很多 Code 可以在 StageVar 中查看,但我只使用 'D' 代码例如:
If the StageVar contains 'DEBT' (and only 'DEBT', not any other string like 'DEBTOR' or 'ODEBT', etc) in its value, the Code column for that row will have the 'D' code.
这是我在代码列的推导中使用的代码:
If Count(StageVar, 'DEBT') > 0 Then 'D' Else SetNull()
它成功地将代码“D”提供给 StageVar 包含“DEBT[ 的那一行=43=]' 字符串。但问题是 StageVar 的内容并不总是具有独立的 'DEBT' 字符串。
在某些情况下,StageVar 可能包含“DEBTOR”,例如 'PAY DEBTOR STATEMENT IN NOVEMBER' 或“ODEBT' 就像 'PAYMENT ODEBT FOR NOVEMBER',我将忽略它并且不会为 Code 列提供 'D' 代码。
但是上面的代码也为他们提供了'D'代码。
你们知道如何在 Transformer 舞台内部解决这个问题吗?
谢谢!
确保 StageVar 有前导 space 和尾随 space。例如" NATIONAL DEBT IS OUT OF CONTROL "
您可以使用 Count() 函数,但 Index() 可能更符合您的需要。还要将您的搜索字符串包含在 space 个字符中。
If Count(StageVar, " DEBT ") > 0 Then "D" Else SetNull()
If Index(StageVar, " DEBT ", 1) > 0 Then "D" Else SetNull()
Index() 在找到第一个匹配项后立即停止搜索。 Count() 必须强制搜索到 StageVar 的末尾。