hive 中的 关系运算

1. 等值比较: =

         语法:A=B

         操作类型:所有基本类型

         描述: 如果表达式A与表达式B相等,则为TRUE;否则为FALSE

         举例:

         hive>select 1 from lxw_dual where 1=1;

         1

2. 不等值比较: <>

         语法: A <> B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A与表达式B不相等,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where 1 <> 2;

1


注意

由于在通常得SQL写法中不等于也可以这样写 != 。但在hive中,当一个string类型和int类型比较的时候会出现问题。


数字和数字类型用 可以用 != 比较:

hive> select * from t_pvorder where 1 != 1 and start_date=20130306 limit 1;                   
OK
Time taken: 0.079 seconds


带引号的数字和数字类型 可以用!= 比较: 

hive> select * from t_pvorder where "136258563267" != 0 and start_date=20130306 limit 1;    
OK
1323499396180741        13437046875509ec        0       102213  100002  01      -1      2013-03-06 20:59:07     1362574747440zW4        20130306
Time taken: 0.169 seconds


带引号的数字和带引号数字类型 可以用 != 比较:

hive> select * from t_pvorder where "136258563267" != "0" and start_date=20130306 limit 1;
OK
1323499396180741        13437046875509ec        0       102213  100002  01      -1      2013-03-06 20:59:07     1362574747440zW4        20130306
Time taken: 0.129 seconds

字符串和数字类型 不可以用 !=比较:

hive> select * from t_pvorder where 0 != "1362585632671uFu" and start_date=20130306 limit 1;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there's no reduce operator
//发起mapreduce   查不出结果
....


字符串和数字类型 不可以用 <> 比较:

hive> select * from t_pvorder where 0 <> "1362585632671uFu" and start_date=20130306 limit 1;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there's no reduce operator
//发起mapreduce   查不出结果
....


总之,用不等于比较的时候两者的字段类型尽量保持一致。


3. 小于比较: <

         语法: A < B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于表达式B,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where 1 < 2;

1

 

4. 小于等于比较: <=

语法: A <= B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于或者等于表达式B,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where 1 <= 1;

1

5. 大于比较: >

语法: A > B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A大于表达式B,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where 2 > 1;

1

 

6. 大于等于比较: >=

语法: A >= B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A大于或者等于表达式B,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where 1 >= 1;

1

 

注意:String的比较要注意(常用的时间比较可以先to_date之后再比较)

hive> select* from lxw_dual;

OK

201111120900:00:00     2011111209

 

hive> selecta,b,a<b,a>b,a=b from lxw_dual;

201111120900:00:00     2011111209      false  true    false

 

7. 空值判断: IS NULL

语法: A IS NULL

操作类型: 所有类型

描述: 如果表达式A的值为NULL,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where null is null;

1

 

8. 非空判断: IS NOTNULL

语法: A IS NOT NULL

操作类型: 所有类型

描述: 如果表达式A的值为NULL,则为FALSE;否则为TRUE

举例:

hive> select1 from lxw_dual where 1 is not null;

1

 

9. LIKE比较: LIKE

语法: A LIKE B

操作类型: strings

描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合表达式B   的正则语法,则为TRUE;否则为FALSE。B中字符”_”表示任意单个字符,而字符”%”表示任意数量的字符。

举例:

hive> select1 from lxw_dual where 'football' like 'foot%';

1

hive> select1 from lxw_dual where 'football' like 'foot____';

1

注意:否定比较时候用NOT ALIKE B

hive> select1 from lxw_dual where NOT 'football' like 'fff%';

1

 

10. JAVA的LIKE操作: RLIKE

语法: A RLIKE B

操作类型: strings

描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合JAVA正则表达式B的正则语法,则为TRUE;否则为FALSE。

举例:

hive> select1 from lxw_dual where 'footbar’ rlike '^f.*r$’;

1

注意:判断一个字符串是否全为数字:

hive>select 1from lxw_dual where '123456' rlike '^\\d+$';

1

hive> select1 from lxw_dual where '123456aa' rlike '^\\d+$';

 

11. REGEXP操作: REGEXP

语法: A REGEXP B

操作类型: strings

描述: 功能与RLIKE相同

举例:

hive> select1 from lxw_dual where 'footbar' REGEXP '^f.*r$';

