案例分享:数据集市搭建方案中集成SQLFlow数据血缘分析工具

news/2024/7/8 7:54:58 标签: 大数据

本文中描述的数据集市搭建方案是一家跨国公司在AWS平台上的具体实践案例。我公司参与其中的数据血缘部分的建设,SQLFlow数据血缘分析工具在该方案中帮助用户实现了数据血缘分析。

用户使用Redshift 数据库仓库进行数据集市开发。从各种数据源提取数据,并将数据存储到AWS S3中,通过将S3中的数据映射到Redshift Spectrum实现对大规模数据的高效查询,然后根据设计好的数据集市数据模型,将S3中的数据进行各种数据转换和审查,最终将处理结果数据存储到Redshift数据集市库中,经过测试后数据集市上线运维。从数据准备到数据集市上线的整个开发流程如下图所示:
在这里插入图片描述
数据集市开发过程中涉及到多个环节,其中一些环节会产生数据血缘关系。数据血缘关系是指数据从源头到目的地的整个流转过程,包括数据的来源、经过的转换、以及最终存储的位置。在 AWS 平台上,特别是使用 Redshift 数据库进行数据集市开发时,理解和管理数据血缘关系对于确保数据质量、进行数据治理以及优化数据处理流程至关重要。

产生数据血缘关系的环节:

1、数据提取:从各种数据源提取数据到 S3 时,会产生数据的初步血缘关系,记录了数据从源系统到 S3 的移动。

2、S3 到 Redshift Spectrum 的映射:将 S3 中的数据映射为 Redshift Spectrum 的外部表时,进一步定义了数据从 S3 到 Redshift 的流转路径。

3、数据转换:在数据转换过程中,原始数据会经过一系列的转换操作,生成新的数据集。这一过程中产生的血缘关系记录了数据如何被转换以及转换的逻辑。

4、数据加载:将转换后的数据加载到 Redshift 的持久化表中,这一步骤也会产生数据血缘关系,记录了数据从临时表到持久化表的移动。

数据血缘分析方案设计:

1、采用SQLFlow的私有化部署版本作为数据血缘分析工具,通过REST API做系统集成。

2、定义血缘关系模型:首先需要定义一个数据血缘关系模型,明确记录数据源、转换步骤、目标表以及每个步骤的依赖关系。 模型定义时可以参考SQLFlow的dataflow对象,该对象定义了元数据和数据血缘关系包含的所有信息。

3、血缘数据的收集:在数据处理的每个环节,通过日志、元数据管理工具或编程方式收集数据血缘信息。由于用户整个数据集市的开发都是围绕Redshift数仓展开的,所以分析Redshift日志中的sql可以覆盖所有数据血缘产生环节。另外为了保证血缘分析的准确性,还需要提取Redshift的metadata辅助分析。

4、血缘关系的存储与管理:设计一个中心化的血缘关系数据库或使用现有的数据目录服务来存储和管理血缘信息。用户将数据血缘存储到了Redshift库中,并上传到数据资产管理系统Alation进行管理。

数据血缘分析实施步骤:

1、集成血缘收集

a) 安装SQLFlow私有化部署regular版本。

b) 使用sqlflow-ingester的submitter工具,每天定时自动执行一次增量的SQLFlow数据血缘分析。submitter会拉取最近30天的Redshift日志,并将日志文件中的sql提取出来存为后缀为sql的文本文件,同时submitter还会连接Redshift数据库将完整的元数据提取出来存为metadata.json, 最后submitter将提取到的sql文件和metadata.json压缩成一个zip包,递交给SQLFlow做数据血缘分析。整个过程由submitter自动完成,无需人工干预。

2、血缘数据存储

编写Python脚本,每天凌晨定时执行,在脚本内调用SQLFlow的REST API查询数据血缘分析结果,并将血缘数据转成用户的数据血缘关系格式,存入Redshift数据库。同时上传到Alation数据资产管理平台。

3、实现血缘查询与分析功能

通过集成SQLFLow的widget前端组件可以实现数据血缘可视化。用户的数据资产管理是通过Alation实现,数据分析是通过商业智能BI软件Qlik Sense实现。在这两个系统中,点击要查询的表、视图或者字段可以链接到一个widget生成页面查看数据血缘。

用户用到的数据血缘分析功能主要有:

