doris---Rollup

news2024/11/27 0:29:28

Rollup

3.5.1基本概念
通过建表语句创建出来的表称为 Base 表(Base Table,基表)
在 Base 表之上,我们可以创建任意多个 ROLLUP 表。这些 ROLLUP 的数据是基于 Base 表产生的,并且在物理上是独立存储的。
Rollup表的好处:

  1. 和基表共用一个表名,doris会根据具体的查询逻辑选择合适的数据源(合适的表)来计算结果
  2. 对于基表中数据的增删改,rollup表会自动更新同步
    3.5.2 Aggregate 模型中的 ROLLUP
    查看下之前建得一张表:
    mysql> desc ex_user all;
    [图片]

示例1:查看某个用户的总消费
添加一个roll up
alter table aggregate表名 add rollup “rollup表的表名” (user_id,city,date,cost);

alter table ex_user add rollup rollup_ucd_cost(user_id,city,date,cost);
alter table ex_user add rollup rollup_u_cost(user_id,cost);
alter table ex_user add rollup rollup_cd_cost(city,date,cost);

alter table ex_user drop rollup rollup_u_cost;
alter table ex_user drop rollup rollup_cd_cost;

–如果是replace聚合类型得value,需要指定所有得key
– alter table ex_user add rollup rollup_cd_visit(city,date,last_visit_date);
– ERROR 1105 (HY000): errCode = 2, detailMessage = Rollup should contains
– all keys if there is a REPLACE value

