请问大家,天ds,小时hh,周和月分区是如何命名的?
creationtime为时间格式的转换
insert overwrite table testtable1 partition (year,month) select *,year(creationtime) as year, month(creathiontime) as month from testtable; creationtime为时间戳格式的转换(导入parquet格式时间格式默认是时间戳
insert overwrite table testtable1 partition(year,month) select *,from_unixtime(cast(createtime/1000 as int),'yyyy') as year, month(from_unixtime(cast(createtime/1000 as int),'yyyy-MM-dd HH:mm:ss')) as month from testtable; 删除原表,分区表重命名
drop table testtable; alter table testtable1 rename to testtable; 动态分区之后的数据存储路径,一个分区就是一个目录
分区信息的默认配置是$bizdate 而根据调度参数文档来看,系统内置参数的$bizdate的格式为yyyymmdd,${..}参数的$bizdate自定义的格式可以是如${yyyy}、${yyyymm}、${yyyymmdd}和${yyyy-mm-dd}等,同时根据业务日期的系统内置参数$bizdate(昨天)获取以下时间周期的取值为下图 更多关于分区相关调度参数可以参考文档:https://help.aliyun.com/document_detail/137548.html
会以ds分区来统筹管理所有的分区名称,然后靠调度来实现具体的分区时间,因为ds中一般都会保留到某天,特意设置分区名称倒是也可以,不过不好落实;非要弄的话,可以用ws以及ys来表示,也就是以周分片,以月分片
在文档中有 https://www.alibabacloud.com/help/zh/dataworks/latest/configure-scheduling-parameters-configure-scheduling-parameters#section-z8s-3an-b37 示例如下: 系统内置变量var1赋值取业务时间:var1=$bizdate 系统内置变量var3赋值取定时时间:var3=$cyctime 自定义参数var2赋值取业务时间:var2=${yyyymmdd} 自定义参数var4赋值取定时时间: var4=$[yyyymmddhh24:mi:ss] 常量var5参数赋值为abc:var5=abc
可以参考调度参数一节: https://www.alibabacloud.com/help/zh/dataworks/latest/configure-scheduling-parameters-configure-scheduling-parameters
其中: yyyy:表示- 4位的年份,取值为$cyctime的年份。 - yy:表示2位的年份,取值为$cyctime的年份。 - mm:表示月份,取值为$cyctime的月份。 - dd:表示天,取值为$cyctime的天。 - hh24:表示小时(12进制使用hh),取值为$cyctime的小时。 - ss:表示秒,取值为$cyctime的秒。 - mi:表示分钟,取值为$cyctime的分钟。
具体的解释可以参考官网:https://www.alibabacloud.com/help/zh/dataworks/latest/configure-scheduling-parameters-configure-scheduling-parameters
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。