栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Maxcompute 小记

Maxcompute 小记

1、关于NULL值排序

①HIVE

时间类型:
SELECt  id
FROM    (
            SELECt  GETDATE() id
            UNIOn
            SELECT  NULL id
            UNIOn
            SELECT  TO_DATE('20211101','yyyymmdd') id
        ) t
ORDER BY id ASC
;

结果:
+------------+
| id         |
+------------+
| NULL       |
| 2021-11-01 00:00:00 |
| 2021-12-03 16:36:06 |

数值类型:
SELECT  id
FROM    (
            SELECt  1 id
            UNIOn
            SELECT  NULL id
            UNIOn
            SELECT  2 id
        ) t
ORDER BY id ASC
;
结果:
+------------+
| id         |
+------------+
| NULL       |
| 1          |
| 2          |
+------------+

字符类型:
SELECT  id
FROM    (
            SELECt  '张王' id
            UNIOn
            SELECT  NULL id
            UNIOn
            SELECT '李赵' id
        ) t
ORDER BY id ASC
;
结果:
+----+
| id |
+----+
| NULL |
| 张王 |
| 李赵 |
+----+

②Mysql

时间类型:
select
id from
(select  now() id 
union 
select null id 
) t order by id asc;
结果:
N
2021-12-03 16:40:44

数值类型:
select
id from
(select  1 id 
union 
select null id 
union 
select 2 id 
) t order by id asc;
结果:
N
1
2

字符类型:
SELECT  id
FROM    (
            SELECt  '张王' id
            UNIOn
            SELECT  NULL id
            UNIOn
            SELECT '李赵' id
        ) t
ORDER BY id ASC
;

结果:
N
张王
李赵

③Oracle

 在Oracle数据库数据处理的SQL语句中,当表的排序列中含有null或者''时,缺省Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前。

如果你没有对null或''做处理时,这时做降序排序时,就会发现null或''是排在最前位的;做升序排序时,会发现null或''是排在最后位的。

nulls first和nulls last是Oracle Order by支持的语法, 

如果order by 中指定了表达式Nulls first,则表示null值的记录将排在最前(不管是asc 还是 desc) 

如果order by 中指定了表达式Nulls last,则表示null值的记录将排在最后(不管是asc 还是 desc)

2、合并小文件

set odps.merge.max.filenumber.per.job=50000; --值默认为50000个;当分区数大于50000时需要调整,最大可到1000000万,大于1000000的提交多次merge
ALTER TABLE 表名[partition] MERGE SMALLFILES;
3、排除某个不想要的字段

首先需要设置一个参数:
set hive.support.quoted.identifiers=None;
然后指定要剔除哪个字段:

insert overwrite table test partition(data_date=20211121)

select `(data_date)?+.+` from dm.dm_user_add ;
剔除多个字段:

## 最好按照字段顺序来写,遇到字段未过滤的时候把字段顺序换一下试试 select `(dateline|data_date)?+.+` from dm.dm_user_add

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/652878.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号