如何使用SQL计算没有列名的所有空值?
我正在从文件中读取和执行sql查询,我需要检查结果集以计算所有列中的所有空值。因为SQL是从文件中读取的,所以我不知道列名,因此在尝试查找空值时无法按名称调用列 我认为使用CTE是最好的方法,但是当我不知道列名是什么的时候,我怎么能调用这些列呢如何使用SQL计算没有列名的所有空值?,sql,snowflake-cloud-data-platform,Sql,Snowflake Cloud Data Platform,我正在从文件中读取和执行sql查询,我需要检查结果集以计算所有列中的所有空值。因为SQL是从文件中读取的,所以我不知道列名,因此在尝试查找空值时无法按名称调用列 我认为使用CTE是最好的方法,但是当我不知道列名是什么的时候,我怎么能调用这些列呢 WITH query_results AS ( <sql_read_from_file_here> ) select count_if(<column_name> is not null) FROM query_results
WITH query_results AS
(
<sql_read_from_file_here>
)
select count_if(<column_name> is not null) FROM query_results
查询结果为
(
)
从查询结果中选择计数(如果不为空)
如果您使用Python读取SQL语句文件,您可以执行如下操作,即使用
pglast
解析SQL查询以获取列:
import pglast
sql_read_from_file_here = "SELECT 1 foo, 1 bar"
ast = pglast.parse_sql(sql_read_from_file_here)
cols = ast[0]['RawStmt']['stmt']['SelectStmt']['targetList']
sum_stmt = "sum(iff({col} is null,1,0))"
sums = [sum_sql.format(col = col['ResTarget']['name']) for col in cols]
print(f"select {' + '.join(sums)} total_null_count from query_results")
# outputs: select sum(iff(foo is null,1,0)) + sum(iff(bar is null,1,0)) total_null_count from query_results
你知道列数吗?你能告诉我们你是如何加载数据的吗?