Greenplum含to_char函数的SQL语句迁移转换为HiveSQL咨询
Greenplum to_char千分位格式化的HiveSQL等价实现
原语句功能说明
待转换的Greenplum语句trim(to_char(sum(revenue),'9,999,999,999'))实现逻辑如下:
- 对revenue字段求和后,将数值转换为带千分位分隔符的字符串
- 自动去除格式化产生的首尾空格
- 支持的最大数值为9999999999(百亿位),超过该值时返回
#### - 开头的
||为字符串拼接符,可直接保留复用
等价HiveSQL实现
Hive 2.0+版本可直接使用内置format_number函数实现相同功能,转换后语句如下:
||trim(format_number(sum(revenue), 0))
完全对齐原逻辑的兼容写法
如果需要严格对齐原Greenplum逻辑中「超阈值返回####」的规则,可以补充判断逻辑:
||CASE WHEN sum(revenue) > 9999999999 THEN '####' ELSE trim(format_number(sum(revenue), 0)) END
功能验证对比
| 输入sum(revenue)值 | 原Greenplum输出 | Hive实现输出 |
|---|---|---|
| 123456 | 123,456 | 123,456 |
| 1234567890 | 1,234,567,890 | 1,234,567,890 |
| 0 | 0 | 0 |
| 10000000000 | #### | 10,000,000,000(兼容写法返回####) |
内容的提问来源于stack exchange,提问作者Developer Rajinikanth
相关产品推荐
相关产品推荐

