我正在使用Azure上的Databricks处理Delta表。
Delta表包含大约1亿条包含许多列的记录。其中一列数据类型是String,但包含大数(BIGINT)。只有一些记录具有一些随机的非数值。
问题:有没有办法选择这些非数字的记录通过DatabricksSQL笔记本吗?
数据的例子:
<表类>B C D E … tbody><<tr>"838472910"> … … … … … "392018"> … … … … … "10293849021"> … … … … … "零"> … … … … … "9384038"> … … … … … "21314"> … … … … … 未映射的 … … … … … "3840594739"> … … … … … "不明"> … … … … … "29380072"> … … … … … "592812012"> … … … … … "8432178930"> … … … … … "EMPTYVALUE"> … … … … … 表类>
有几种可能性:
- 尝试将值强制转换为
bigint
,并选择强制转换结果为nil
的行:
select * from test where cast(data as bigint) is null
- 使用
regexp
操作符(doc)执行检查:
select * from test where data not regexp '^[0-9]+$'
两种方法都给出了相同的结果,尽管我认为第一种方法会快一点(尽管需要测试来确认)。