2026/2/21 8:17:18
网站建设
项目流程
网站建设干货,环境设计专业就业方向,服装网站建设优点有哪些,绑定域名后 wordpressDoris 的 动态分区#xff08;dynamic partition#xff09; 默认支持的分区字段格式是 标准的 DATE 或 DATETIME 类型#xff0c;但你提到的 yyyy-MM#xff08;即只有年月#xff0c;没有日#xff09;的格式属于不完整日期#xff08;非标准 DATE 类型#xff09;dynamic partition默认支持的分区字段格式是标准的DATE或DATETIME类型但你提到的yyyy-MM即只有年月没有日的格式属于不完整日期非标准 DATE 类型不能直接用作分区字段。但可以通过以下方法间接实现以年月为粒度的分区。一、推荐方式使用DATE字段 动态分区按月分区虽然不能直接用yyyy-MM但你可以用DATE类型字段例如2024-05-01然后通过动态分区的 granularity 为 MONTH的方式实现「按月分区」。示例CREATE TABLE example_table ( id INT, event_time DATE ) DISTRIBUTED BY HASH(id) BUCKETS 10 PARTITION BY RANGE(event_time) () PROPERTIES ( dynamic_partition.enable true, dynamic_partition.time_unit MONTH, dynamic_partition.start -12, dynamic_partition.end 3, dynamic_partition.prefix p, dynamic_partition.buckets 10, dynamic_partition.create_history_partition true );效果会自动创建如下分区分区名分区范围event_timep202405[2024-05-01, 2024-06-01)p202406[2024-06-01, 2024-07-01)你在写入数据时只需往event_time列写入标准的DATE类型值如2024-05-10Doris 会自动路由到对应分区p202405。二、如果你的原始数据字段是yyyy-MM字符串格式你需要在写入时用 SQL 转换成DATE类型或者使用视图或计算列。示例将yyyy-MM字符串转换为DATE-- 假设有个 staging 表字段是 2024-05 SELECT STR_TO_DATE(CONCAT(partition_ym, -01), %Y-%m-%d) AS event_time FROM staging_table;然后写入主表中。 不推荐直接使用字符串yyyy-MM作为分区字段虽然技术上可以用VARCHAR字段做 RANGE 分区但无法使用动态分区功能只支持DATE/DATETIME字段不能使用时间函数做范围推导、自动创建分区等操作写入和查询逻辑不直观、不易维护。