微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

问:如何配置 ClickHouse 返回 NULL 而不是 0?

如何解决问:如何配置 ClickHouse 返回 NULL 而不是 0?

假设我创建了一个没有任何记录的表:

    create table metric (date Int32) Engine=MergeTree ORDER BY (date);

如果我运行这个查询

    select max(date) from metric;

ClickHouse 返回

+-----------+
| max(date) |
+-----------+
|         0 |
+-----------+
1 row in set (0.02 sec)

代替

+-----------+
| max(date) |
+-----------+
|      NULL |
+-----------+
1 row in set (0.02 sec)

可以将 ClickHouse 配置为返回 NULL,而不必像这样编写查询

select max(toNullable(date)) from metric;

解决方法

使用设置 aggregate_functions_null_for_empty

SELECT max(date)
FROM metric
SETTINGS aggregate_functions_null_for_empty = 1

/*
┌─maxOrNull(date)─┐
│            ᴺᵁᴸᴸ │
└─────────────────┘
*/

或考虑使用 OrNull-combinator:

SELECT maxOrNull(date)
FROM metric

/*
┌─maxOrNull(date)─┐
│            ᴺᵁᴸᴸ │
└─────────────────┘
*/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。