Doris--简单使用

news2024/11/29 14:54:11

一、数据表的创建与数据导入

1.1、创建表

1.1.1、单分区

CREATE TABLE table1
(
    siteid INT DEFAULT '10',
    citycode SMALLINT,
    username VARCHAR(32) DEFAULT '',
    pv BIGINT SUM DEFAULT '0'			-- 聚合模型, value column 使用sum聚合
)
AGGREGATE KEY(siteid, citycode, username)  -- 聚合模型
DISTRIBUTED BY HASH(siteid) BUCKETS 10     -- 分桶
PROPERTIES("replication_num" = "1"); 	   -- 测试使用, 单个副本

1.1.2、多分区

CREATE TABLE table2
(
    event_day DATE,
    siteid INT DEFAULT '10',
    citycode SMALLINT,
    username VARCHAR(32) DEFAULT '',
    pv BIGINT SUM DEFAULT '0'
)
AGGREGATE KEY(event_day, siteid, citycode, username)
PARTITION BY RANGE(event_day)  -- 分区
(
    PARTITION p201706 VALUES LESS THAN ('2017-07-01'),
    PARTITION p201707 VALUES LESS THAN ('2017-08-01'),
    PARTITION p201708 VALUES LESS THAN ('2017-09-01')
)
DISTRIBUTED BY HASH(siteid) BUCKETS 10
PROPERTIES("replication_num" = "1");

1.2、数据导入

此处仅用于测试导入数据


insert into table1 values \
("1","1","jim","2"), \
("2","1","grace","2"), \
("3","2","tom","2"), \
("4","3","bush","3"), \
("5","3","helen","3");


insert into table2 values \
("2017-07-03","1","1","jim","2"),\
("2017-07-05","2","1","grace","2"),\
("2017-07-12","3","2","tom","2"),\
("2017-07-15","4","3","bush","3"),\
("2017-07-12","5","3","helen","3");

二、数据查询

doris 兼容 mysql 协议, 查询基本一致

2.1、Join 查询

> SELECT SUM(table1.pv) FROM table1 JOIN table2 WHERE table1.siteid = table2.siteid;
+--------------------+
| sum(`table1`.`pv`) |
+--------------------+
|                 14 |
+--------------------+
1 row in set (0.01 sec)

2.2、子查询

> SELECT SUM(pv) FROM table2 WHERE siteid IN (SELECT siteid FROM table1 WHERE siteid > 2);
+-----------+
| sum(`pv`) |
+-----------+
|         8 |
+-----------+
1 row in set (0.04 sec)

三、表结构变更

使用 ALTER TABLE COLUMN 命令可以修改表的 Schema,包括如下修改:

  • 增加列
  • 删除列
  • 修改列类型
  • 改变列顺序

以下通过使用示例说明表结构变更:

3.1、新增列

-- 新增一列 uv,类型为 BIGINT,聚合类型为 SUM,默认值为 0:
ALTER TABLE table1 ADD COLUMN uv BIGINT SUM DEFAULT '0' after pv;

提交成功后,可以通过以下命令查看作业进度:

SHOW ALTER TABLE COLUMN;

当作业状态为 FINISHED,则表示作业完成。新的 Schema 已生效。
在这里插入图片描述

可以使用以下命令取消当前正在执行的作业:

CANCEL ALTER TABLE COLUMN FROM table1;

四、Rollup

ROLLUP 在多维分析中是“上卷”的意思,即将数据按某种指定的粒度(更粗粒度)进行进一步聚合。

4.1、Rollup 创建

Rollup 可以理解为 Table 的一个物化索引结构物化 是因为其数据在物理上独立存储,而 索引 的意思是,Rollup可以调整列顺序以增加前缀索引的命中率,也可以减少key列以增加数据的聚合度。

对于 table1 明细数据是 siteid, citycode, username 三者构成一组 key,从而对 pv 字段进行聚合;如果业务方经常有看城市 pv 总量的需求,可以建立一个只有 citycode, pv 的rollup。

ALTER TABLE table1 ADD ROLLUP rollup_city(citycode, pv);

提交成功后,可以通过以下命令查看作业进度:

