Snowflake数据工程——使用 Snowflake 进行数据工程

512 阅读28分钟

本章内容概述

  • 聚焦 Snowflake 的数据工程功能
  • 探讨 Snowflake 数据工程师的职责
  • 使用 Snowflake 构建数据管道
  • 基于 Snowflake 的数据工程应用

几乎每个行业的组织都会收集大量数据。数据分析师、数据科学家以及其他业务专业人员利用这些数据获取有助于决策的洞察。然而,原始数据通常并不适合直接使用。数据消费者需要经过业务规则转换的数据,这些数据可能被重新塑形以满足特定的业务需求,并根据需要结合外部数据进行增强。

数据工程是一种实践活动,其核心是构建解决方案,以从源系统提取数据,将数据转化为有用的信息,并将统一处理后的数据呈现给用户以供下游使用。这些解决方案通常以 ETL(提取、转换、加载)或 ELT(提取、加载、转换)的缩写形式表示。

数据工程师的职责是构建数据管道,使数据分析师、数据科学家和其他用户能够获取他们工作所需的数据。按时提供高质量的数据是实现有效分析的关键,因此,数据工程师在数据分析领域中扮演着至关重要的角色。

1.1 Snowflake 在数据工程中的应用

组织通常从源系统中提取数据,将其存储在数据仓库中,并以维度数据集市的形式呈现给用户。其他场景还包括构建数据湖、数据集市或面向领域的数据产品。在每种场景中,数据都需要从源系统提取,加载到目标存储平台中,并经过转换以供下游用户使用。

Snowflake 是一个现代化的云数据平台,专用于数据存储、处理、应用开发和分析。它在数据仓库、数据湖、数据分析以及数据科学等领域的解决方案中颇受欢迎。以下章节将更详细地介绍 Snowflake 在支持数据工程方面的功能。

提示:
Snowflake 不断演进并添加新功能。欲了解最新信息,请访问 Snowflake 官方网站

1.1.1 Snowflake 架构

Snowflake 是一种基于云的 SaaS(软件即服务)解决方案,目前支持的云提供商包括 Amazon Web Services(AWS)、Microsoft Azure 和 Google Cloud Platform(GCP)。当用户选择 Snowflake 作为云数据平台时,无需购买、安装、配置、管理或维护硬件和软件。

在 Snowflake 架构中,存储和计算是分离管理的。数据只需存储一次,就可以被多种工作负载访问,例如数据工程管道、查询引擎、数据科学解决方案、数据共享或数据分析等。

Snowflake 将数据以压缩列式格式存储在云存储中,并管理数据存储的组织、结构、压缩、元数据、统计信息和安全性。用户可以通过 SQL 查询访问这些数据对象。

用户通过虚拟仓库(virtual warehouses)执行查询。每个虚拟仓库独立消耗计算资源,互不影响。用户可以配置每个虚拟仓库的资源数量,Snowflake 还能够根据期望的性能和工作负载动态地扩展或缩减资源。

Snowflake 通过云服务层来协调其不同的组件。云服务层包括身份认证、访问控制、基础设施管理、查询优化、元数据管理和安全功能。如图 1.1 所示,Snowflake 架构分为三个层次:数据库存储层、查询处理层和云服务层。

image.png

Snowflake 提供了强大的存储功能,例如零复制克隆(Zero-Copy Cloning)和时间旅行(Time Travel)。

零复制克隆允许在不产生额外存储成本的情况下复制数据,这使得数据工程师能够快速创建新环境。例如,可以将开发环境克隆为测试环境,或将生产环境克隆为开发环境,用于新功能开发。

时间旅行功能能够保护数据免受意外错误或恶意行为的影响。它允许用户访问过去某一时间点的数据,是一种高效的数据备份方式,可以根据配置的时间范围灵活保留历史数据。

此外,Snowflake 支持在不同区域和云平台之间复制数据库。这项功能确保复制的数据与源数据保持同步,同时将数据移近选定地理区域的消费者,以降低查询延迟,同时也可作为数据备份使用。

1.1.2 Snowflake 的数据工程功能

Snowflake 支持多种用于数据摄取和转换的功能,这些功能将在以下章节中详细描述。

从云存储提供商摄取数据

用户可以从支持的云存储提供商中摄取文件,例如 AWS 的 S3 存储桶、Azure 的 Blob 存储容器和 GCP 的存储桶。文件可以是结构化或半结构化格式,如 CSV、JSON、XML、Parquet 等。Snowflake 还支持处理包含图像、视频或音频的非结构化数据文件。用户可以共享文件访问 URL,并将这些 URL 和文件元数据加载到 Snowflake 表中。

