基于doris实时数仓实时报表生成

23 篇文章 6 订阅
8 篇文章 0 订阅

基于doris实时数仓实时报表生成

1、流程图

在这里插入图片描述

2、自动触发查询

--创建存储过程
CREATE PROCEDURE insetAutoInsert10sProcedure()
BEGIN
INSERT INTO auto_insert_10s(id,create_time,update_time) VALUES (1,NOW(),NOW());
END
;

--创建事件定时器
CREATE EVENT IF NOT EXISTS eventAutoInsert10s
ON SCHEDULE EVERY 10 SECOND
ON COMPLETION PRESERVE
DO CALL insetAutoInsert10sProcedure();

--开始事件
alter event eventAutoInsert10s on completion preserve enable;


--定时删除表中数据
CREATE PROCEDURE deleteAutoInsert10sProcedure()
BEGIN
delete from auto_insert_10s where create_time <= now();
END
;

CREATE EVENT IF NOT EXISTS eventDeleteAutoInsert10s
ON SCHEDULE EVERY 3600 SECOND
ON COMPLETION PRESERVE
DO CALL deleteAutoInsert10sProcedure();

alter event eventDeleteAutoInsert10s on completion preserve enable;


--启动定时器
SET GLOBAL event_scheduler = 1; 

--查看存储状态
SHOW PROCEDURE STATUS LIKE '%deleteAutoInsert10sProcedure%'$$

--查看事件
SHOW EVENTS;

--删除事件
DROP EVENT eventAutoInsert10s;

--停止定时器
SET GLOBAL event_scheduler = 0; 

--删除存储过程
DROP PROCEDURE insetAutoInsert10sProcedure;

--关闭事件
alter event eventAutoInsert10s on completion preserve disable;

ps1.可根据数据查询频率指定mysql定时器频率
ps2.需要全局启动定时器,才可以创建定时任务

3、flink读取binlog自动触发查询

jdbc_StarRocks_agg flink udtf函数,传入查询sql

CREATE TEMPORARY TABLE ods_qts_recommend_auto_insert_10s (
    id varchar
  )
WITH (
    'connector' = 'kafka',
    'format' = 'json',
    'properties.bootstrap.servers' = '',
    'properties.group.id' = 'test',
    'topic' = 'ods_qts_recommend_auto_insert_10s'
  );

create TEMPORARY VIEW view_log_platform_channel_dau
as
select b[1] ds
,b[2] platform
,b[3] platform_name
,b[4] channel
,b[5] channel_name
,b[6] dau
,b[7] new_dau
,b[8] exp_dau
,b[9] active_user
from(SELECT regexp_replace(substr(FROM_UNIXTIME(UNIX_TIMESTAMP()),1,10),'-','') process_date
FROM ods_qts_recommend_auto_insert_10s
) m ,lateral table (jdbc_StarRocks_agg('readJdbc',
      'select 
       ds,
       platform,
       platform_name,
       channel,
       channel_name,
       count(distinct dau) dau,
       count(distinct new_dau) new_dau,
       count(distinct exp_dau) exp_dau,
       count(distinct active_user) active_user  
       from log_platform_channel_dau
       where 1=1
 group by ds,
       platform,
       platform_name,
       channel,
       channel_name'
       ,'ds'
       ,process_date
       )) as T (b)
;

create TEMPORARY VIEW view_sign_platform_channel_total
as
select b[1] ds
,b[2] platform
,b[3] platform_name
,b[4] channel
,b[5] channel_name
,b[6] sign_pv
,b[7] sign_uv
,b[8] total
from(SELECT regexp_replace(substr(FROM_UNIXTIME(UNIX_TIMESTAMP()),1,10),'-','') process_date
FROM ods_qts_recommend_auto_insert_10s
) m ,lateral table (jdbc_StarRocks_agg('readJdbc',
      'select 
       ds,
       platform,
       platform_name,
       channel,
       channel_name,
       sum(pv) sign_pv,
       count(distinct uv) sign_uv,
       sum(total) total
       from sign_platform_channel_total
       where 1=1
 group by ds,
       platform,
       platform_name,
       channel,
       channel_name'
       ,'ds'
       ,process_date
       )) as T (b)
;

4、写入mysql或maxcompute

