暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Doris数仓实时分析实践

数码百科 2024-07-31
201

在大数据时代,实时数据分析对于企业决策和运营至关重要。传统的ETL流程在处理实时数据时存在诸多挑战,如数据延迟、处理复杂度高和扩展性受限等。

为了解决这些问题,许多企业开始采用实时数据流处理框架,如Apache Flink,来实现数据的实时同步和处理。

Flink 1.18.1 整库Mysql实时同步Doris 2.1

假设我们ODS层已有两个数据表,一个是订单数据表ods_orders,另一个是用户数据表ods_users。接下来,我们在DWD层分别物化了ODS层的数据,并进行了一些基本的转换操作:

1. 创建订单明细表:

CREATE MATERIALIZED VIEW dwd_orders (

order_id INT,

user_id INT,

order_date DATE,

order_amount DECIMAL(10, 2),

user_name VARCHAR(255),

user_city VARCHAR(255),

...

) ENGINE=OLAP

DISTRIBUTED BY HASH(order_id) BUCKETS 10

PROPERTIES("storage_format"="v2")

AS

SELECT

o.order_id,

o.user_id,

o.order_date,

o.order_amount,

u.user_name,

u.user_city,

...

FROM ods_orders o

JOIN ods_users u ON o.user_id = u.user_id;

物化视图dwd_orders是根据订单数据表ods_orders和用户数据表ods_users创建的。它包含了订单ID、用户ID、订单日期、订单金额以及用户的姓名和城市等信息。


2. 创建用户明细表:

CREATE MATERIALIZED VIEW dwd_users (

user_id INT,

user_name VARCHAR(255),

user_city VARCHAR(255),

...

) ENGINE=OLAP

DISTRIBUTED BY HASH(user_id) BUCKETS 10

PROPERTIES("storage_format"="v2")

AS

SELECT

*

FROM ods_users;

物化视图dwd_users是根据用户数据表ods_users创建的。它包含了用户ID、用户姓名和用户城市等信息。

3.最后建立用于仪表盘的维度分析数据集

SELECT

c.city_id,

o.order_date,

SUM(o.order_amount) AS total_order_amount,

...

FROM dwd_orders o

JOIN dim_cities c ON o.user_city = c.city_name

GROUP BY c.city_id, o.order_date;

查询的目的是按照城市ID和订单日期对订单金额进行汇总。

文章转载自数码百科,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论