–添加完成之后可以show一下,看看底层得rollup有没有执行完成
SHOW ALTER TABLE ROLLUP;
![[图片](https://img-blog.csdnimg.cn/3519b9efcb814fc49bba05ecd612450f.png)

再次查看该表得详细信息后发现,多了一个IndexName为rollup_cost_userid(这是我们自己取得roll
Up 名字)
[图片]

Doris 会自动命中这个 ROLLUP 表,从而只需扫描极少的数据量,即可完成这次聚合查询。
explain SELECT user_id, sum(cost) FROM ex_user GROUP BY user_id;
[图片]

示例 2:获得不同城市,不同年龄段用户的总消费、最长和最短页面驻留时间
alter table ex_user add rollup rollup_city(city,age,cost,max_dwell_time,min_dwell_time);

– 当创建好了立即去查看得时候就会发现,他还没有开始
SHOW ALTER TABLE ROLLUP;
然后过会再去查询得时候,他就完成了,看他的状态即可

[图片]

[图片]

分别执行下面得三条语句,看看有什么不一样的??
explain SELECT city, age, sum(cost), max(max_dwell_time), min(min_dwell_time) FROM ex_user GROUP BY city, age;
explain SELECT city, sum(cost), max(max_dwell_time), min(min_dwell_time) FROM ex_user GROUP BY city;
explain SELECT city, age, sum(cost), min(min_dwell_time) FROM ex_user GROUP BY city, age;
[图片]

[图片]

[图片]

很显然得发现,维度是city,或者age,或者他们组合得时候,都是可以命中这个rollup得,相对来说效率会高很多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/577882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#调用FreeSpire.PDF获取PDF文档中使用的字体

除了图片之外,电子文件中使用的字体都必须要在本机中安装才能正常查看文字(word缺少字体的话会自动使用相似或默认字体),要想知道电子文件中使用的字体,可以将电子文件转换为PDF文件(如果是打印成PDF的话&a…

chatgpt赋能python:Python收集数据在SEO中的重要性

Python 收集数据在 SEO 中的重要性 随着互联网的发展,搜索引擎对于用户获取信息的重要性日益增加。SEO(搜索引擎优化)一直是每个网站必须考虑的问题。Python 收集数据在 SEO 中可以发挥重要的作用,帮助网站提高排名。下面我们来详…

Solidity拓展:数学运算过程中数据长度溢出的问题

在数学运算过程中假如超过了长度则值会变成该类型的最小值,如果小于了该长度则变成最大值 数据上溢 uint8 numA 255; numA;uint8的定义域为[0,255],现在numA已经到顶了,numA会使num变成0(由于256已经超过定义域,它会越过256&…

结构体 --- C语言

目录 1.结构体的声明 2.结构体变量的定义和初始化 3.结构体成员访问 4.结构体传参 1.结构体的声明 结构是一些值的集合,这些称为成员变量,结构的每个成员可以是不同类型的变量。 而数组是一组类型相同的元素的集合。 生活中的描述 人:名…

测试C#分词工具jieba.NET(续1:提取关键词及并行分词)

jieba.NET支持通过两种算法提取文本关键词:TF-IDF算法和TextRank算法,关于这两种算法的介绍详见参考文献10-11,在jieba.NET中对应的类为TfidfExtractor和TextRankExtractor,这两个分词都都支持调用ExtractTags和ExtractTagsWithWe…

文件上传至公有云Nos及对接CDN

项目开发中,需要将图片文件上传至网易公有云的Nos,并且结合CDN做加速服务,记录一下开发过程。流程图: 1. 文件上传到公有云Nos 网易对象存储服务(Netease Object Storage,简称NOS)是网易数帆提供的高可用…

pycharm环境下打开Django内置的数据库Sqlite出错问题解决

问题描述 在数据库库文件中写入一条记录后,在pycharm的terminal终端下执行查看表的命令出错 执行语句为: 连接数据库报错 python manage.py dbshell CommandError: You appear not to have the sqlite3 program installed or on your path. Error:…

JavaScript之DOM基础

1. 初识DOM DOM: 文档对象模型 是W3C组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口。 w3c已经定义了一系列的DOM接口,通过这些DOM接口可以改变网页的内容,结构和样式。 DOM树:文档:一个页面就是一个文档, DOM中使用d…

Android逆向猿人学2022年app比赛第四题grpc与Protobuf使用(步步验证)

教程 前言一、起步二、抓包三、分析四、验证五、HOOK借鉴 前言 前面2-3题和第一题解题思路基本上一样的,这里就不出教程了,这篇文章比较繁琐,基本上描述了我做这题的思路,有很多走不通的地方也有对应的方法,所以会比较…

linux网络初探

linux网络 1.1查看本机ip IP地址 IP地址网络地址主机地址,网络地址(网络号)相同的主机为本地网络中的主机,可以直接相互通信,而网络地址不同的主机为远程网络中的主机,相互通信必须通过本地网关&#xf…

Flutter Windows开发环境搭建教程与学习资料推荐

Windows应用软件开发有很多框架可以选择,例如比较流行的Electron、Qt、CEF、WPF、WinForm、MFC、DuiLib、SOUI等等。Flutter是近几年流行的全平台应用开发框架,可以进行Android、IOS、Web、MacOS、Windows、Linux等平台的应用软件开发。 一、Flutter介绍…

启动U盘制作工具Rufus 4.0.2035

Rufus是是一款小巧实用免费开源的帮助格式化和创建可启动USB闪存驱动器的工具,如USB钥匙/软盘、记忆棒等,可快速制作linux系统或者win启动u盘,可快速的将ISO镜像文件制作成可引导启动的USB启动盘,支持ISO镜像、GPT和UEFI&#xff…

设置参考文献编号与文中插入引用的具体步骤

目录 一、前言 二、操作步骤 (一)参考文献设置编号 (二)文章中引用参考文献方式 一、前言 本教程使用的软件是WPS 二、操作步骤 (一)参考文献设置编号 1.把引用文献的这个编号全部删掉 2.右键点击段…

学习笔记——vue中使用el-dropdown组件报错

今天在工作中,发现使用el-select做的下拉框,下拉菜单展开后,鼠标点击下拉框之外的区域时,下拉菜单没有收起。然后,我打开控制台,发现了这个错误。 Uncaught TypeError: Cannot read properties of null (re…

《Linux0.11源码解读》理解(四) head之重新设置IDT/GDT

上节提到,现在cs:ip指向0地址,此处存储着作为操作系统核心代码的system模块,是由head.s和 main.c以及后面所有源代码文件编译链接而成。head.s(以下简称head)紧挨着main.c,我们先执行head。 重新设置内核栈 _pg_dir: _startup_3…

堆(堆排序 模拟堆)

目录 一、堆的数据结构二、堆的操作方法往下调整的示意图往上调整的示意图相关功能的实现思路1.插入一个数2.求最小值3.删除最小值4.删除任意一个元素5.修改任意一个元素 三、堆的实战运用堆排序模拟堆 一、堆的数据结构 堆是一个完全二叉树:除了最后一层结点以外&…

C语言三子棋,五子棋,n子棋的代码实现

C语言三子棋,五子棋,n子棋的代码实现 这里以五子棋为例,来说明开发过程开发思路菜单打印棋盘的打印棋子的打印电脑下棋(随机数)判断输赢代码整合注意事项 这里以五子棋为例,来说明开发过程 其中该项目包含…

《用户增长方法论》从产品、渠道、营销创意等多个维度,搭建了一套完整的用户增长方法体系

关于作者 黄永鹏,目前在阿里巴巴担任高级用户增长专家。黄永鹏是一个典型的 “ 斜杠青年 ” ,十年前从广告咨询行业转战互联网,在 BAT 三家 公司都待过,负责过多款用户和日活过亿的产品,比如腾讯手机管家、百度地图…

chatgpt赋能python:Python练手:提高你的SEO技能

Python练手:提高你的SEO技能 在当今数字化时代,搜索引擎优化(SEO)成为了网站和企业在线成功的关键。优化技巧既可以提高网站的排名,还可以增加网站的可见性,从而吸引更多的流量和潜在客户。Python是一个适…

网络通信协议-ARP协议

目录 一、ARP协议 二、ARP协议通信过程 应用情景一:同一广播域内通信 (1)第一步:ARP协议通信 1.交换机接受消息 2.电脑2接收到广播消息 3.电脑2回复 4.交换机转发回复给电脑1 5.电脑1记录 (2)第二…