![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据仓库
文章平均质量分 60
Dylan ZhaoHT
这个作者很懒,什么都没留下…
展开
-
一个包含数据0与数字1字符串,求得每个1出现的位置
引申为只包含2种字符的字符串,求其中一种字符出现位置。原创 2023-09-14 14:18:15 · 115 阅读 · 0 评论 -
基于prometheus与grafana对starrocks/doris监控报警
基于prometheus与grafana监控starrocks/doris实现自定义指标监控与报警原创 2022-07-20 19:46:38 · 1214 阅读 · 5 评论 -
doris物化视图查询最优匹配
物化视图创建完成后,用户的查询会根据规则自动匹配到最优物化视图。如上图:有一张销售记录明细表,并且在这个明细表上创建了三张物化视图。一个存储了不同时间不同销售员的售卖量,一个存储了不同时间不同门店的销售量,以及每个销售员的总销售量。 当查询7月19日各个销售员都买了多少钱时,我们 可以匹配mv_1物化视图, 直接对mv_1的数据进行查询。自动匹配过程自动匹配的过程分为两个步骤:对候选集合进行一个过滤。只要是查询的结果能从物化视图数据计算(取部分行,部分列,或部分行列的聚合)出都可以留在候选集中,原创 2022-05-27 15:24:55 · 437 阅读 · 0 评论 -
doris通过rollup增加duplicate模型前缀索引
因为建表时已经指定了列顺序,所以一个表只有一种前缀索引。这对于使用其他不能命中前缀索引的列作为条件进行的查询来说,效率上可能无法满足需求。因此,我们可以通过创建 ROLLUP 来人为的调整列顺序。举例说明。Base 表结构如下:可以看到,ROLLUP 和 Base 表的列完全一样,只是将 user_id 和 age 的顺序调换了。那么当我们进行如下查询时:SELECT * FROM table where age=20 and message LIKE “%error%”;会优先选择 ROL原创 2022-05-27 11:29:08 · 371 阅读 · 0 评论 -
doris前缀索引、doris bloom filter索引、doris bitmap索引原理及适应场景
索引用于帮助快速过滤或查找数据。目前 Doris 主要支持两类索引:内建的智能索引,包括前缀索引和ZoneMap索引。用户创建的二级索引,包括Bloom Filter索引和Bitmap倒排索引。其中ZoneMap索引是在列存格式上,对每一列自动维护的索引信息,包括Min/Max,Null值个数等等。这种索引对用户透明,不在此介绍。以下主要介绍其他三类索引。前缀索引原理本质上,Doris 的数据存储在类似 SSTable(Sorted String Table)的数据结构中。该结构是一种有序的数据结转载 2022-05-27 11:24:24 · 1980 阅读 · 0 评论 -
doris物化视图
物化视图的使用场景有:分析需求覆盖明细数据查询查询对明细数据的任意维度上卷聚合分析创建物化视图通过下面命令就可以创建物化视图了。创建物化视图是一个异步的操作,也就是说用户成功提交创建任务后,DorisDB会在后台对存量的数据进行计算,直到创建成功。CREATE MATERIALIZED VIEW查看物化视图创建状态由于创建物化视图是一个异步的操作,用户在提交完创建物化视图任务后,需要通过命令检查物化视图是否构建完成, 命令如下:SHOW ALTER MATERIALIZED VIEW FR原创 2022-05-19 20:18:22 · 1217 阅读 · 0 评论 -
doris实现数据聚合的三种方式--多明细聚合、物化视图与rollup
doris实现数据聚合的三种方式--多明细聚合、物化视图与rollup原创 2022-05-19 19:55:09 · 1971 阅读 · 0 评论 -
基于doris实时数仓实时报表生成
基于doris实时数仓实时报表生成1、流程图2、自动触发查询--创建存储过程CREATE PROCEDURE insetAutoInsert10sProcedure()BEGININSERT INTO auto_insert_10s(id,create_time,update_time) VALUES (1,NOW(),NOW());END;--创建事件定时器CREATE EVENT IF NOT EXISTS eventAutoInsert10sON SCHEDULE EVERY原创 2022-05-06 20:06:51 · 2742 阅读 · 0 评论 -
设备id字典表生成
原创 2022-05-06 19:58:05 · 164 阅读 · 0 评论 -
基于doris实时数仓指标计算
基于doris实时数仓指标计算1、流程图2、计算字符uv字典表生成流程涉及设备uv去重只能基于bigint类型dau = to_bitmap(device_id)需要建立设备字典表,将字符串设备转化为字典id做去重处理因为常用指标周期只涉及近30日,因此字典表只保留近30日设备3、涉及设备uv生成近N日聚合明细4、doris聚合模型代码--建表语句create table log_platform_channel_dau(ds date,platform varchar(655原创 2022-05-06 19:53:46 · 1241 阅读 · 0 评论 -
HIVE时间范围生成时间点(爆炸函数一行生成多行两列)
1、建立时间维度表将时间范围与时间维度表生成笛卡尔积SELECT /*+MAPJOIN(b)*/ a.start_date ,a.end_date ,b.timeFROM ( SELECT '2020-01-01 10:00:00' AS start_date ,'2020-01-02 11:12:00' AS end_date ) aJOIN (原创 2021-08-20 14:16:11 · 1728 阅读 · 0 评论 -
数据仓库元数据分类
定义和描述DW/BI系统的结构、操作和内容的所有信息都是元数据。DW/BI行业常常提到两类主要的元数据:技术元数据和业务元数据。我们又提出了第三类元数据:过程元数据。下面我们会对这三类元数据进行阐述,技术元数据一般是定义性的,而业务元数据和过程元数据一般都是描述性的。技术元数据。技术元数据从技术角度定义了构建DW/BI系统的对象和过程。主要包括定义数据结构的元数据,如表、字段、数据类型、索引和关系引擎中的分区,以及数据库、维度、度量和数据挖掘模型。在ETL过程中,技术元数据为特定的任务定义了来源和目标、原创 2021-08-03 11:28:55 · 554 阅读 · 0 评论 -
实时数仓建设与实践
实时数仓考虑到时效性问题,分层设计需要尽量精简,降低中间流程出错的可能性,不过总体而言,实时数仓还是会参考离线数仓的分层思想来设计。从传统的经验来讲,我们认为数仓有一个很重要的功能,即能够记录历史。通常,数仓都是希望从业务上线的第一天开始有数据,然后一直记录到现在。但实时处理技术,又是强调当前处理状态的一门技术,所以我们认为这两个相对对立的方案重叠在一起的时候,它注定不是用来解决一个比较广泛问题的一种方案。于是,我们把实时数仓建设的目的定位为解决由于传统数据仓库数据时效性低解决不了的问题。离线数仓和实时数仓原创 2021-07-20 09:41:52 · 1521 阅读 · 0 评论 -
数仓建模理论--维度建模
总线架构:维度建模的数据仓库中,有一个概念叫Bus Architecture,中文一般翻译为“总线架构”。总线架构是Kimball的多维体系结构(MD)中的三个关键性概念之一,另两个是一致性维度(Conformed Dimension)和一致性事实(Conformed Fact)。一致性维度和事实,企业数据仓库应该建立一个一致性维度和事实,而不是为每个部门建立维度和事实。一致性维度: 具有一致的维度关键字,一致的属性列名称,一致的属性定义和一致的属性值。一致性维度要么是统一的,要么是维度表的一个子集。原创 2021-06-17 14:53:59 · 1281 阅读 · 0 评论 -
数仓建模理论--ER模型、Data Vault模型、Anchor模型、维度建模各自应用场景
ER模型是从全企业的高度设计一个3NF模型,用实体关系(Entity Relationship,ER)模型描述企业业务。其具有以下几个特点:需要全面了解企业业务和数据、实施周期非常长、对建模型人员要求非常高采用ER模型建设数据仓库的出发点是基于整合数据,将各个系统的数据以企业角度按主题进行组合和合并,并进行一致性处理,为数据分析决策服务,但是并不能直接用于分析决策。其建模步骤分为三个阶段:高层模型:一个高度抽象的模型,描述主题与主题之间的关系,用于描述企业的业务总体概况。中层模型:在高层模型的基础转载 2021-06-09 19:18:55 · 1528 阅读 · 0 评论 -
数仓建模理论--Anchor建模
Anchor对Data Vault模型做了进一步规范化处理,Lars.Ronnback的初衷是设计一个高度可扩展的模型,其核心思想是所有的扩展只是添加而不是修改,因此将模型规范到6NF,基本变成了k-v结构化模型。Anchor模型的组成Anchors: 类似于Data Vault的Hub,代表业务实体,且只有主键。Attributes: 功能类似于Data Vault的Satellite,但是它更加规范化,将其全部k-v结构化,一个表只有一个Anchors的属性描述。Ties: 就是Anchors之原创 2021-06-09 19:16:06 · 1862 阅读 · 0 评论 -
数仓建模理论--Data Vault建模
Data Vault模型构建在Data Vault模型中,各个实体组件有着严格、通用的定义与准确、灵活的功能描述,这不但使得Data Vault模型能够最直观、最一般地反映数掘之间内含的业务规则,同时也为构建Data Vault模型提供了一致而普遍的方法。Data Vault模型主要用于存储来自多个业务系统的完整的历史数据。它不区分数据在业务层面的准确与否,装载数据也不做验证和清洗,因此,Data Vault模型可用于跟踪所有数据的来源。Data Vault模型有几个主要的组:① Hub组件,用于记原创 2021-06-03 17:43:39 · 1679 阅读 · 0 评论 -
数仓建模理论--3NF与ER模型建模
1、3NF第一范式(1NF):强调数据表的原子性所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成转载 2021-06-02 15:23:45 · 4715 阅读 · 0 评论 -
指标体系管理
1、指标管理出现的问题:主要从业务、技术、产品三个视角来看:业务视角:业务分析场景指标、维度不明确;频繁的需求变更和反复迭代,数据报表臃肿,数据参差不齐;用户分析具体业务问题找数据、核对确认数据成本较高。技术视角:指标定义,指标命名混乱,指标不唯一,指标维护口径不一致;指标生产,重复建设;数据汇算成本较高;指标消费,数据出口不统一,重复输出,输出口径不一致;产品视角:缺乏系统产品化支持从生产到消费数据流没有系统产品层面打通;2、指标管理实现的目标:技术目标:统一指标和维度管理,指原创 2021-05-26 14:01:51 · 6619 阅读 · 2 评论 -
数据漂移的理解
数据漂移的概念:同一业务日期下的数据包含了不属于该业务日期的数据(上一天数据漂移到当天,或者当天数据漂移到下一天)或者缺失了该业务日期数据或该业务日期下的数据非最新数仓常用4个时间介绍(1)数据库表中用于记录具体业务过程发生时间的时间戳字段(假设这类字段叫create_time);(2)数据库表中用来表示数据记录更新时间的时间戳字段(假设这类字段叫update_time);(3)数据库日志表中用来表示数据记录更新时间的时间戳字段(假设这类字段叫log_time);(4)标识数据记录被抽取到时间的原创 2021-05-17 19:36:52 · 6732 阅读 · 0 评论 -
HIVE with rollup、with cube、grouping sets的区别及字段中存在空值或字段不参与分组时区分方法grouping及 grouping__id计算方法
1、with rollupselect TO_CHAR(create_time,'yyyymmdd') date ,platform,sign_channel,count(*) cnt from sign_tablegroup by TO_CHAR(create_time,'yyyymmdd') ,platform,sign_channelwith rollup ;程序会以日期为基准逐步下卷,结果如下![在这里插入图片描述](https://img-blog.csdnimg.cn/原创 2021-05-10 16:08:11 · 959 阅读 · 0 评论 -
Hive split_part函数取最后一部分
Hive split_part函数取最后一部分业务生产中字段可能由不能部分拼接而成,各个部分在同一字段不一定都有,因此要取最后一部分可以用如下方法SPLIT_PART(rowkey,'_',LENGTH(regexp_replace(rowkey,'_','__')) - LENGTH(rowkey) + 1)...原创 2021-05-10 10:50:44 · 5829 阅读 · 0 评论 -
HIVE一些字符处理
HIVE一些字符处理1、去除回车、换行、tabregexp_replace(regexp_replace(regexp_replace(regexp_replace(str,’\,’,’,’),’\r’,’’),’\t’,’’),’\n’,’’)2、字段中去除叠字regexp_replace(user_name,’(.)\1+’,’’)3、字段中去除汉字REGEXP_REPLACE(user_name,’[^0-9a-zA-Z\u4e00-\u9fa5]’,’’)...原创 2020-05-29 16:22:40 · 2127 阅读 · 0 评论