Snowpipe

Snowpipe 是一项支持持续数据摄取的服务。该服务会在云存储中有新文件可用时,将其摄取到 Snowflake 表中。通过与云提供商的通知服务集成,Snowpipe 能实现这一持续摄取功能,该服务会在有新文件可摄取时通知 Snowpipe。

Snowflake 任务

Snowflake 支持创建任务,这些任务按照循环计划执行 SQL 语句、存储过程或 Snowflake 脚本块。任务可以依赖于其他任务,从而支持构建复杂的数据处理管道。

Snowpark

Snowpark 提供了 API 库,使数据工程师可以使用支持的编程语言(包括 Python、Scala 或 Java)构建数据管道。这些编程语言编写的代码能够在 Snowflake 中本地运行。例如,数据工程师可以使用 Python 构建数据管道,并根据需要集成开源库以增强功能。

数据治理功能

存储在 Snowflake 中的数据可能包含敏感信息,这些信息只能向授权用户开放。在多租户架构中,不同组织或业务部门的数据存储在一个数据库中,但数据访问权限仅限于同一组织的用户。为满足这些需求,Snowflake 提供了数据治理功能,如掩码策略和行级访问策略,防止未经授权的用户访问敏感或机密数据。

Snowflake Marketplace

Snowflake Marketplace 是一个平台,用户可以在其中发现和访问其他组织发布的数据集。用户可以选择相关数据集,利用这些数据丰富分析工作。同时,他们也可以发布自己的数据集,供他人使用。数据集可以公开共享或私密共享,从而实现组织内部或外部的安全数据共享和协作。

Snowflake Partner Connect

凭借其丰富的业务合作伙伴生态系统,Snowflake 无缝集成了许多流行的第三方工具和服务,这些工具覆盖了多个类别,如商业智能、数据集成、机器学习、数据科学、安全性、数据治理和可观测性。用户可以使用这些工具来摄取数据、执行数据分析、构建报告和仪表板,或者应用机器学习和数据科学算法。

通过 Snowflake,数据工程师可以根据自己的偏好、架构方向和业务需求,从众多功能中选择合适的工具来构建数据管道。

1.2 Snowflake 数据工程师的职责

数据工程师的核心职责是设计、构建、编排、优化、监控和维护数据管道,这些管道将原始数据从源系统提取出来,并转化为可操作的信息供下游使用。他们需要确保数据能够根据用户需求快速访问、安全、可靠且易于使用。

数据工程师的角色通常由具备一定经验的专业人士担任,因为这一职位涉及广泛的职责。许多数据工程师拥有软件工程或商业智能分析的背景,并在工作中逐步增加所需的技能。在 Snowflake 环境下工作时,他们需要掌握并熟悉 Snowflake 的各种功能。

使用 Snowflake 时,云计算知识至关重要。例如,数据工程师经常与云对象存储打交道,并需要了解如何安全地连接到云环境。随着越来越多的组织向云端迁移,将基础设施托管在云提供商上,数据工程师需要熟悉如何在云环境中高效操作。

数据工程师需要熟悉 Snowflake 的存储组织结构,以编写高效的 SQL 查询来提取和转换数据。他们需要了解数据如何存储在 Snowflake 的微分区中,以及何时应用分区优化、搜索优化、查询加速或其他功能以提升查询性能。

他们还需了解如何高效利用 Snowflake 虚拟仓库(virtual warehouses),并理解其解决方案对计算资源消耗的影响。虚拟仓库的缓存功能可以加快查询性能,因为同一仓库内的其他查询可以重复利用已缓存的数据。

在企业环境中构建解决方案时,数据工程师需要应用软件工程原则,例如编写最佳代码、自动化测试、代码版本控制、持续集成和持续部署(CI/CD)。如果使用 Snowpark,他们还需要掌握一种编程语言,例如 Python。

安全地连接到 Snowflake 是避免安全漏洞和防止敏感数据意外暴露给未经授权用户的关键。数据工程师需要详细了解各种连接 Snowflake 的方法,以确保连接的安全性。

如图 1.2 所示,Snowflake 数据云平台中的数据工程管道由以下主要组件构成:

  1. 从源系统提取数据并将其摄取到 Snowflake 中
  2. 执行与解决方案相关的数据转换
  3. 将数据呈现给下游用户,用于分析、报告、数据科学或其他场景

