我偶然发现需要使用其他参考表中的关键字来屏蔽数据的情况,如下所示:
1:
表A包含数千个关键字,表B包含每天处理的1500万++行..
如何使用新列中的表A中的关键字替换表B中的数据?
我尝试使用join但是join只能在字符串完全相同时匹配
这是我的代码
select
sourcetype, hourx,minutex,t1.adn,hostname,t1.appsid,t1.taskid,
product_id,
location,
smsIncoming,
case
when smsIncoming regexp keyword = true then keyword
else 'undef' end smsIncoming_replaced
from(
select ... from ...
)t1
left join
(select adn,keyword,type,mapping_param,mapping_param_json,appsid,taskid,is_api,charlentgh,wordcount,max(datex)
from ( select adn,keyword,type,mapping_param,mapping_param_json,appsid,taskid,is_api,charlentgh,wordcount,datex ,last_update,
max(last_update) over (partition by keyword) as last_modified
from sqm_stg.reflex_service_map ) as sub
where last_update = last_modified
group by adn,keyword,type,mapping_param,mapping_param_json,appsid,taskid,is_api,charlentgh,wordcount)t2
on t1.adn=t2.adn and t1.appsid=t2.appsid and t1.taskid=t2.taskid
需要建议:)
由于
答案 0 :(得分:0)
使用instr(string str, string substr)
函数:返回substr
中第一次出现str
的位置。如果任一参数为null,则返回null;如果在substr
中找不到str
,则返回0。请注意,这不是零基础。 str中的第一个字符具有索引1.
case
when instr(smsIncoming,keyword) >0 then keyword
else 'undef'
end smsIncoming_replaced