(代表Snowflake客户提交)
.........................
需要过滤空数据列,我听说可以在模式INFORMATION_SCHEMA
的视图“ COLUMNS”中找到有关数据库所有表的所有列的信息。
但是,我发现不能正确显示100%的正确数据。当我们给出的约束不是Null或它是主键时,它将显示Non-nullable。对于其他列,它显示Nullable。但这是不对的,即使有一条记录表明该列是不可为空的,我们也需要实际检查该列中的数据。
还有另一种方法吗?
.........................
有什么建议吗?
答案 0 :(得分:2)
INFORMATION_SCHEMA
中的视图用于描述数据库中表的结构,而不是其内容。您可以通过查询null
的{{1}}视图来确定哪些列可能或可能不包含COLUMNS
值:
INFORMATION_SCHEMA
但是,这不会告诉您这些列是否实际上包含null。为此,您实际上需要对您感兴趣的表运行查询。幸运的是,select COLUMN_NAME, IS_NULLABLE from YOUR_DB.INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'YOUR_TABLE_NAME' and TABLE_SCHEMA = 'PUBLIC';
函数隐式仅计算非空值,因此您可以轻松地使用它来确定包含{ {1}}将其视为您感兴趣的列。例如:
count
如果您的表有100行并且从不包含任何空值,您将得到
null
但是,如果您的表有100行,其中25行包含select count(1) as TOTAL, count(YOUR_COL) as YOUR_COL_NON_NULL
from YOUR_TABLE;
列中的+-------+-------------------+
+ TOTAL | YOUR_COL_NON_NULL |
+-------+-------------------+
| 100 | 100 |
+-------+-------------------+
值,则会返回:
null
这些都不是Snowflake特有的,只是基本的SQL。