除了主要组件外,数据工程师在构建数据管道时,还需结合以下基础组件:

  • 安全性(Security)
  • 数据建模(Data Modeling)
  • 数据治理(Data Governance)
  • 软件工程(Software Engineering)
  • 流程编排(Orchestration)
  • 数据运营(DataOps)

这些基础组件将为数据工程管道提供强有力的支持。在接下来的章节中,将对每个组件进行更详细的说明(详见图 1.2)。

image.png

1.2.1 从源系统提取数据

数据工程管道的第一步是从源系统提取数据。数据工程师需要对数据的业务含义以及它在下游解决方案中的使用方式有基本了解。通常情况下,解决方案需要从多个源系统获取数据,数据工程师负责构建能够无缝将这些数据摄取到一个统一模型的平台的管道,供消费者使用。

数据工程师需要熟悉源系统中使用的技术。例如,数据可能以数据库表的形式存在,也可能以云存储文件、API 调用的输出、来自物联网(IoT)设备的流式数据等形式存在。他们需要识别最佳的数据访问方式,并准备好将数据摄取到 Snowflake 中。除了外部数据源外,数据还可能以 Snowflake 安全数据共享或 Snowflake Marketplace 的形式提供。

增量数据摄取

数据管道通常以增量方式从源系统提取数据,仅摄取新增和更改的数据。数据工程师需要与源系统的所有者合作,确定检测数据更改的最佳方法。他们可以基于时间戳进行筛选,或者使用数据库变更跟踪机制或其他方法。

在需要从无法轻松识别数据更改的旧有源系统中提取数据且系统所有者无法提供帮助时,数据工程师可能需要根据自己的判断和专业知识确定最佳的更改检测方法。

对于不支持数据更改轻松识别的系统,数据工程师可以使用 Snowflake 的流(Stream)功能。流可以跟踪在两个时间点之间对底层数据进行的插入、更新或删除等操作。

工具与自定义编码

在启动新的数据工程项目时,数据工程师会与解决方案架构师及其他相关方协作,选择用于从源系统提取数据到 Snowflake 的最佳工具和技术。这些工具可能是开源的、商业化的,或者使用开源或专有库与技术编写的自定义代码。

在进行自定义编码时,数据工程师需要理解源数据的格式,并掌握适合将数据摄取到 Snowflake 的命令和选项。同样,在使用第三方数据提取工具时,他们也需要了解底层的 Snowflake 命令和选项。所有工具都在底层使用这些命令,因此数据工程师需要具备解决问题的能力。

1.2.2 数据转换

从源系统摄取的数据通常以原始格式存在,需要根据用户需求转换为有用且可操作的信息。数据工程师通常从数据分析师、系统架构师或用户处获取数据转换规则。在较小的数据工程团队中,数据工程师可能会与业务用户合作,共同定义数据转换规则。

数据转换工具

数据工程师用于数据转换的工具各不相同。这些工具可以通过 SQL 查询、存储过程或函数进行数据转换。一些用于从源系统提取数据的工具也支持数据转换功能,可以用于此目的。

此外,数据工程师可以使用 Snowpark 编写代码,以支持的编程语言(如 Python、Java 或 Scala)实现数据转换。他们还可以利用流行的开源库来完成数据转换任务。

数据验证

除了数据转换,数据工程师还会在数据管道中添加数据验证步骤,以确保下游用户能够获得可靠且一致的数据。数据管道通常包含技术性数据验证规则,例如检查主键或外键违规,因为 Snowflake 的标准表中不强制执行主键或外键约束。下游用户可以定义额外的数据验证规则。

不符合这些规则的数据可能会被标记或排除在下游分析之外。这种数据验证过程有助于提高数据质量,为用户提供更高的信任度。

1.2.3 向下游用户呈现数据

当数据从源系统摄取并经过适当的转换后,数据会以适合下游工具和解决方案使用的形式呈现给用户。数据工程师通过按时、高效地交付数据,满足用户的业务需求。

提供适合的用户界面与数据模型

数据工程师根据需要构建合适的用户界面,例如 API(如果适用),或者以适合分析工具的数据模型形式呈现数据。他们还提供元数据,以便于用户更好地发现和理解数据。例如,可以通过数据库中的表和列注释公开元数据,同时包括其他相关指标,如数据上次刷新时间、摄取记录的数量、使用的数据质量指标等。

优化数据查询性能