SHOW ALTER TABLE ROLLUP;

当作业状态为 FINISHED,则表示作业完成。

Rollup 建立之后,查询不需要指定 Rollup 进行查询。还是指定原有表进行查询即可。程序会自动判断是否应该使用 Rollup。是否命中 Rollup可以通过 EXPLAIN your_sql; 命令进行查看。

在这里插入图片描述

4.2、Rollup 与 三个数据模型的查询

4.2.1、Aggregate 和 Unique 模型中的 ROLLUP

因为 Unique 只是 Aggregate 模型的一个特例,所以不加以区别。
聚合模型 中 rollup的使用 和上面的一致, 为了更粗粒度的聚合,减少数据的扫描

4.2.2、Duplicate 模型中的 ROLLUP

因为 Duplicate 模型没有聚合的语意。所以该模型中的 ROLLUP,已经失去了“上卷”这一层含义。而仅仅是作为调整列顺序,以命中前缀索引的作用。

五、物化视图

物化视图是一种以空间换时间的数据分析加速技术。Doris 支持在基础表之上建立物化视图。比如可以在明细数据模型的表上建立基于部分列的聚合视图,这样可以同时满足对明细数据和聚合数据的快速查询。

同时,Doris 能够自动保证物化视图和基础表的数据一致性,并且在查询时自动匹配合适的物化视图,极大降低用户的数据维护成本,为用户提供一个一致且透明的查询加速体验。

关于物化视图的具体介绍,可参阅 物化视图

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

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

相关文章

【Java】二叉树

一、树形结构 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 有一个特殊…

IDEA安装ChatGPT插件

ChatGPT,美国OpenAI [1] 研发的聊天机器人程序 [12] ,于2022年11月30日发布 [2-3] 。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人…

mybatis条件构造器(一)

