Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 配置单元选择列A中的字符串包含列B中的字符串的行_String_Hive_Hiveql - Fatal编程技术网

String 配置单元选择列A中的字符串包含列B中的字符串的行

String 配置单元选择列A中的字符串包含列B中的字符串的行,string,hive,hiveql,String,Hive,Hiveql,我有一个数据集,其中包含在一列中包含无效项的一些行 我试图从B列和C列中选择所有不同的行,但B列有无效的条目。列A中的字符串包含列B的正确名称,因此如果我能找出如何选择str(B)在str(A)中的所有行,那么我应该只得到正确的数据 伪代码可能如下所示: SELECT DISTINCT b,c FROM some.log WHERE date = 'today' AND str(b) IN str(a) df = df[df.apply(lambda x: x.name in x.url, a

我有一个数据集,其中包含在一列中包含无效项的一些行

我试图从B列和C列中选择所有不同的行,但B列有无效的条目。列A中的字符串包含列B的正确名称,因此如果我能找出如何选择str(B)在str(A)中的所有行,那么我应该只得到正确的数据

伪代码可能如下所示:

SELECT DISTINCT b,c FROM some.log WHERE date = 'today' AND str(b) IN str(a)
df = df[df.apply(lambda x: x.name in x.url, axis=1)]
df

a                         b        c
/bobs/burgers/1234        bobs     idx 
/bobs/burgers/2234        fred     idx
/cindys/sandwhiches/3234  cindy    idx

df = df[df.apply(lambda x: x.name in x.url, axis=1)]

a                         b        c
/bobs/burgers/1234        bobs     idx
/cindys/sandwhiches/3234  cindy    idx
我知道如何使用Python来解决这个问题,但是A列在每一行上都是唯一的。所以,如果我选择不同的行并包含列A,我基本上只是选择所有行,这将生成一个60gb的文件

python代码如下所示:

SELECT DISTINCT b,c FROM some.log WHERE date = 'today' AND str(b) IN str(a)
df = df[df.apply(lambda x: x.name in x.url, axis=1)]
df

a                         b        c
/bobs/burgers/1234        bobs     idx 
/bobs/burgers/2234        fred     idx
/cindys/sandwhiches/3234  cindy    idx

df = df[df.apply(lambda x: x.name in x.url, axis=1)]

a                         b        c
/bobs/burgers/1234        bobs     idx
/cindys/sandwhiches/3234  cindy    idx
这将导致如下结果:

SELECT DISTINCT b,c FROM some.log WHERE date = 'today' AND str(b) IN str(a)
df = df[df.apply(lambda x: x.name in x.url, axis=1)]
df

a                         b        c
/bobs/burgers/1234        bobs     idx 
/bobs/burgers/2234        fred     idx
/cindys/sandwhiches/3234  cindy    idx

df = df[df.apply(lambda x: x.name in x.url, axis=1)]

a                         b        c
/bobs/burgers/1234        bobs     idx
/cindys/sandwhiches/3234  cindy    idx

是否可以使用Hive进行过滤,这样就不需要下载大文件并使用python进行处理?

类似于
RLIKE

select distinct b,c from some.log where date = 'today' and a like concat('%',b,'%');


除了
like
rlike
之外,您还可以使用以下功能:

使用
仪表

select distinct b,c from some.log where date = current_date and a instr(a,b) > 0;
使用
定位

select distinct b,c from some.log where date = current_date and locate(b, a) > 0;

参见此参考:

“喜欢”对我有用。注意:如果要在列中查找特定的子字符串,只需键入
where column(如“%substring%”)
,就可以了