create TEMPORARY TABLE auto_arpu (
ds string
,platform string
,platform_name string
,channel string
,channel_name string
,dau bigint
,new_dau bigint
,exp_dau bigint
,active_user  bigint
,sign_pv bigint
,sign_uv bigint
,total double
,arpu double
,process_time string
)WITH (
    'connector' = 'odps',
    'endpoint' = '',
    'tunnelEndpoint' = '',
    'project' = '',
    'tablename' = 'auto_arpu',
    'accessid' = '',
    'accesskey' = '',
    'partition' = 'ds'
  );


insert into auto_arpu
select  regexp_replace(m.ds,'-','') ds
,m.platform
,m.platform_name
,m.channel
,m.channel_name
,cast(m.dau as bigint)
,cast(m.new_dau as bigint)
,cast(m.exp_dau as bigint)
,cast(m.active_user as bigint)
,cast(coalesce(n.sign_pv,0) as bigint) sign_pv
,cast(coalesce(n.sign_uv,0) as bigint) sign_uv
,cast(coalesce(n.total,0.0) as double) total
,cast(round(coalesce(n.total,0.0) / m.dau,6) as double) arpu
,process_time
from(select  ds
,platform
,platform_name
,channel
,channel_name
,dau
,new_dau
,exp_dau
,active_user 
,FROM_UNIXTIME(UNIX_TIMESTAMP()) process_time
from view_log_platform_channel_dau
) m left 
join 
(select ds
,platform
,platform_name
,channel
,channel_name
,sign_pv
,sign_uv
,round(total,2) total
from view_sign_platform_channel_total
) n 
on m.ds = n.ds 
and m.platform = n.platform
and m.channel = n.channel

5、报表数据源展示

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程总体架构请观看89讲。数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。数据仓库的应用有:1.数据分析、数据挖掘、人工智能、机器学习、风险控制、无人驾驶。2.数据化运营、精准运营。3.广告精准、智能投放等等。数据仓库是伴随着企业信息化发展起来的,在企业信息化的过程中,随着信息化工具的升级和新工具的应用,数据量变的越来越大,数据格式越来越多,决策要求越来越苛刻,数据仓库技术也在不停的发展。数据仓库有两个环节:数据仓库的构建与数据仓库的应用。随着IT技术走向互联网、移动化,数据源变得越来越丰富,在原来业  务数据库的基础上出现了非结构化数据,比如网站log,IoT设备数据,APP埋点数据等,这些数据量比以往结构化的数据大了几个量级,对ETL过程、存储都提出了更高的要求。互联网的在线特性也将业务需求推向了实时化 ,随时根据当前客户行为而调整策略变得越来越常见,比如大促过程中库存管理,运营管理等(即既有中远期策略型,也有短期操作型)。同时公司业务互联网化之后导致同时服务的客户剧增,有些情况人工难以完全处理,这就需要机器 自动决策 。比如欺诈检测和用户审核。总结来看,对数据仓库的需求可以抽象成两方面: 实时产生结果、处理和保存大量异构数据。本课程基于真实热门的互联网电商业务场景为案例讲解,结合分层理论和实战对数仓设计进行详尽的讲解,基于Flink+DorisDB实现真正的实时数仓,数据来及分析,实时报表应用。具体数仓报表应用指标包括:实时大屏分析、流量分析、订单分析、商品分析、商家分析等,数据涵盖全端(PC、移动、小程序)应用,与互联网企业大数据技术同步,让大家能够学到大数据企业级实时数据仓库的实战经验。本课程包含的技术: 开发工具为:IDEA、WebStorm Flink 1.11.3Hadoop 2.7.5Hive 2.2.0ZookeeperKafka 2.1.0、Spring boot 2.0.8.RELEASESpring Cloud Finchley.SR2Flume 、Hbase 2.2.6DorisDB 0.13.9、RedisVUE+jQuery+Ajax+NodeJS+ElementUI+Echarts+Datav等课程亮点: 1.与企业接轨、真实工业界产品2.DorisDB高性能分布式数据库3.大数据热门技术Flink最新版4.真正的实时数仓以及分层设计5.海量数据大屏实时报表6.数据分析涵盖全端(PC、移动、小程序)应用7.主流微服务后端系统8.数据库实时同步解决方案9.涵盖主流前端技术VUE+jQuery+Ajax+NodeJS+ElementUI+Echarts+Datav10.集成SpringCloud实现统一整合方案11.互联网大数据企业热门技术栈12.支持海量数据的实时数仓报表分析13.支持全端实时实时数仓报表分析14.全程代码实操,提供全部代码和资料 15.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 
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、付费专栏及课程。

余额充值