mybatis条件构造器(一) 1 准备工作 1.1 建表sql语句(Emp表) SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0; -- ---------------------------- -- Table structure for emp -- ---------------------------- DROP TABLE IF EXISTS emp; CREATE TABLE emp (EMPNO int NOT N…

tws耳机哪个牌子音质好?tws耳机音质排行榜

随着蓝牙耳机市场的不断发展,使用蓝牙耳机的人也逐渐增多,近年来更是超越有线耳机成为最火爆的数码产品之一。那么,tws耳机哪个牌子音质好?下面,我来给大家推荐几款音质好的tws耳机,可以当个参考。 一、南…

vb 模块和作用域的关系

模块在VB中有三种类型的模块,分别是窗体模块、标准模块和类模块。窗体模块窗体模块中包含了窗体以及窗体中所有控件的事件过程,文件扩展名为(*.frm),窗体文件中不仅包含窗体对象的外观设计,也包含窗体模块(…

基于matlab评估星载合成孔径雷达性能

一、前言本示例展示了如何评估星载合成孔径雷达 (SAR) 的性能,并将理论极限与 SAR 系统的可实现要求进行比较。SAR利用雷达天线在目标区域上的运动来提供更精细的方位角分辨率。给定雷达的主要参数(例如工作频率、天线尺寸和带宽&…

Nginx配置Https协议(告别Http协议,使用Https)图

注: 相关代码:Linux部署Nginx(快速)_Dyansts的博客-CSDN博客 视频教程 :6分钟告别http协议,使用更加安全的https协议_哔哩哔哩_bilibili 细节 免费申请ssl网站:FreeSSL首页 - FreeSSL.cn一…

OpenShift 4 - 将 VMware 虚机迁移至 OpenShift Virtualization(视频)- 冷迁移

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在支持 OpenShift 4.12 的 OpenShift 环境中验证 文章目录环境说明OpenShift Virtualization 环境VMware vSphere 环境了解 Migration Toolkit for Virtualization安装 Migration Toolkit for Virtualizati…

教你使用内嵌chatGPT的新必应(bing)

巨头们的AI战愈演愈烈起来。在谷歌公布其 ChatGPT 竞品Bard后的第二天,微软就官宣了两款新的 AI 产品:基于下一代 OpenAI 大型语言模型上的新版 Bing 搜索引擎,号称“比 ChatGPT 更强大”,以及基于 AI 功能的改进版 Edge 网络浏览…

在 Flutter 中使用 webview_flutter 4.0 | js 交互

大家好,我是 17。 已经有很多关于 Flutter WebView 的文章了,为什么还要写一篇。两个原因: Flutter WebView 是 Flutter 开发的必备技能现有的文章都是关于老版本的,新版本 4.x 有了重要变化,基于 3.x 的代码很多要重…

亲历华为手机丢失通过定位找回

我有个华为Meta 40E手机,用了一年半左右。前天,也就是周六上午去小区超市买菜,顺便遛遛狗。 回来的路上在红色的步行道,可乐和糯米(我家养的两只边牧犬)看到前面不远处有几只流浪的小狗,就叫着…

如何查询IPv4归属地信息呢?

想查询IPv4归属地,首先要知道自己的IP地址是什么。下面,我将介绍IP地址查询方法和IPv4归属地查询方法。一、查局域网IP地址方法第一种方法:通过命令行窗口获取内网IP地址1.打开命令行窗口。使用开始菜单中的搜索功能搜索“cmd ”,并以管理员身…

Pytorch复习笔记--torch.nn.functional.interpolate()和cv2.resize()的使用与比较

1--前言 博主在处理图片尺度问题时,习惯使用 cv2.resize() 函数;但当图片数据需用显卡加速运算时,数据需要在 GPU 和 CPU 之间不断迁移,导致程序运行效率降低; Pytorch 提供了一个类似于 cv2.resize() 的采样函数&…

国际化语言,多语言三种方式

可以用透传的方式&#xff0c;自己写local的json文件&#xff0c;不需要配置什么&#xff0c;直接传&#xff0c;自己写方法i18n nextjsi18n umi4一、透传的方式 export const AppContext React.createContext<any>({})app.tsx 用context包裹import type { AppProps } f…

如何通过自己编写Jmeter函数

在Jmeter的函数助手里&#xff0c;有很多内置的函数&#xff0c;比如Random、UUID、time等等。使用这些函数可以快速帮我们生成某些数据&#xff0c;进行一些逻辑处理。用起来非常的方便。 但是在实际接口测试过程中&#xff0c;有很多的需求&#xff0c;Jmeter内置的函数可能…

【自制开发板】自制STM32F407开发板(含TFT 8080串口屏幕接口)

【2023 年 2 月 14 日】 许久没有更新&#xff0c;最近做了个小开发板玩了玩。更新一下吧&#xff0c;作为记录&#xff01;&#xff01; 主要是象试一下LVGL在STM32上的应用&#xff0c;所以开发板的大小都是基于屏幕大小来设计的。 分享出来&#xff0c;给大家一个板子结构…

SpringBoot Mybatis 分页实战

pageInfo的属性 pageNum&#xff1a;当前页 pageSize&#xff1a;页面数据量 startRow&#xff1a;当前页首条数据为总数据的第几条 endRow&#xff1a;当前页最后一条数据为总数据的第几条 total&#xff1a;总数据量 pages&#xff1a;总页面数 listPage{}结果集 reasonable …

ESP-C3入门8. 连接WiFi并打印信息

ESP-C3入门8. 连接WiFi并打印信息一、ESP32 连接WiFi的基本操作流程1. 初始化nvs存储2. 配置WiFi工作模式3. 设置WiFi登陆信息4. 启动WiFi5. 开启连接6. 判断是否成功二、事件处理函数1. 定义事件处理函数2. 创建事件组3. 在事件处理函数中设置事件组位4. 在其他任务中等待事件…

基于Selenium+Python的web自动化测试框架

一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff1a;Firefo…

【安全】Nginx负载均衡下上传Webshell

目录 负载均衡下上传webshell webshell简介 一、环境搭建 ①下载中国蚁剑&#xff0c;于github获取官方版&#xff1a; ②下载docker&docker-compose ③结合前面启动环境 ④验证 Ⅱ、负载均衡下webshell上传的几个问题 ①shell文件上传稳定节点问题 ②命令执行时的…