从 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

从 Databricks 将日志推送到 Log Analytics

从 Pandas DF 的字符串列中提取数字

如何从时区字符串列中获取时区字符串?