我正在尝试查询 spark 表以查找“ref”列中包含不是 A、T、G、C 或 N 的字母的所有行。
一个有效的结果应该只包含那些字母,并且可以包含这些字母的任意长度或组合。
例如:
有效 = AA、ATTTGGGGCCCC、C、G、TTG、N 等。
无效 = P, ., NULL
以下查询仅返回包含单核苷酸的列:
SELECT ref
from test_set
where ref not in ('*A*', '*T*', '*G*', '*C*', '*N*')
ref
1 T
2 C
3 T
4 C
5 T
以下查询在 impala sql 中有效,但在 spark 中无效,而且非常难看:
SELECT regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(ref, 'A', ''), 'T', ''), 'G', ''), 'C', ''), 'N', '')
from spark_df