您当前位置:资讯中心 >大数据 >浏览文章

从ETL到ELT,揭秘火山引擎ByteHouse的技术实现

来源:互联网 日期:2023/10/30 15:51:43 阅读量:(0)

前言

当涉及到企业分析场景时,所使用的数据通常源自多样的业务数据,这些数据系统大多采用以行为主的存储结构,比如支付交易记录、用户购买行为、传感器报警等。在数仓及分析领域,海量数据则主要采按列的方式储存。因此,将数据从行级转换成列级存储是建立企业数仓的基础能力。

传统方式是采用Extract-Transform-Load (ETL)来将业务数据转换为适合数仓的数据模型,然而,这依赖于独立于数仓外的ETL系统,因而维护成本较高。但随着云计算时代的到来,云数据仓库具备更强扩展性和计算能力,也要求改变传统的ELT流程。

火山引擎ByteHouse是一款基于开源ClickHouse推出的云原生数据仓库,为用户提供极速分析体验,能够支撑实时数据分析和海量数据离线分析,同时还具备便捷的弹性扩缩容能力,极致分析性能和丰富的企业级特性。凭借其强大的计算能力,可以全面支持Extract-Load-Transform (ELT)的能力,从而使用户免于维护多套异构系统。

具体而言,用户可以将数据导入后,通过自定义的SQL语句,在ByteHouse内部进行数据转换,而无需依赖独立的ETL系统及资源。这样,用户只需要采用统一的SQL方式来完成数据转换操作。

在本文中,我们将重点介绍ByteHouse遇到的挑战,以及如何通过3大能力建设实现完备的ELT能力。

痛点以及挑战

我们先从一个简单的SSB(start-schema-benchmark)场景出发, 其中包含:

  • 1个事实表: lineorder
  • 4个维度表:customer, part, supplier, dwdate

图片图片

ssb.png

在SSB的查询分析中,我们发现大部分的查询都涉及到事实表和维表的join,因此可以通过Transform的步骤,将事实表“打平”。打平所用到的SQL如下:

insert into ssb_flat 
select * from
lineorder l
join customer c on l.lo_custkey = c.c_custkey
join part p on l.lo_partkey = p.p_partkey
join supplier s on l.lo_suppkey = s.s_suppkey
where l.lo_orderdate = <bizdate>
关键字:
声明:我公司网站部分信息和资讯来自于网络,若涉及版权相关问题请致电(63937922)或在线提交留言告知,我们会第一时间屏蔽删除。
有价值
0% (0)
无价值
0% (10)

分享转发:

发表评论请先登录后发表评论。愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。