分区视图创建

CREATE VIEW dwd_evt_serv_matt_node_inst_c_new PARTITIONED ON ( pt_biz_date ) AS SELECT
a.rid,
a.serv_matt_node_inst_id,
a.wflw_task_id,
a.serv_matt_inst_id,
a.wflw_prcs_id,
a.seq,
a.serv_matt_no,
a.serv_matt_name,
a.serv_matt_node_no,
a.serv_matt_node_name,
a.ptcp,
a.ptcp_type,
a.ptcp_poolarea,
a.ptcp_optins,
a.crt_prosstas,
a.ot_flag,
a.serv_matt_node_begntime ,
a.serv_matt_node_endtime ,
a.opter_id ,
a.opter_name ,
a.opt_time ,
a.optins_no ,
a.poolarea_no ,
a.memo ,
a.updt_time ,
a.crte_time,
a.ptcp_name,
a.biz_date,
a.deleted_time,
a.deleted,
a.exch_updt_time,
a.subsys_codg,
a.admdvs,
a.dty_detail,
d.trans_code as opt_chnl,
a.pt_biz_date --分区知道必须在最后不然会报错
FROM
dw_dwd.dwd_evt_serv_matt_node_inst_c a
LEFT JOIN mds_view_prod.dim_dic_trans d ON a.opt_chnl = d.source_code
AND d.type = ‘OPT_CHNL_OMS’

<think>嗯,用户这次想了解Doris物化视图分区创建方法。看来用户正在深入研究物化视图的高级用法,可能是在处理实时数据分析场景,需要优化大数据量的查询性能。 翻看之前的对话历史,用户提供的引用材料提到Doris的异步物化视图支持SPJG模式透明改写和智能刷新机制,但用户真正需要的是具体的分区创建操作。用户应该已经掌握了基础物化视图创建,现在需要解决大数据量场景下的管理问题。 从技术角度看,Doris物化视图分区创建其实延续了基础表的分区策略。这里需要特别注意几个技术要点:一是分区键必须包含在物化视图的select列表中,二是分区策略需要和源表协调,三是自动分区功能在物化视图中的特殊表现。 用户可能没意识到的是,分区物化视图的维护成本问题。如果源表分区变更频繁,物化视图的分区管理会变得复杂。不过引用[2]提到的智能刷新机制应该能部分解决这个问题,可以提醒用户关注这个特性。 考虑到用户查询的精准性,回复应该严格区分语法示例和注意事项。最好用实际场景说明三种分区创建方式:range分区适合时间序列数据,list分区适合离散值,自动分区则简化管理。表格对比会是不错的呈现形式,但要注意移动端显示效果。 对了,还要强调物化视图分区数限制(默认128个),这个坑很多用户会踩到。示例代码需要包含完整的分区定义和属性设置,特别是热冷数据转换这种生产环境常用配置。 用户后续可能会问分区维护实操问题,比如删除旧分区或修改分区属性,可以提前准备这些知识点。另外物化视图的查询重写机制与分区的关系也值得延伸说明,不过当前问题还是聚焦创建方法为宜。 </think>在Doris中创建分区物化视图时,**分区策略需在源表定义中指定**,物化视图会自动继承源表的分区规则。以下是具体方法和注意事项: --- ### **创建步骤** 1. **定义分区源表**(必需前提): ```sql CREATE TABLE sales ( dt DATE NOT NULL, product_id INT, region VARCHAR(50), amount DECIMAL(10,2) ) PARTITION BY RANGE(dt) ( PARTITION p202301 VALUES [('2023-01-01'), ('2023-02-01')), PARTITION p202302 VALUES [('2023-02-01'), ('2023-03-01')) ); ``` 2. **创建分区物化视图**: ```sql CREATE MATERIALIZED VIEW mv_sales_by_region BUILD IMMEDIATE -- 立即构建 REFRESH ASYNC -- 异步刷新 AS SELECT dt, region, SUM(amount) AS total_amount FROM sales GROUP BY dt, region; ``` **关键点**: - 物化视图 **自动继承源表`sales`的分区键`dt`** - 聚合列(如`SUM(amount)`)会自动同步到对应分区 --- ### **分区管理特性** | **功能** | **操作方式** | **示例** | |------------------|-----------------------------------------------------------------------------|--------------------------------------------------------------------------| | **分区自动创建** | 源表新增分区时,物化视图自动同步新分区 | 源表执行`ADD PARTITION p202303...` → MV自动生成对应分区 | | **分区数据刷新** | 通过异步任务(REFRESH)按分区增量更新 | `REFRESH MATERIALIZED VIEW mv_sales_by_region PARTITION START('2023-03-01')` | | **分区删除** | 直接操作源表分区,物化视图级联删除 | `ALTER TABLE sales DROP PARTITION p202301` → MV中对应分区同步删除 | --- ### **注意事项** 1. **分区键限制**: - 物化视图的`SELECT`语句必须包含源表的分区列(如`dt`) - 分区列不能参与表达式计算(如`DATE_TRUNC(dt)`会导致分区失效) 2. **刷新策略**: ```sql -- 配置分区级别的自动刷新(需Doris 1.2+) ALTER MATERIALIZED VIEW mv_sales_by_region SET ("partition_refresh_number" = "1"); -- 每次刷新1个分区 ``` 3. **冷热分层扩展**: ```sql -- 将旧分区转移到冷存储(需开启冷热分层功能) ALTER MATERIALIZED VIEW mv_sales_by_region MODIFY PARTITION p202301 SET ("storage_policy" = "cold_storage"); ``` --- ### **典型场景** - **时间分区**:按天/月划分时序数据,加速时间范围查询 - **业务分区**:按地域或产品线分区,实现查询隔离 - **冷热分离**:近期分区用SSD,历史数据转HDD[^1][^2] > 通过继承源表分区结构,Doris物化视图显著降低了大规模数据的管理复杂度,同时结合智能刷新策略平衡了实时性与资源开销[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值