那么,什么是 SAYN?简单来说,SAYN 是一个开源数据处理框架。 我们(173Tech 团队)将其构建为最简单的框架,同时保持完全的灵活性。 用户可以从多种预定义任务类型中进行选择并构建自己的 ETL 流程。 SAYN 真的很独特,不同于你以前见过的任何东西。想知道更多?然后继续阅读!

现代分析:背景

在我们更多地谈论 SAYN 之前,让我们先快速回顾一下,把事情放在上下文中。现代分析基础设施通常使用五个核心层围绕数据仓库进行组织,如下图所示:

[sayn_img_1](https://res.cloudinary.com/practicaldev/image/fetch/s--wFWwTjsm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/i/8tg7tm57apk07eiogz1b.png)

拥有一个高效且可扩展的数据流程至关重要,该流程可以轻松支持数百甚至更多任务及其依赖项的创建和维护。有两种常见的方法来解决这个问题:

  • 使用诸如 Airflow 之类的技术工作流管理框架,它的设置可能非常复杂并导致更多的维护。

  • 使用 Stitch + DBT 等工具采用轻量级方法,这种方法缺乏灵活性,因为它没有为 Python 流程(如自定义提取或数据科学模型)提供流程。

如果您想在大规模分析过程中保持高度灵活性,同时又要保持简单,该怎么办? 好吧,事实证明,我们从未找到有效解决这些问题的数据处理框架。所以我们建造了它!

SAYN:创世纪

我们认为,在大规模维护管道时,简单性至关重要。然而,我们也相信简单不应以牺牲灵活性为代价。这就是我们构建自己的开源数据处理框架的原因:SAYN。 SAYN 旨在通过简单、灵活和集中来增强分析团队的能力。它使分析团队内对数据流程的贡献民主化,实现了充分的灵活性,并通过自动化帮助节省了大量时间。

SAYN 是围绕任务的概念构建的,目前为您预先构建了以下任务类型:

  • sql: 对数据库执行 SQL 查询。

  • autosql: 自动执行数据转换过程。您编写一个 SELECT 语句,SAYN 会为您创建表/视图。它也可以用于增量负载。

  • python: 执行 Python 代码。

  • copy: 自动将数据从一个数据库复制到另一个数据库。

  • 和更多即将到来!

下图显示了我们通常如何在现代分析堆栈中使用 SAYN。蓝线由 SAYN 编排:

[sayn_img_2](https://res.cloudinary.com/practicaldev/image/fetch/s--jKwBL5KK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/i/jdkr436cx3wyyhkzrq1s.png)

SAYN 哲学

SAYN 的设计围绕三个核心信念,即现代数据处理框架应该通过简单、灵活和集中化来增强数据工程师和分析师的能力。这就是 SAYN 兑现承诺的方式:

简单

  • 项目结构和任务是用 YAML 定义的,YAML 是一种非常简单的语言,通常用于配置。这具有显着优势,即每个分析师或工程师都可以轻松地为管道做出贡献并添加新的数据流程。

  • 您可以使用命令sayn run执行任意任务组合,包括您的 Python 任务,从而实现顺畅高效的工作流程。

  • SAYN 通过其任务类型(例如,自动将 SELECT 语句转换为表/视图,将数据从一个数据库复制到另一个)及其 API(例如,预建的数据库连接和访问凭据选择)提供了很多自动化并降低了数据工程的复杂性在您的 Python 代码中)。您的团队可以专注于编写逻辑代码而不是管道代码。

  • 只需 2 行 YAML 和要执行的代码即可定义任务。您通常可以超级快速地使用 SAYN!

灵活

  • SAYN 使您能够同时使用 SQL 和 Python,这意味着您可以在分析范围内做任何事情:数据提取、建模和数据科学。

  • SAYN 由 Jinja 提供支持,让您可以轻松地使您的代码动态化。例如在 prod 和 dev 环境之间切换。

  • 您可以定义任何您喜欢的数据库结构,SAYN 默认不强制您进行任何特定设计。

集中式

  • SAYN 可用于整个管道,使您能够集中和版本控制 SAYN 项目中的所有分析代码。

  • 任务定义集中在构建 SAYN 编排骨干的 YAML 文件中。

SAYN 的工作原理

了解 SAYN 有多棒的最好方法就是实际尝试一下! SAYN 分布在 PyPi 上并使用命令行工作。它使用sayn run命令执行。您可以在 2 分钟内开始使用以下四行代码:

$ pip install sayn
$ sayn init test_sayn
$ cd test_sayn
$ sayn run

进入全屏模式 退出全屏模式

这将安装sayn包,创建一个名为test_sayn的 SAYN 项目,将您移动到项目目录,然后执行 SAYN。您应该看到以下情况发生:

[sayn_gif_1](https://res.cloudinary.com/practicaldev/image/fetch/s--Btkl_csV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/i/llcnv65tu0bde9fkbw7o.gif)

如前所述,SAYN 项目是围绕任务的概念组织的:

  • 个任务定义您的数据过程及其关系,然后 SAYN 会自动为您构建有向无环图 (DAG)。

  • SAYN 支持多种任务类型。您只需通过选择类型来定义您的任务,定义所需的属性(如果有),并指定要运行的代码。

  • 个任务可以分隔在不同的 YAML 文件(被认为是“任务组”)中,以分隔数据流程(例如核心、营销、数据科学),并在您扩展时保持您的项目井井有条。

以下是 SAYN 的一些示例用例:

  • 使用 autosql 任务进行仓库内自动化数据转换。这对于计算营销投资回报率等数据建模过程非常强大。

  • 自动将数据从操作数据库副本复制到分析集群。

  • 当提取器丢失或提取效率低下时,使用 Python 任务补充提取工具(例如 Stitch)。

  • 使用 Python 任务创建 LTV 预测数据科学模型并将结果加载到您的数据仓库。

如果您想了解有关 SAYN 工作原理的更多信息,请阅读我们的教程,这是很好的起点。

想了解更多?

我们正在积极开发SAYN并且一天比一天好! SAYN 让我们在 173Tech 的生活变得如此轻松,它真正释放了我们的分析能力。您的团队也可以从中受益!此外,我们很乐意收到可以帮助我们改进框架的反馈,所以请联系我们,我们很友好 :) 您可以通过sayn@173tech.com联系我们以获取有关 SAYN 的问题或建议。快说吧!

Logo

华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!

更多推荐