如何检查Delta表的字符串列中哪些记录是非数字的



我正在使用Azure上的Databricks处理Delta表。

Delta表包含大约1亿条包含许多列的记录。其中一列数据类型是String,但包含大数(BIGINT)。只有一些记录具有一些随机的非数值。

问题:有没有办法选择这些非数字的记录通过DatabricksSQL笔记本吗?

数据的例子:

<表类>BCDE…tbody><<tr>"838472910">……………"392018">……………"10293849021">……………"零">……………"9384038">……………"21314">……………未映射的……………"3840594739">……………"不明">……………"29380072">……………"592812012">……………"8432178930">……………"EMPTYVALUE">……………

有几种可能性:

  1. 尝试将值强制转换为bigint,并选择强制转换结果为nil的行:
select * from test where cast(data as bigint) is null
  1. 使用regexp操作符(doc)执行检查:
select * from test where data not regexp '^[0-9]+$'

两种方法都给出了相同的结果,尽管我认为第一种方法会快一点(尽管需要测试来确认)。

相关内容

  • 没有找到相关文章

最新更新