1





  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、关系运算: 4 1. 等值比较: = 4 2. 不等值比较: 4 3. 小于比较: < 4 4. 小于等于比较: 5 6. 大于等于比较: >= 5 7. 空值判断: IS NULL 5 8. 非空判断: IS NOT NULL 6 9. LIKE比较: LIKE 6 10. JAVA的LIKE操作: RLIKE 6 11. REGEXP操作: REGEXP 7 二、数学运算: 7 1. 加法操作: + 7 2. 减法操作: - 7 3. 乘法操作: * 8 4. 除法操作: / 8 5. 取余操作: % 8 6. 位与操作: & 9 7. 位或操作: | 9 8. 位异或操作: ^ 9 9.位取反操作: ~ 10 三、逻辑运算: 10 1. 逻辑与操作: AND 10 2. 逻辑或操作: OR 10 3. 逻辑非操作: NOT 10 四、数值计算 11 1. 取整函数: round 11 2. 指定精度取整函数: round 11 3. 向下取整函数: floor 11 4. 向上取整函数: ceil 12 5. 向上取整函数: ceiling 12 6. 取随机数函数: rand 12 7. 自然指数函数: exp 13 8. 以10为底对数函数: log10 13 9. 以2为底对数函数: log2 13 10. 对数函数: log 13 11. 幂运算函数: pow 14 12. 幂运算函数: power 14 13. 开平方函数: sqrt 14 14. 二进制函数: bin 14 15. 十六进制函数: hex 15 16. 反转十六进制函数: unhex 15 17. 进制转换函数: conv 15 18. 绝对值函数: abs 16 19. 正取余函数: pmod 16 20. 正弦函数: sin 16 21. 反正弦函数: asin 16 22. 余弦函数: cos 17 23. 反余弦函数: acos 17 24. positive函数: positive 17 25. negative函数: negative 17 五、日期函数 18 1. UNIX时间戳转日期函数: from_unixtime 18 2. 获取当前UNIX时间戳函数: unix_timestamp 18 3. 日期转UNIX时间戳函数: unix_timestamp 18 4. 指定格式日期转UNIX时间戳函数: unix_timestamp 18 5. 日期时间转日期函数: to_date 19 6. 日期转年函数: year 19 7. 日期转月函数: month 19 8. 日期转天函数: day 19 9. 日期转小时函数: hour 20 10. 日期转分钟函数: minute 20 11. 日期转秒函数: second 20 12. 日期转周函数: weekofyear 20 13. 日期比较函数: datediff 21 14. 日期增加函数: date_add 21 15. 日期减少函数: date_sub 21 六、条件函数 21 1. If函数: if 21 2. 非空查找函数: COALESCE 22 3. 条件判断函数:CASE 22 4. 条件判断函数:CASE 22 七、字符串函数 23 1. 字符串长度函数:length 23 2. 字符串反转函数:reverse 23 3. 字符串连接函数:concat 23 4. 带分隔符字符串连接函数:concat_ws 23 5. 字符串截取函数:substr,substring 24 6. 字符串截取函数:substr,substring 24 7. 字符串转大写函数:upper,ucase 24 8. 字符串转小写函数:lower,lcase 25 9. 去空格函数:trim 25 10. 左边去空格函数:ltrim 25 11. 右边去空格函数:rtrim 25 12. 正则表达式替换函数:regexp_replace 26 13. 正则表达式解析函数:regexp_extract 26 14. URL解析函数:parse_url 26 15. json解析函数:get_json_object 27 16. 空格字符串函数:space 27 17. 重复字符串函数:repeat 27 18. 首字符ascii函数:ascii 28 19. 左补足函数:lpad 28 20. 右补足函数:rpad 28 21. 分割字符串函数: split 28 22. 集合查找函数: find_in_set 29 八、集合统计函数 29 1. 个数统计函数: count 29 2. 总和统计函数: sum 29 3. 平均值统计函数: avg 30 4. 最小值统计函数: min 30 5. 最大值统计函数: max 30 6. 非空集合总体变量函数: var_pop 30 7. 非空集合样本变量函数: var_samp 31 8. 总体标准偏离函数: stddev_pop 31 9. 样本标准偏离函数: stddev_samp 31 10.位数函数: percentile 31 11. 位数函数: percentile 31 12. 近似位数函数: percentile_approx 32 13. 近似位数函数: percentile_approx 32 14. 直方图: histogram_numeric 32 九、复合类型构建操作 32 1. Map类型构建: map 32 2. Struct类型构建: struct 33 3. array类型构建: array 33 十、复杂类型访问操作 33 1. array类型访问: A[n] 33 2. map类型访问: M[key] 34 3. struct类型访问: S.x 34 十一、复杂类型长度统计函数 34 1. Map类型长度函数: size(Map) 34 2. array类型长度函数: size(Array) 34 3. 类型转换函数 35
