0

我是 Snowflake 的新手,并且运行查询以获取几天的数据 - 这将返回超过 2 亿行,并且需要几天时间。我尝试在 Jupyter 中运行相同的查询 - 并且内核在查询结束之前重新启动/死亡。即使它进入了 Jupyter——我怀疑我可以在任何合理的时间线上分析数据(但也许使用 dask?)。

我不确定从哪里开始——我正在尝试检查数据中的缺失值,我的第一直觉是使用 Jupyter——但我现在迷路了。

我的下一个想法是留在 Snowflake 中 - 并使用 case 语句检查那里的列(例如 sum(case when column_value = '' then 1 else 0 end) as number_missing_values

有没有人有任何想法/方向我可以尝试 - 或者知道我是否做错了什么?谢谢!

4

1 回答 1

0

不是您正在寻找的答案,而是

sum(case when column_value = '' then 1 else 0 end) as number_missing_values`

当你说缺失值时,这只会找到空字符串的值

这也可以写成更简单的形式:

count_if(column_value = '') as number_missing_values

数据库已经知道一列中有多少行,也知道有多少空列。如果将数据加载到表中,不加载空字符串可能更有意义,然后使用 null 代替,因为不计算成本,您可以运行:

count(*) - count(column) as number_empty_values

另外值得注意的是,如果您有两张雪花表,您可以通过MINUS进行比较

又名

select * from table_1
minus 
select * from table_2

查找丢失的行很有用,您必须在两个方向上都这样做。

然后你可以散列行,或者通过HASH_AGG散列整个表

但是通常在查找丢失的数据时,您有一个外部系统,因此驱动程序是“该系统可以处理什么”并找到共同点。

同样在过去,我们在处理中搜索导致重复数据的错误(我们需要/不希望重复的地方),所以上面的和 COUNT DISTINCT 之类的命令很有用。

于 2022-01-17T20:25:03.453 回答