sql—从databricks表的字符串列收集用户信息(电子邮件、ip地址等)

o4tp2gmn  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(452)

我在databricks表中有一个包含文本数据的字符串列。我想从这个专栏中提取用户信息,如电子邮件,ip地址和社会安全号码。
我目前正在列上应用regex来获得如下值:

%sql
SELECT * FROM my_table WHERE  col like '%_@__%.__%';

对于在同一列上使用其他正则表达式提取其他信息也是如此。是否有任何通用查询可用于从列中查找这些用户信息?除了使用正则表达式,我们还有别的方法吗?
列值示例:
@gmail.com
test@gmail.com
测试
测试
123456
11.0.6.13
22.44.66.7
测试
49.37.4.136
103.136.64.304

aydmsdu9

aydmsdu91#

你考虑过使用regexp\u提取吗

%sql
SELECT *,
  regexp_extract( yourColumn, '(.*@.*)', 1 ) AS email,
  regexp_extract( yourColumn, '([a-z]+)', 1 ) AS someText,
  regexp_extract( yourColumn, '(\\d+)', 1 ) AS someDigits,
  regexp_extract( yourColumn, '([0-9]{6})', 1 ) AS sixDigits,
  regexp_extract( yourColumn, '(\\d+\.\\d+\.\\d+\.\\d+)', 1 ) AS ipAddress
FROM tmp

我的结果和你的样本数据:

你的方法必须更加复杂,例如电子邮件的正则表达式是错误的。

相关问题