您的位置:首页 > 娱乐 > 八卦 > 网站建设公司的服务定位_建设网站建设_宁德seo推广_google seo怎么做

网站建设公司的服务定位_建设网站建设_宁德seo推广_google seo怎么做

2025/2/24 5:18:16 来源:https://blog.csdn.net/weixin_57459958/article/details/143706960  浏览:    关键词:网站建设公司的服务定位_建设网站建设_宁德seo推广_google seo怎么做
网站建设公司的服务定位_建设网站建设_宁德seo推广_google seo怎么做

💡 使用 SQL 即可定义扩维操作,实现 ODS 更新立即扩维并更新至 DWD 层,使用简单,实时性更高。

扩维是数据仓库建模中的一项重要操作。

根据经典的数据仓库建模理论,在通过 ETL(提取、转换、加载)过程将交易系统的数据加载至数据仓库的 ODS(贴源层)层后,下一步通常是对 ODS 层的原始交易数据进行扩维处理。扩维的目的是通过加入更多的维度信息,形成信息更为完备的“大宽表”。这些“大宽表”数据随后被写入 DWD(明细层),为进一步的数据分析和计算提供了结构化的基础数据。通过扩维处理,能够加速数据分析过程,提高多维度分析的效率和准确性。

过去,扩维操作通常采用“跑批”的方式进行处理。具体而言,在 ETL 过程完成后,通常会在非高峰时段(如晚上)使用调度工具执行 SQL 语句,批量地将当天的新增数据进行扩维处理,并写入 DWD 层。这种方式依赖于定时批处理任务,适用于数据量较大且更新频率较低的场景,但在实时性要求较高的应用中存在一定的局限性。

通过 Domino 流计算技术,我们可以使用 SQL 定义扩维操作,实现 ODS 到 DWD 是实时扩维更新,从而避免了“跑批”操作,无需调度,不但实时性更佳,而且无需第三方工具,大大降低了系统复杂度和运维成本。

如果再通过 CDC 工具将交易系统的数据实时更新至 ODS 仓中,配合流计算,就能使数仓真正具备“实时分析”的能力。

作为介绍 Domino 流计算的第一篇文章,我们就从最基本的扩维操作开始,通过一个简单对订单 + 商品信息 执行 JOIN 扩维操作的例子,演示 Domino 的使用方法和带来的效果。

表结构

ods_order 订单信息:存储订单信息的事实表;

dim_prod 商品信息:存储商品详细信息的维度表;

dwd_order_detail 订单详情:扩维后包含所有商品信息的订单详情表。

操作

  1. 第一步,让我们创建表 ods_order 和 dim_prod
CREATE TABLE ods_order (id int,prod_id int,ts timestamp);CREATE TABLE dim_prod (id int, prod_name text,prod_detail text,);
  1. 让我们创建流 dwd_order_detail,通过商品信息对原始交易数据进行数据扩维。当ods_order 有新数据插入时,dwd_order_detail 会即时增量刷新,最新的、经过扩维的交易信息会自动写入。
CREATE STREAM dwd_order_detail(id, ts, prod_id, prod_name, prod_detail)
AS (SELECTods_order.id,ods_order.ts,ods_order.prod_id, dim_prod.prod_name,dim_prod.prod_detail FROM STREAMING ALL ods_orderINNER JOIN dim_prod ON ods_order.prod_id = dim_prod.id
) PRIMARY KEY (id);
  1. 准备商品数据
INSERT INTO dim_prod 
VALUES (1,'apple','fruit_001'
);INSERT INTO dim_prod 
VALUES (2,'cola','drink_001'
);
  1. 让流表工作起来 - 插入操作 在第二步中我们通过 JOIN ods_order 和 dim_prod 创建了流 dwd_order_detail,一旦我们向 ods_order 中插入新数据,那么 dwd_order_detail表也会立即更新,展示出扩维后的新订单数据。
-- 订单 1
INSERT INTO ods_order 
VALUES (1,1,current_timestamp
);
-- 订单 2
INSERT INTO ods_order 
VALUES (2,2,current_timestamp
);

查询 dwd_order_detail,我们刚刚写入的数据自动经过扩维更新至表中。

SELECT * FROM dwd_order_detail;id |             ts             | prod_id | prod_name | prod_detail
----+----------------------------+---------+-----------+------------1 | 2024-08-01 15:50:23.117737 |       1 | apple     | fruit_0012 | 2024-08-01 15:50:35.115252 |       2 | cola      | drink_001
(2 rows)
  1. 让流工作起来 - 更新操作 除了 INSERT, 流的上游的 UPDATE 操作,也会自动更新至下游:
-- 更新 cola -> pepsi
UPDATE dim_prod SET prod_name = 'pepsi' WHERE id = 2;

查看结果

SELECT * FROM dwd_order_detail;id |             ts             | prod_id | prod_name | prod_detail
----+----------------------------+---------+-----------+------------1 | 2024-08-01 15:50:23.117737 |       1 | apple     | fruit_0012 | 2024-08-01 15:50:35.115252 |       2 | pepsi     | drink_001
(2 rows)
  1. 让流表工作起来 - 删除操作
-- 删除订单2
DELETE FROM ods_order WHERE id = 2;

查看结果

SELECT * FROM dwd_order_detail;id |             ts             | prod_id | prod_name | prod_detail
----+----------------------------+---------+-----------+------------1 | 2024-08-01 15:50:23.117737 |       1 | apple     | fruit_001
(1 row)

了解更多

Domino 流计算使用灵活,功能强大

  1. 用 WHERE 条件直接进行过滤
  2. 多表 JOIN, UNION 等均可使用
  3. 可选追踪 INSERT / UPDATE / DELETE 操作

本文为YMatrix原创内容,未经允许不得转载。

欲了解更多超融合时序数据库相关信息,请访问 “YMatrix 数据库”官方网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com