datastage - DataStage Transformer 阶段如何检查显式文本是否在列的值中
问题描述
目前,我在并行作业中使用 Transformer 阶段内的 Count 函数来检查 1 个阶段变量 ( StageVar ) 的值是否包含一些显式值,然后给另一列 ( 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.
这是我在 Code 列的派生中使用的代码:
If Count(StageVar, 'DEBT') > 0 Then 'D' Else SetNull()
它成功地将代码“ D ”提供给StageVar包含“ DEBT ”字符串的行。但问题是StageVar的内容并不总是具有独立的“ DEBT ”字符串。
在某些情况下,StageVar可能包含“ DEBTOR ”,例如“PAY DEBTOR STATEMENT IN NOVEMBER”或“ ODEBT ”,例如“PAYMENT ODEBT FOR NOVEMBER”,我将忽略它们,并且不会给出代码的“ D ”代码柱子。
但上面的代码也给出了' D'他们的代码。你们知道如何在变形金刚阶段本身解决这个问题吗?
谢谢!
解决方案
确保 StageVar 具有前导空格和尾随空格。例如" NATIONAL DEBT IS OUT OF CONTROL "
,您可以使用 Count() 函数,但 Index() 可能更符合您的要求。还将您的搜索字符串包含在空格字符中。
If Count(StageVar, " DEBT ") > 0 Then "D" Else SetNull()
If Index(StageVar, " DEBT ", 1) > 0 Then "D" Else SetNull()
Index() 在找到第一个匹配项后立即停止搜索。Count() 必须强制搜索到 StageVar 的末尾。
推荐阅读
- php - PHP实时搜索未获取数据库中的现有行
- pdf - 如何添加链接以下载 pdf 文件 nuxt?
- ios - 为什么没有代码的单视图 swift 应用程序会泄漏内存?
- ebpf - 是否可以尾调用使用不同模式的 eBPF 代码?
- c# - 如何在 C# 中使用不使用指针来更改数组引用索引?
- swift - 如何实现单例微调器(活动指示器)?
- python-3.x - 在同一轴上绘制具有相同颜色但颜色强度不同的多个图形
- javascript - 如何指定在 Cypress.io 中导入文件的基本文件路径?
- json - 如何在querybuilder中的一些addselect中对字段进行分组?
- php - 使用括号和不在地址上使用括号有什么区别