业务增量数据入仓以及增全量合并工作

简介: 增量数据入库与增量全合并工作

当某张表中存在上亿条或者数据量很大的情况下,每天全量同步数据会消耗大量的资源,为此可以考虑仅仅将当天的增量数据同步到数仓中
首先需要先将历史数据全量同步到数仓b_order_df表中,之后进行增量数据同步到b_order_di表中,剩下的就是每天将同步过来的增量数据与历史全量数据进行合并的工作。

-- 通过创建时间或者更新时间筛选出业务日期中新增或者变化的输入。同步到数仓中的增量表b_order_di中
select 
        order_code
        ,external_order_code
        ,total_order_code
        ,order_type
        ,business_type
        ,order_tag
        ,channel_code
        ,terminal
        ,shop_code
        ,shop_name
        ,customer_id
from b_order 
where (create_time >= ${bizdate} and create_time < DATE_ADD(${bizdate}, 1))
or (update_time >= ${bizdate} and update_time < DATE_ADD(${bizdate}, 1))

同步入仓完成后需要进行增量数据与全量数据合并工作

-- 将业务日期的增量数据与业务日期前一天的全量数据进行合并成为业务日期下的全量数据,并写入到业务日期的全量表中
insert overwrite table b_order_df paritition(ds = ${bizdate})
select
     coalesce(di.order_code,df.order_code) as order_code
    ,coalesce(di.external_order_code,df.external_order_code) as external_order_code
    ,coalesce(di.total_order_code,df.total_order_code) as total_order_code
    ,coalesce(di.order_type,df.order_type) as order_type
    ,coalesce(di.business_type,df.business_type) as business_type
    ,coalesce(di.order_tag,df.order_tag) as order_tag
    ,coalesce(di.channel_code,df.channel_code) as channel_code
    ,coalesce(di.terminal,df.terminal) as terminal
    ,coalesce(di.shop_code,df.shop_code) as shop_code
    ,coalesce(di.shop_name,df.shop_name) as shop_name
    ,coalesce(di.customer_id,df.customer_id) as customer_id
from(
    select 
            order_code
            ,external_order_code
            ,total_order_code
            ,order_type
            ,business_type
            ,order_tag
            ,channel_code
            ,terminal
            ,shop_code
            ,shop_name
            ,customer_id
    from b_order_di
    where ds = ${bizdate} -- 业务日期
)di
full join
(
    select 
            order_code
            ,external_order_code
            ,total_order_code
            ,order_type
            ,business_type
            ,order_tag
            ,channel_code
            ,terminal
            ,shop_code
            ,shop_name
            ,customer_id
    from b_order_df
    where DATE_SUB(${bizdate}, 1) -- 业务日期的前一天
)df on di.order_code = df.order_code
目录
相关文章
|
SQL druid 搜索推荐
最强最全面的数仓建设规范指南 (一)
本文将全面讲解数仓建设规范,从数据模型规范,到数仓公共规范,数仓各层规范,最后到数仓命名规范,包括表命名,指标字段命名规范等!
14411 2
|
云栖大会 BI 决策智能
开放下载!阿里云数据中台全系白皮书,一次性放送19本,速速收藏
2020云栖大会“阿里云数据中台”会场全面推出数据中台全系白皮书,全面了解阿里云数据中台,尽在阿里云数据中台系列白皮书!
38053 0
开放下载!阿里云数据中台全系白皮书,一次性放送19本,速速收藏
|
11月前
|
SQL 分布式计算 关系型数据库
|
SQL 数据库 HIVE
hive数仓 ods层增量数据导入
根据业务需求,当表数据量超过10万条时采用增量数据导入,否则全量导入。增量导入基于`create_date`和`modify_date`字段进行,并确保时间字段已建立索引以提升查询效率。避免在索引字段上执行函数操作。创建增量表和全量表,并按日期进行分区。首次导入全量数据,后续每日新增或变更数据保存在增量表中,通过全量表与增量表的合并保持数据一致性。
661 13
|
11月前
|
SQL 存储 消息中间件
vivo基于Paimon的湖仓一体落地实践
本文整理自vivo互联网大数据专家徐昱在Flink Forward Asia 2024的分享,基于实际案例探讨了构建现代化数据湖仓的关键决策和技术实践。内容涵盖组件选型、架构设计、离线加速、流批链路统一、消息组件替代、样本拼接、查询提速、元数据监控、数据迁移及未来展望等方面。通过这些探索,展示了如何优化性能、降低成本并提升数据处理效率,为相关领域提供了宝贵的经验和参考。
1203 3
vivo基于Paimon的湖仓一体落地实践
|
SQL 存储 数据库
Flink + Paimon 数据 CDC 入湖最佳实践
Flink + Paimon 数据 CDC 入湖最佳实践
3050 59
|
消息中间件 关系型数据库 Kafka
深入理解数仓开发(二)数据技术篇之数据同步
深入理解数仓开发(二)数据技术篇之数据同步
|
SQL 存储 Java
Hive 拉链表详解及实例
拉链表是一种数据仓库技术,用于处理持续增长且存在时间范围内的重复数据,以节省空间。它在Hive中通过列式存储ORC实现,适用于大规模数据场景,尤其当数据在有限时间内有多种状态变化。配置涉及事务管理和表合并选项。示例中展示了如何从原始订单表创建拉链表,通过聚合操作和动态分区减少数据冗余。增量数据可通过追加到原始表然后更新拉链表来处理。提供的Java代码用于生成模拟的订单增量数据,以演示拉链表的工作流程。
934 3
|
SQL Java HIVE
使用 Paimon + StarRocks 极速批流一体湖仓分析
本文整理自阿里云智能高级开发工程师王日宇,在 Flink Forward Asia 2023 流式湖仓(二)专场的分享。
80729 3
使用 Paimon + StarRocks 极速批流一体湖仓分析
|
消息中间件 关系型数据库 MySQL
Maxwell 概述、安装、数据同步【一篇搞定】!
Maxwell 是一个由 Zendesk 开源的用于 MySQL 数据库实时数据捕获和同步的工具,支持多种数据库系统,以 JSON 格式输出变更数据。它实时监控数据库中的更新,将变化传递给其他系统,常用于实时数据管道、数据仓库和事件驱动架构。Maxwell 具有实时性、可配置性和高性能等特点。其工作流程包括 Binlog 解析、数据解析、重构、发布到消息队列(如 Kafka)以及事件处理。安装时需注意 JDK 版本,并配置 MySQL、Zookeeper 和 Kafka。此外,Maxwell 支持定向监听特定库表,并能进行历史和增量数据同步。
2978 1

热门文章

最新文章