与许多传统数据库不同,Snowflake 的 SQL 查询通常不需要进行复杂的调优。在传统数据库中,数据库管理员往往需要花费大量时间优化查询性能,而在 Snowflake 中,大多数查询无需额外调优即可高效执行。

然而,在某些情况下,尤其是当查询复杂性较高、处理的数据量较大或资源消耗过多时,Snowflake 管理员和数据工程师可以通过应用以下功能进一步提升查询性能:

  • 分区优化(Clustering)
  • 搜索优化(Search Optimization)
  • 物化视图(Materialized Views)
  • 动态表(Dynamic Tables)

这些功能能够有效减少资源消耗并加快查询速度,为下游用户提供更佳的数据体验。

1.2.4 应用基础组件

在高层次上,数据工程包括从源系统提取数据、将其摄取到 Snowflake 中并进行转换以供下游使用。然而,数据工程师在必要时还需应用一些额外的基础组件。

安全性

无论 IT 解决方案是托管在云中还是本地,都可能受到网络安全威胁和漏洞的影响。由于 Snowflake 托管在云中,因此需要额外的安全措施以防止未经授权的访问。Snowflake 管理员通常通过多种方式保护访问安全,例如限制用户访问 Snowflake 的 IP 地址或要求使用强身份验证方法(如多因素身份验证)。

在构建数据管道时,数据工程师需要连接到 Snowflake。用于连接的凭据应安全存储在云提供商的密钥管理服务中,或本地的安全位置,绝不能暴露给其他用户或提交到可能被其他人访问的代码仓库中。数据工程师必须负责地行动,确保这些凭据不会有意或无意间泄露给他人。

用户应仅获得完成任务所需的最低权限。即使数据工程师被授予强大的 Snowflake 管理角色以完成特定任务,他们也不应默认使用这些角色,而应使用指定的开发角色,仅在需要执行特定管理任务时才切换到更强大的管理角色。

数据工程师需了解 Snowflake 基于角色的访问控制(RBAC)的原则,并在创建对象时使用正确的角色。尽管他们不一定负责设置角色访问控制,但他们需要知道其设计方式,以便正确使用。

数据治理

大多数组织都有数据治理规则,限制未经授权的用户访问机密或敏感数据。在高度安全和受监管的环境中,数据工程师有时无法访问实际的生产数据,而是使用样本数据、敏感信息已被屏蔽的数据,或已移除敏感信息的数据子集。

数据工程师需与数据架构师和领域负责人合作,了解数据治理要求,并在构建数据管道时遵循这些要求。例如,他们可能将敏感属性存储在具有更严格访问策略的单独表中。

数据建模

根据数据工程师工作的组织规模,他们可能会或可能不会从事数据建模工作。大型组织通常有专门的数据建模专家或团队负责创建数据模型,而在较小的组织中,数据工程师可能需要将数据建模作为其工作的一部分。

无论数据模型由谁创建,数据工程师需要理解数据建模概念,以正确地将数据加载到目标数据模型中。例如,数据模型可能要求在数据摄取过程中生成代理键。

一些常见的数据模型示例包括:

  • 企业数据仓库的关系数据模型
  • 数据库仓库中常用的集合数据模型(如 Data Vault 或锚点建模),特别适用于从多个源摄取数据
  • 数据集市和报告工具的维度数据模型

某些数据模型支持通用且可重复的数据加载模式,可实现数据摄取的自动化。数据工程师实现这些加载模式有助于构建更标准化、高效的数据管道。

编排

大多数数据管道按照与源系统所有者和下游用户协商的计划运行。根据用户需求,管道可以以批处理或微批处理的方式运行,例如每日、每小时或每隔几分钟。

当系统中包含多个管道时,数据工程师需要设计管道及其组件之间的依赖关系。他们可以使用第三方数据编排工具、操作系统命令或 Snowflake 任务来有序调度管道。

Snowflake 任务支持创建有向无环图(DAG),其中包含一系列具有依赖关系的任务。每个 DAG 从一个根任务开始,其依赖任务按相同方向执行,不会形成循环。图 1.3 展示了 Snowflake 任务的 DAG 示例。

image.png

数据工程师需要监控计划调度的管道,以确保它们能够无误地执行并按照预期加载数据。在设计数据管道时,数据工程师会集成日志记录机制,以便在发生错误时高效排查问题。他们还设计了支持从起点重新启动或从失败点继续执行的管道,以应对执行失败的情况。


软件工程