云数据库方案设计 云数据库的云化改造 面向云化环境,数据库在多个方面需要进行改造,包括快捷的安装部署,提供数据 库的动态伸缩和资源隔离,以及监控、迁移、备份等一体化管理,以适应云环境自动 安装部署、一体化监控管理,资源动态分配等需求。 快速安装及部署 1.1 一键部署和分钟级实例的创建: 1. 准备好预置数据库的docker镜像 a. 初始化好空数据目录(也支持根据场景预置数据) b. 数据库配置文件放置在docker镜像之外,通过映射的方式进入镜像内部 2. 用户选择实例资源后(CPU、内存),系统自动计算最佳设置 a. 用户选择实例的内存、CPU数量,使用场景(OLTP、OLAP) b. 根据用户选择,自动调整、优化参数(共享缓存、work_mem、等等) 3. 使用docker镜像加载外置配置文件启动数据 1.2 多种部署方式 1. 单机(单独的docker镜像) 2. 主备 和 负载均衡 a). 配置好的三个独立docker镜像,分别扮演主机、备机、读写分离节点 b). 三个节点配置文件都在外部,映射到内部运行 c). 启动时,根据用户的资源选择和网络场景,自动规划配置文件内容 3. KADB 集群 a). 根据角色配置好独立的docker镜像,分别扮演数据节点、协调器节点等 b). 节点的配置文件都放在外部,映射到内部运行 c). 根据用户设置的资源,场景,自动分配节点数量,配置节点参数. 在线伸缩 云环境,支持在线调整任何一个实例使用的资源。对于数据库而言,若分配的资 源,包括CPU、内存、磁盘等资源发生变化,数据库同样需要对于资源的变化实施生效。 CPU变化时,主要影响数据库的并发连接数和并行参数,在金仓云数据库,并发连 接数和并行参数可以动态调整。 内存发生变化时,数据库的共享内存,排序内存等内存分配支持动态调整,动态扩 展。 磁盘发生变化时,数据库可以配置表空间的存储,以及表存储,分区的存储,动态 使用新增资源。 另外,随着实际业务的增长,数据库集群的负载可能超出初始设计的承受能力,使 得处理能力下降,不再满足业务需求,所以数据库集群支持在线扩展能力,即在不影响 系统正常使用的情况下,增加数据库的数据处理能力。 资源隔离 KingbaseES云数据库支持多租户模式,以实现多个租户之间的资源隔离。 每个租户创建自己的数据库,各自的数据库从元信息、用户数据到内存、以及日志 信息,都是彼此隔离的。每个租户的数据库不可以彼此访问。 各个租户的数据库可以方便的迁移和加载,支持各自的备份和恢复。 一体化管理 使用 KEM 监控数据库运行状态 a). 支持自主监控(由KEM主动呈现) b). 支持将收集的数据汇集到其他管理平台 使用 WEB 对象管理工具管理数据库对象 a). 单机形式的数据库对象管理 b). 主备形式的数据库对象管理 c). KADB集群数据库对象管理 二、向非关系型存储、大数据处理进行扩展 通用数据库 通用数据库按照处理业务的类型,分为交易型数据库和分析型数据库。 1. 交易数据库 主要用于交易类型的业务处理,例如:业务流程电子化,其他业务系统。面向所有 参与业务流程的人员。对数据的操作特点是:大量短、频、快的增删改操作。 2. 分析型数据库 主要用于统计分析,数据挖掘应用。面向决策者和分析人员。对数据库的操作特点 是:大量数据入库,大量复杂查询。 云上的数据库需要有这两种数据库,来应对更多的用户应用需求。 与大数据平台的互访 大数据计算平台,例如Spark、HIVE等,需要支持大数据计算平台与数据库互访。以 大数据计算平台为心,建立分析平台。 1. 大数据计算平台访问数据库 a)大数据计算平台Spark: 可以提供JdbcRDD来访问单机数据库系统,并且根据某列对表进行分区,并行读取, 提升效率。对于集群数据库,Spark工作进程可以对每一个存储节点进行数据读取,通过 这种并行的方式提升效率。 b)大数据计算平台HIVE: 需要在HIVE注册数据库表信息,将数据库的表映射成HIVE表,通过Hive- SQL进行数据读取,并在HIVE进行运算。 2. 数据库访问大数据计算平台 大数据计算平台可以将数据,例如计算结果,写入到数据库,再在数据库, 利用SQL对数据进行分析。 云数据集成 3.1 与RDS的数据集成 数据库使用外部表技术,可以访问RDS的其他数据。 支持多种格式的数据; 支持访问和更新数据。 同时,使用迁移工具实现到RDS的数据集成。 3.2.与大数据存储平台的数据集成 数据库提供外部表技术,可以将交易型和分析型数据库与其他存储平台对接,在数 据库内部,通过外部表访问大数据存储平台的数据,包括: a)与HDFS对接:外部表访问引擎(读写模块),通过调用HDFS的访问接口(
Hive提供了一些关系运算函数来处理查询的关系操作。这些函数包括NVL函数、CASE WHEN THEN ELSE END函数和EXPLODE函数。 NVL函数用于处理空值,它返回第一个非空值。在Hive,NVL函数的语法为:NVL(expr1, expr2),如果expr1为空,返回expr2,否则返回expr1的值。 CASE WHEN THEN ELSE END函数类似于C语言的case语句,它允许根据条件表达式的值选择不同的结果。它的语法为:CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE result3 END。通过使用CASE WHEN THEN ELSE END函数,可以根据特定条件对查询结果进行判断和分类。 EXPLODE函数在Hive用于将数组或集合类型的列转换为多行。它会将一个列的每个元素拆分成多行,并复制其他列的值。EXPLODE函数的语法为:EXPLODE(col)。 综上所述,通过使用Hive关系运算函数,我们可以处理空值、根据条件表达式选择结果,以及将列转换为多行。这些函数在Hive查询非常有用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Hive——Hive常用内置函数总结](https://blog.csdn.net/weixin_44606952/article/details/127929532)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值