从 databricks 表的字符串列中收集用户信息(电子邮件、IP 地址等)
Posted
技术标签:
【中文标题】从 databricks 表的字符串列中收集用户信息(电子邮件、IP 地址等)【英文标题】:Collecting user information(email, ip address, etc) from string column of databricks table 【发布时间】:2020-07-14 06:13:58 【问题描述】:我在 databricks 表中有一个包含文本数据的字符串列。我想从该列中提取用户信息,例如电子邮件、IP 地址和社会保险号。
我目前正在对列应用正则表达式来获取这些值,例如:
%sql
SELECT * FROM my_table WHERE col like '%_@__%.__%';
使用同一列上的其他正则表达式提取其他信息也是如此。 是否有任何通用查询可用于从列中查找这些用户信息?除了使用正则表达式之外,我们还有其他方法吗?
列值示例:
abc@gmail.com test@gmail.com 测试 测试 123456 11.0.6.13 22.44.66.7 测试 49.37.4.136 103.136.64.304【问题讨论】:
1.您可以在列中显示示例值吗? 2. 拆分(...) 用示例编辑了我的问题 我想,正则表达式 【参考方案1】:您是否考虑过使用 regexp_extract,例如
%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
我的结果与您的样本数据:
您的方法必须更加复杂,例如电子邮件的正则表达式是错误的。
【讨论】:
以上是关于从 databricks 表的字符串列中收集用户信息(电子邮件、IP 地址等)的主要内容,如果未能解决你的问题,请参考以下文章
在 Databricks SQL 中将字符串转换为日期返回 null
如何检查 SQL Server 2008 表中字符串列中的 id