Clickhouse除数为0

这篇博客探讨了Clickhouse在处理除法运算时与Java和JavaScript的不同。当除数为0时,Clickhouse返回Infinite,而被除数为0则返回NaN。在SQL中处理占比时,可以通过isInfinite函数和if条件来避免除以0的情况。此外,还提到了一个小技巧,即在分母上加小数以防止除0错误,但可能引入误差。

最近在读Clickhouse的官方文档,顺便记录下.

Divide by zero
在编程语言中遇到除数为0的情况有的抛出异常,比如在Java中:

> java.lang.ArithmeticException: / by zero  

也有的会返回Infinity(无穷大),比如在JavaScript中:

> 1/0
Infinity

在Clickhouse中如果除数为0会返回Infinite,被除数为0时会返回NaN

edee83c425b9 :) select 1/0

SELECT 1 / 0

┌─divide(1, 0)─┐
│          inf │
└──────────────┘

1 rows in set. Elapsed: 0.320 sec. 

edee83c425b9 :) select 0/0

SELECT 0 / 0

┌─divide(0, 0)─┐
│          nan │
└──────────────┘

1 rows in set. Elapsed: 0.003 sec. 

edee83c425b9 :) select 0/1

SELECT 0 / 1

┌─divide(0, 1)─┐
│            0 │
└──────────────┘

1 rows in se

### ClickHouse 作为 AI 知识库存储的优缺点及适用场景 #### 优点 ##### 高效的数据处理能力 ClickHouse 是一种专为高性能数据分析设计的列式数据库,能够快速执行复杂的聚合查询和大规模数据计算。这种特性使其特别适合于需要频繁更新和实时分析的应用场景,例如用户行为分析、推荐系统训练数据准备等[^1]。 ```sql SELECT category, COUNT(*) AS count FROM user_actions GROUP BY category ORDER BY count DESC; ``` ##### 大规模并行处理支持 通过分布式架构的支持,ClickHouse 能够高效地利用集群资源完成海量数据集上的操作,这是构建大型AI知识库所必需的能力之一[^4]。它的高吞吐率意味着即使面对TB级甚至PB级别的数据量也依然保持良好的响应速度。 ##### 数据压缩与存储优化 采用先进的压缩技术和独特的列存储方式不仅减少了物理存储需求,同时也提升了I/O效率,这对降低硬件成本以及加快查询返回有着重要意义[^4]。这些优势让ClickHouse 成为了那些追求性价比解决方案的理想选择。 #### 缺点 ##### 功能局限性 尽管ClickHouse 在OLAP领域表现出色,但它并非通用型关系型数据库,在事务处理(ACID)、复杂JOIN等方面存在不足之处[^3]。如果AI知识库的设计涉及到大量联接运算或者其他传统RDBMS强项的功能,则需额外考虑补充措施或替代方案。 ##### 学习曲线陡峭 对于初次接触该系统的开发者来说,掌握其最佳实践可能需要一定的时间投入,尤其是理解如何针对特定工作负载调优表结构设计等问题[^2]。此外,由于生态系统相对较小,可用第三方工具链也可能有限制影响开发灵活性。 #### 适用场景 - **实时推荐引擎**:基于用户的交互记录迅速生成个性化建议列表。 - **预测建模基础平台**:从历史订单信息中提取特征变量供机器学习算法使用以预估未来销量走势等情况。 - **日志/事件流挖掘**:收集来自不同源的服务请求详情进而发现潜在规律指导业务改进方向。 综上所述,虽然ClickHouse 并不适合所有类型的AI 应用程序作为唯一持久化层选项,但对于侧重高速度批量统计汇总任务而言确实是一个强有力的竞争者。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoderFusionZhu

不要打赏太多哦!我喝速溶就行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值