持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情
演示
创建物化视图
| 操作步骤 | 说明 |
|---|---|
| 1 | 首先你需要有一个Base表 |
| CREATE TABLE sales_records **(**id INT COMMENT "销售记录的id" **,**seller_id INT COMMENT "销售员的id" **,**store_id INT COMMENT "门店的id" **,**sale_date DATE COMMENT "售卖时间" **,sale_amt BIGINT COMMENT "金额")**DISTRIBUTED BY HASH ( id ) BUCKETS 10 ; | |
| 2 | 基于这个Base表的数据提交一个创建物化视图的任务 |
| CREATE MATERIALIZED VIEW mv_1 AS****SELECT seller_id , sale_date , SUM ( sale_amt )FROM sales_recordsGROUP BY seller_id , sale_date ; | |
| 提交完创建物化视图的任务后,Doris就会异步在后台生成物化视图的数据,构建物化视图。在构建期间,用户依然可以正常的查询和导入新的数据。创建任务会自动处理当前的存量数据和所有新到达的增量数据,从而保持和Base表的数据一致性。用户无需担心一致性问题。 | |
| 3 | 查询物化视图 |
| desc sales_records all ;**** | |
| 可以看到当前 sales_records表一共有一张物化视图:saller_amt,以及他们的表结构 |
查询物化视图
| 操作步骤 | 说明 |
|---|---|
| 1 | 基于这个Base表的数据再次提交两个创建物化视图的任务 |
| CREATE MATERIALIZED VIEW mv_2 AS****SELECT store_id , sale_date , SUM ( sale_amt )FROM sales_recordsGROUP BY store_id , sale_date ; | |
| CREATE MATERIALIZED VIEW mv_3 AS****SELECT seller_id , SUM ( sale_amt )FROM sales_recordsGROUP BY seller_id ; | |
| 2 | 查询物化视图**** |
| desc sales_records all ;**** |
自动匹配
物化视图的自动匹配分为下面两个步骤:
-
根据查询条件筛选出一个最优的物化视图:这一步的输入是所有候选物化视图表的元数据,根据查询的条件从候选集中输出最优的一个物化视图
-
根据选出的物化视图对查询进行改写:这一步是结合上一步选择出的最优物化视图,进行查询的改写,最终达到直接查询物化视图的目的。
SQL函数
- 查看函数名:
| show builtin functions in test_db ; |
|---|
数学函数
abs(double a)
功能: 返回参数的绝对值
返回类型:double类型
使用说明:使用该函数需要确保函数的返回值是整数。