a) to left most 当前表/视图/字段的数据最初来自哪些表/视图/字段。

b) up stream 当前表/视图/字段的数据来自哪些表/视图/字段。

c) down stream 当这个表/视图/字段的数据发生变动时,会影响哪些表/视图/字段。

d) outgoing 用户在做报表查询时,会用到一些表或视图。需要通过分析SQL语句,列出这些给报表提供数据的表,并回溯到给这些表提供数据的数据集市表,通过数据集市表,可以继续回溯到更早的源系统。

4.血缘信息的维护与更新

确保数据处理流程中的变更能够及时反映到血缘信息中,定期审核和更新血缘数据库,保持数据血缘信息的准确性和时效性。 编写Python脚本,每日凌晨定时执行,脚本中会对数据的合法性进行校验,校验结果会自动发邮件到用户运维人员电子邮箱。

实施后的系统拓扑图如下所示:
在这里插入图片描述
通过上述设计方案和实施步骤,可以有效地管理和分析数据集市开发过程中产生的数据血缘关系,从而提高数据质量,优化数据处理流程,并支持数据治理和合规性要求。

更多文章请关注微信公众号:凤鸣古都


http://www.niftyadmin.cn/n/5536811.html

相关文章

openwrt 23.05.2 稳定版本 导入树莓派4B

openwrt 23.05.2 稳定版本 导入树莓派4B 强烈建议新手使用稳定版本 这里真的非常感谢这篇博客提供了大量支持,本文有大量篇幅抄袭。 https://blog.csdn.net/qq_44730817/article/details/135258664 编译系统(Build system usage) 下载源代…

秋招突击——设计模式补充——简单工厂模式和策略模式

文章目录 引言正文简单工厂模式策略模式策略模式和工厂模式的结合策略模式解析 总结 引言 一个一个来吧,面试腾讯的时候,问了我单例模式相关的东西,自己这方面的东西,还没有看过。这里需要需要补充一下。但是设计模式有很多&…

【机器学习】连续字段的特征变换

介绍 除了离散变量的重编码外,有的时候我们也需要对连续变量进行转化,以提升模型表现或模型训练效率。在之前的内容中我们曾介绍了关于连续变量标准化和归一化的相关内容,对连续变量而言,标准化可以消除量纲影响并且加快梯度下降…

论文浅尝 | 从最少到最多的提示可在大型语言模型中实现复杂的推理

笔记整理:王泽元,浙江大学博士 链接:https://openreview.net/forum?idWZH7099tgfM 1. 动机 尽管深度学习已经取得了巨大的成功,但它与人类智慧仍然存在一些明显差距。这些差距包括以下几个方面:1)学习新任…

回溯法:生成一个字符串的所有排列组合

问题:字符串abcd怎样获取abcd、acbd、acdb、adbc、adcb、bacd、bcad、bdac、bdca、cabd、cdba、cadb、cbda等,所有排列。 使用回溯法来生成一个字符串的所有排列 import java.util.ArrayList; import java.util.List;public class Permutations {publi…

.net 8 集成 MinIO文件存储服务,实现bucket管理,以及文件对象的基本操作

一、准备工作 1、本地部署MinIO服务 2、创建MinIO的Access Key 3、创建.net 项目 4、下载MinIO sdk 5、相关文档 二、编写MinIO工具类 三、管理存储桶 1、MyBucket类 (1)判断bucket是否存在 (2)新建bucket &#xff08…

Nature Communications|用于电子皮肤的自主自愈晶体管(柔性半导体器件/电子皮肤/柔性电子)

2024年4月23日,韩国庆熙大学Jin Young Oh,美国斯坦福大学鲍哲南(Zhenan Bao)和韩国嘉泉大学Tae Il Lee团队,在《Nature Communications》上发布了一篇题为“Autonomous self-healing supramolecular polymer transistors for skin electronics”的论文。论文内容如下: 一…

从OpenAI停服看中国市场:国产替代崛起的机遇与挑战

一、OpenAI 停服事件背景 OpenAI 自 2020 年推出 GPT-3 以来,在全球范围内引起了极大的反响。其强大的自然语言处理能力使其成为许多企业和开发者的首选工具。然而,2024 年 6 月 25 日,许多中国用户收到了一封来自 OpenAI 的邮件&#xff0c…