软件工程是数据工程师工作的重要组成部分。他们负责构建、测试和维护数据工程管道,这些管道通常由编程代码构成。尽管大部分代码可能是 SQL 查询而不是传统编程语言的构造,软件工程的原则仍然适用,包括:

  • 命名约定
  • 代码模块化
  • 代码可读性
  • 版本控制
  • 系统可维护性

数据工程师需要确保管道系统性能良好、健壮且可靠。例如,如果一个数据管道被意外触发了两次,系统应避免产生重复数据,或者当同一个管道的上一次实例仍在执行时,后续的执行请求不应被触发。

数据工程师还需理解并使用软件工程生命周期中的不同环境。例如:

  • 开发环境:所有开发人员在此环境中工作并编写代码。
  • 测试环境:代码被部署到测试环境以确保管道按预期工作。
  • 用户验收测试环境(UAT) :在某些大型组织中会存在此环境,用于用户验证。
  • 生产环境:代码完成测试和批准后最终部署到生产环境中。

数据运营(DataOps)

DataOps 是从敏捷软件工程衍生出的一个广义术语,适用于数据生命周期的各个阶段,包括数据提取、摄取、转换和呈现。DataOps 结合了改进数据质量的流程和技术,并支持数据工程管道的持续开发和集成。

类似于软件工程中的 DevOps,DataOps 通过使用工具或技术促进团队协作,确保工作系统的持续交付。例如:

  • 数据工程团队使用代码仓库(如 Git)并集成 CI/CD 流程。
  • 自动化测试数据管道代码和数据验证。

即使在只有一名数据工程师的小型组织中,DataOps 实践也有助于更好地组织和结构化工作,确保生产环境中的持续和一致部署。

1.3 构建数据管道

数据管道是一组用于数据处理的组件,它将数据从源头移动到目标位置。根据需求,管道可能还会执行数据转换。每个数据管道的设计和功能各不相同。例如,数据工程师可能会将云对象存储中的文件摄取到 Snowflake 中,并将文件中的数据呈现给下游用户以用于报告。

图 1.4 说明了这一管道的示例:

  1. 从云对象存储中获取的文件通过 外部阶段(external stage) 提供给 Snowflake,并被摄取到临时表(staging table)中。
  2. 管道将数据加载到目标表中,执行必要的转换,并将结果数据加载到转换后的表中(transformed table)。
  3. 最后,数据被呈现给下游消费者,用于进一步的报告、查询或分析。

这种数据管道设计有效地组织了数据摄取、转换和使用流程,为下游用户提供了可靠的数据服务。

image.png

图 1.4 所示的示例是 Snowflake 中最常见的数据工程管道之一。它通过指向云对象存储位置的 外部阶段(external stage) 来获取数据,然后使用 COPY 命令将数据从云存储摄取到 Snowflake 的临时表中。随后,数据通过 INSERT 命令追加到目标表,或者通过 MERGE 命令合并到目标表中。目标表通常在数据工程师构建数据管道之前设计好,作为转换层数据模型的一部分。

所需的数据转换操作通过 SQL 语句或存储过程完成,转换后的数据存储在转换表(transformed table)中。最后,数据以适合报告的格式呈现给下游用户。

数据工程师可以选择在数据管道中构建数据转换步骤,也可以通过创建 SQL 视图来实现数据转换。视图易于维护,且不需要重新加载数据,但视图的性能可能无法满足数据消费者的需求。在这种情况下,数据工程师需要根据实际情况选择最佳方法提升性能,通常的解决方案是将数据物化。

在实际场景中,会使用包含不同组件的多种类型的数据管道。它们的详细描述将在后续章节中介绍。

1.4 使用 Snowflake 应用进行数据工程

Snowflake 应用支持多种数据工程场景,常见的应用包括数据湖、数据仓库、数据集市、数据网格(Data Mesh)、商业智能(BI)、数据科学,以及利用大型语言模型(LLMs)进行数据增强。

数据湖(Data Lake)

数据湖是一个存储大量结构化、半结构化或非结构化数据的存储库。Snowflake 支持多种表类型,包括标准表、外部表、混合表等,能够支持多个并发工作负载访问数据而不会产生资源争用。用户可以使用 SQL 或 Snowpark 开发环境支持的其他语言查询数据湖中的关系数据或半结构化数据。


数据仓库(Data Warehouse)

数据仓库是一个企业级数据存储库,用于整合来自一个或多个源系统或外部来源(如 Snowflake Marketplace)的数据。数据仓库的主要目的是提供统一的历史数据,以便创建报告、仪表板和数据分析,支持业务用户从数据中获取洞察,为决策提供依据。


