黄东旭解析 TiDB 的核心优势
789
2023-06-16
最常用的五种流式ETL模式!
1970 年代的许多计算概念已经过时,但ETL (Extract-Transform-Load)及其最近的 anagram shuffle ELT并非如此,它在目的地与飞行中操纵数据。ETL 和 ELT 传统上是计划的批处理操作,但随着对始终在线、始终最新的数据服务的需求成为常态,在数据流上操作的实时 ELT 是许多组织的目标——如果不是现实的话。
在实际使用中,ETL 中的“T”代表由原始操作组装而成的各种模式。在本文中,我们将探索这些操作并查看如何将它们实现为 SQL 语句的示例。
使用 SQL 语句进行转换?
管道模式
大多数 ETL 管道都适合一种或多种模式。Decodable 的连接 - 流 - 管道抽象意味着您可以选择将所有内容构建到单个管道中,或者根据需要将复杂的转换分解为由流、跨团队、区域和用例连接的可重用管道网络。
1:过滤器
过滤器从流中删除不需要的记录,删除与 SQL where子句中的“规则”不匹配的记录。过滤器通常用于抑制敏感记录以确保合规性,或减少目标系统上的处理负载或存储需求。
2:路线
Route 模式从一个或多个输入流创建多个输出流,根据一组规则将记录定向到正确的目的地。此模式实际上由多个过滤器组成,它们都可以查看每个输入记录,但每个过滤器仅传输与该特定目的地的规则匹配的那些记录。
3:变换
转换管道通过修改输入记录来创建输出记录。通常这将导致 1:1 传输,但在某些情况下,输出来自多个输入记录,因此可能存在 1:many 关系。在这里,我们将调用三个专门的转换:
变换:提取
解析输入记录,从输入记录中提取数据并将其用作丰富派生输出记录的基础。
变换:归一化
传入的数据记录通常需要针对模式进行规范化,以便目标系统处理它们。缺少的字段可能需要填充默认值,可能需要删除可选字段,并强制执行数据类型。
转换:匿名化
在目标系统不需要信息来完成处理的情况下,匿名管道只是出于合规、监管或隐私原因而消除了敏感字段。
1-- Anonymize SSNs and zip codes2insert into user_events_masked3select4user_id,5 username, overlay(ssn placing '*' from 1 for 12) as ssn, substring(zip_code from 1 for 2) as zip_code_1,6action7from user_events
4:聚合
5:触发
我们的最终模式是触发器。与几乎所有其他模式不同,触发器输出记录可能与输入记录的模式几乎没有重叠,因为它表明已在一个或多个输入记录上检测到一组条件,并作为结果输出警报。输出模式可以表示检测到的条件、要采取的行动或两者兼而有之。
1-- Build hourly usage data for a Stripe integration on the output stream 2 3insert into stripe_product_usage 4 5select 6 7window_start as _time, 8 customer_id, 'abcd1234' as price_id sum(bytes_sent) / 1024 / 1024 as mb_sentfrom table( 9 tumble( table document_downloads, descriptor(_time),10 interval '1' hour11 )12)group by window_start, customer_idhaving mb_sent > 1024
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。