基于doris实时数仓指标计算

23 篇文章 6 订阅
8 篇文章 0 订阅
本文详细介绍了基于Doris的实时数仓建设,包括设备UV字典表生成、近N日聚合明细处理、Doris聚合模型的创建与维护、Routine Load任务配置以及查询与执行计划分析。重点讲解了如何利用Bitmap进行去重和聚合操作,以实现DAU等关键指标的计算。
摘要由CSDN通过智能技术生成

基于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(65535),
platform_name varchar(65535),
channel varchar(65535),
channel_name varchar(65535),
dau bitmap BITMAP_UNION,
new_dau bitmap BITMAP_UNION,
exp_dau bitmap BITMAP_UNION,
active_user bitmap BITMAP_UNION
)
aggregate key(ds,platform,platform_name,channel,channel_name)
partition by range(ds)
(start('20220428') end ('20220502') every (INTERVAL 1 day))
distributed by hash(channel) buckets 8
PROPERTIES(
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.start" = "-1",
"dynamic_partition.end" = "7",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "32"
);

--ROUTINE实时导入
CREATE ROUTINE LOAD routine_load_log_platform_channel_dau ON log_platform_channel_dau
COLUMNS TERMINATED BY ",",
COLUMNS (ds
      ,platform
      ,platform_name
      ,channel
      ,channel_name
      ,device_id
      ,user_id
      ,is_new_device_id
      ,event_type
      ,dau = to_bitmap(device_id)
      ,new_dau = to_bitmap(if(is_new_device_id = '1',device_id,null))
      ,exp_dau = to_bitmap(if(event_type = '1',device_id,null))
      ,active_user = to_bitmap(user_id)
      )
PROPERTIES
(
    "desired_concurrent_number"="3",
    "max_error_number"="0",
    "strict_mode" = "false",
    "format" = "json"
)
FROM KAFKA
(
    "kafka_broker_list"= "",
    "kafka_topic" = "log_platform_channel_dau",
    "property.group.id"="routine_load_log_platform_channel_dau"
);

--查看导入状态
SHOW ALL ROUTINE LOAD;
或通过fe查看
http://localhost:8030/system

--停止导入
STOP ROUTINE LOAD FOR routine_load_log_platform_channel_dau
;

--查询语句
select ds,
       platform,
       platform_name,
       channel,
       channel_name,
       count(distinct dau),
       count(distinct new_dau),
       count(distinct exp_dau),
       count(distinct active_user)  from log_platform_channel_dau
 where `ds`= '2022-04-28'
 group by ds,
       platform,
       platform_name,
       channel,
       channel_name
;

--查看执行计划
explain
select ds,
       platform,
       platform_name,
       channel,
       channel_name,
       count(distinct dau),
       count(distinct new_dau),
       count(distinct exp_dau),
       count(distinct active_user)  from log_platform_channel_dau
 where `ds`= '2022-04-28'
 group by ds,
       platform,
       platform_name,
       channel,
       channel_name
;

--查看关键字
PREAGGREGATION: ON
on代表通过预聚合查询

ps1.ROUTINE LOAD任务报错后,要先停止,再开启导入

ps2.分区要先存在,再写入数据
列字段做转换时,要将原列先列举出,再做转换逻辑

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
doris实时数仓实战》是一本介绍"实时数仓"的实战技术书籍。实时数仓是指将数据仓库(Data Warehouse)与实时计算技术相结合,实现数据的快速处理和实时分析的系统。 这本书主要从实战的角度,以Doris(原名Palo)作为实时数仓的核心技术,介绍了实时数仓的建设与应用。Doris是一种分布式、高性能、高可用的列式存储分析系统,适用于大规模数据分析和实时查询。 书中首先介绍了实时数仓的背景和概念,以及Doris的基本原理和架构。接着对Doris的安装和配置进行了详细的讲解,包括数据模型设计、表定义和索引创建等。 然后,书中详细介绍了如何通过Doris进行数据的导入和处理。包括了数据导入的几种方式,如使用Doris自带的ETL工具和使用第三方工具,以及如何进行实时数据的计算和分析。 书中还介绍了Doris的高级功能和应用,例如多集群部署、数据备份和恢复、高可用性配置等。同时也提到了一些在实际应用中的常见问题和解决方案。 通过这本书,读者可以了解到实时数仓的基本概念和原理,学习到如何使用Doris构建实时数仓,并能够应用到实际的数据分析和查询中。 总的来说,《doris实时数仓实战》是一本实用性很强的技术书籍,适合对实时数仓感兴趣的技术人员阅读,对于提高数据分析和查询的效率和准确性有很大的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值