数据集市(Data Mart)

数据集市为单一业务部门(如市场或财务)存储数据,使这些部门可以快速、便捷地访问所需数据,而无需在数据仓库中搜索信息。由于构建数据仓库需要耗费大量资源和时间,某些组织可能选择仅构建数据集市而不建立完整的数据仓库。


数据网格(Data Mesh)

数据网格是一种新兴的数据分析方法,不再依赖于单一的整体数据仓库,而是由各业务领域团队构建自己的数据产品,这些产品通常类似于数据集市。借助更好的工具和更易用的平台,业务用户可以自行完成数据准备和探索工作,例如分析其业务部门的数据质量或执行简单的转换。

即使部分数据工程活动转移给了业务用户,数据工程师的需求依然存在。许多数据管道的技术组件需要深厚的软件工程知识,而这通常超出了业务用户的技能范围。在数据网格方法中,数据工程师仍然扮演重要角色,但角色可能从 IT 职能部门转移到相关业务部门。

Snowflake 可以托管数据产品,并通过其数据共享功能在整个组织内暴露这些产品。


商业智能(Business Intelligence)

商业智能通过分析数据得出可操作的信息以支持决策。商业智能解决方案通常从企业数据仓库、数据集市或数据产品中获取数据,或结合多种来源。


数据科学(Data Science)

数据科学是一个广泛的领域,涵盖高级分析、人工智能(AI)和机器学习(ML)等应用。一般而言,数据科学旨在从数据源中发现可操作的洞察,支持组织的决策制定和战略规划。

借助 Snowpark,数据科学家可以使用他们选择的编程语言(尤其是拥有丰富机器学习库的 Python)构建模型。例如,数据科学家可以利用流行的库(如 scikit-learn、TensorFlow 或 PyTorch)在 Snowpark 环境中构建、训练和部署机器学习模型。此外,Snowflake Cortex 引入了一些机器学习功能,例如时间序列预测、异常检测或分类,这些功能可以通过 Snowflake SQL 命令访问。


使用大型语言模型(LLMs)进行数据增强

生成式人工智能(GenAI)能够生成文本、图像、编程代码或其他输出格式。大型语言模型(LLMs)是 GenAI 的一个子集,主要用于生成文本内容。许多业务应用(如文本分类、文档分析、情感分类和语言翻译)都依赖于 LLMs。LLMs 的输出可以增强 Snowflake 中的各种解决方案。

开发人员可以通过 Snowpark 调用相关 API 访问第三方 LLM 功能,并将结果存储在 Snowflake 表中进行进一步分析。随着 Snowflake Cortex 的引入,选定的 LLM 功能(如情感评分、提示完成、文本摘要和翻译、从非结构化文本中提取答案或向量嵌入)可以通过 Snowflake SQL 命令直接访问。

总结

Snowflake 是一个现代化的云数据平台,非常适合用于处理数据密集型解决方案,例如数据湖、数据仓库、数据集市、数据网格、商业智能、数据科学以及通过大型语言模型(LLMs)进行数据增强。

  • 数据工程师的职责
    Snowflake 数据工程师负责设计、构建、编排、优化、监控和维护数据管道,将原始数据从源系统提取并转换为下游可用的信息。
  • 数据管道的第一步
    数据工程管道的第一步是从源系统提取数据。数据工程师通过自定义编写 Snowflake 命令或使用工具,访问源系统并将数据摄取到 Snowflake 中。
  • 数据转换
    从源系统摄取到 Snowflake 的数据会从原始状态转换为适合下游用户的形态和格式。
  • 执行数据转换的方法
    数据转换可以通过工具、SQL 语句或存储过程来完成,也可以使用支持的编程语言在 Snowpark 中编写代码实现。
  • 向下游用户呈现数据
    转换后的数据以便于访问和高效使用的形式呈现,支持第三方报告工具或其他解决方案(例如在 Snowpark 中的机器学习模型)。
  • 数据管道的定义
    数据管道是一组数据处理步骤,用于将数据从源头移动到目标位置,并根据需要进行转换。
  • 数据管道中的基础组件
    在为 Snowflake 构建数据管道时,数据工程师会应用一些基础组件,例如安全性、数据治理、数据建模、流程编排、软件工程和 DataOps。
  • 常见应用场景
    Snowflake 数据工程的常见应用包括数据湖、数据仓库、数据集市、数据网格、商业智能、数据科学以及利用 LLMs 进行数据增强。