永洪社区

标题: 计算列 [打印本页]

作者: yhdata_onLSWQfA    时间: 2024-9-15 10:51
标题: 计算列
一列的内容有两种表达方式:“userName":"小王","loginName":"xiaowang","IdapfullPath":"无锡工厂\\工艺部\\现场组”
  "IdapfullPath":"无锡工厂\\工艺部\\现场组","loginName":"xiaohangfei","userName":"小黄飞"

我想提新建计算列:找出对应的汉字名  小王、小黄飞
怎么建立计算列表达式



作者: yhdata_onLSWQfA    时间: 2024-9-15 10:53
一列的内容有两种表达方式:
表达方式①"userName":"小王","loginName":"xiaowang","IdapfullPath":"无锡工厂\\工艺部\\现场组”
表达方式②"IdapfullPath":"无锡工厂\\工艺部\\现场组","loginName":"xiaohangfei","userName":"小黄飞"

我想提新建计算列:找出对应的汉字名  小王、小黄飞
怎么建立计算列表达式
作者: Fiona    时间: 2024-9-15 13:51
1. 新建计算列: mid(col['列'], find( "userName", col['列'])+11)
2. 新建计算列2: find(",", col['计算列'])
3. 新建计算列3: mid(col['计算列'],1, if (col['计算列2']-2)>0 then col['计算列2']-2  else len(col['计算列'])-1 end)
作者: Malelee    时间: 2024-9-15 14:15
//定义字符串
var data = 'userName":"小王","loginName":"xiaowang","IdapfullPath":"无锡工厂\\工艺部\\现场组”'
//找到分隔符位置
var a=find(":",data,1)
var b=find(",",data,1)
//根据分隔符位置截取
var c =substring(data,a,b-1)
//替换掉没用的分隔符
var d =substitute(c,'"','')
//最后依次组合进去
var d1 =substitute(substring('userName":"小王","loginName":"xiaowang","IdapfullPath":"无锡工厂\\工艺部\\现场组”',find(":",data,1),find(",",data,1)-1),'"','')
debug(d)
debug(d1)
作者: yanieye    时间: 2024-9-15 19:19
基本思路就是根据特征,做字符串的截取
先找到"userName":"的位置, 在找到 "userName":" 的位置 + 1之后的",也就是人名之后的那个引号,取中间的内容就是要得到的人名
计算列的公式如下
substring(col['oriCol'], indexOf(col['oriCol'], '"userName":"') + len('"userName":"'), indexOf(col['oriCol'], '"userName":"') + len('"userName":"') +1 + indexOf(substring(col['oriCol'], indexOf(col['oriCol'], '"userName":"') + len('"userName":"') + 1), '"'))
特别说明,这种处理会很消耗计算资源,如果行数多,效率会不好。最好是在ETL过程中先把数据处理好。





欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4