Doris动态分区表

简介: Doris动态分区表Doris动态分区表传参

网上关于Doris动态分区的文章似乎不太多,而且很多都是从官方文档中借鉴过来的,这段时间自己搭项目,踩过不少Doris动态分区表的坑,所以来和大家分享一下。


1:废话不多说,建表模板如下
create table dwd.dwd_test(
  repay_type varchar(64) comment "还款方式",
  order_cnt bigint comment "还款订单数",
  pt date comment "分区字段"                  -- 必须要带,而且必须是date类型
)
DUPLICATE KEY(repay_type)   -- 明细模型
COMMENT "dwd测试表"
partition by range(pt)()    -- 这个小括号必须要带,支持动静态切换
DISTRIBUTED by HASH(repay_type) BUCKETS 1   -- 也可以在properties中写
PROPERTIES(
  "dynamic_partition.enable" = "true",    -- 是否开启动态分区
  "dynamic_partition.time_unit" = "DAY",    -- 动态分区调度单位 
  "dynamic_partition.start" = "-7",         -- 保留过去7天的数据,可以用来做表的生命周期管理,为负数,如果不填,默认值-2147483648,可以理解为永久保留
  "dynamic_partition.end" = "3",        -- 提前创建分区数 比如在2024-10-26日建表,那么查看表分区 会有p20241026 p20241027 p20241028
  "dynamic_partition.prefix" = "p",     -- 必选项,而且不能为空,通常设置为p
--  "dynamic_parititon.buckets" = "1",      -- 分桶数
  "replication_num" = "1"           -- 副本数
);
2:关于动态分区的查询,支持两种查询方式
-- 1: 通过pt字段查询
select * from test where pt = '2024-10-25';
-- 2: 通过分区查询
select * from test partition p20241025;  -- 注意,这里的表不能加别名 否则会报错
3:插入语句
insert into test partition p20241025 select * from t;
insert overwrite table test partition p20241025 select * from t;
4:参数传递问题

insert overwrite table dwd.dwd_test partition(p${pt})
select
repay_type,
count(distinct order_id) as order_cnt,
'${bizdate}'
from ods.ods_abank_repayment_df partition p${pt}
group by repay_type;

以上为在DBeaver上往动态分区插入数据的语句。因为Doris动态分区配置中,properties中的"dynamic_partition.prefix" 的配置项是必须项,而且不能为空串,所以分区通常是p20241019格式,所以在插入的时候分区参数为p${参数名}的格式传递。

在DolphinScheduler中,全局参数不能设置类型,且会自动把'$[yyyyMMdd]'转为字符串,所以如果通过全局参数配置分区字段的话,会出现'p20241019'或者p'20241019'的情况,导致任务失败。

正确配置方法如下:

1:在当前节点中设置参数,数据类型选择INTEGER

2:注意Dolphin不支持{}的写法,注意使用[]

3:写法还是p${pt}的格式,注意不要带''

4:其他正常格式的参数,按照正常写法'${参数名}'即可,可以在当前节点设置,也可以点保存后在全局参数中配置

相关文章
|
SQL HIVE
Hive分区+根据分区查询
Hive分区+根据分区查询
|
2月前
|
数据管理 大数据 OLAP
AnalyticDB核心概念详解:表、索引与分区
【10月更文挑战第25天】在大数据时代,高效的数据库管理和分析工具变得尤为重要。阿里云的AnalyticDB(ADB)是一款完全托管的实时数据仓库服务,能够支持PB级数据的实时查询和分析。作为一名数据工程师,我有幸在多个项目中使用过AnalyticDB,并积累了丰富的实践经验。本文将从我个人的角度出发,详细介绍AnalyticDB的核心概念,包括表结构设计、索引类型选择和分区策略,帮助读者更有效地组织和管理数据。
80 3
|
7月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之CTAS特性只支持新增表,不支持删除表吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
调度
Doris给动态分区添加历史分区问题汇总
Doris动态分区表添加历史分区
|
7月前
|
机器学习/深度学习 SQL 分布式计算
MaxCompute产品使用问题之动态分区如何多分区写入
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
111 2
|
8月前
|
流计算
Flink CDC里关于doris的动态分区问题,对以及建好的动态分区表,可以再次修改历史分区的保留时间嘛?
【1月更文挑战第24天】【1月更文挑战第117篇】Flink CDC里关于doris的动态分区问题,对以及建好的动态分区表,可以再次修改历史分区的保留时间嘛?
224 6
|
SQL 分布式计算 大数据
Hive动态分区
Hive动态分区
137 0
|
存储 索引
67.【clickhouse】ClickHouse从入门到放弃-对于分区、索引、标记和压缩数据的协同总结
【clickhouse】ClickHouse从入门到放弃-对于分区、索引、标记和压缩数据的协同总结
67.【clickhouse】ClickHouse从入门到放弃-对于分区、索引、标记和压缩数据的协同总结
|
存储 消息中间件 关系型数据库
flink cdc通过配置表动态感知mysql并分流
flink cdc通过配置表动态感知mysql并分流
flink cdc通过配置表动态感知mysql并分流
|
存储 缓存 负载均衡
Hbase的Rowkey设计以及如何进行预分区
今天有人问我Hbase的rowkey设计和预分区的问题,这篇文字就简单介绍一下.,关于Hbase的表的一些基本概念这里就不说了,直接说重点,尽可能说的简单一点,废话就不写了. 1.什么是Rowkey? 我们知道Hbase是一个分布式的、面向列的数据库,它和一般关系型数据库的最大区别是:HBase很适合于存储非结构化的数据,还有就是它基于列的而不是基于行的模式.
Hbase的Rowkey设计以及如何进行预分区

相关实验场景

更多