Snowflake 中的未来功能

30 Jul 2025 | 13 分钟阅读

NVIDIA 合作及 AI 的最新动态

峰会前夕,NVIDIA 和 Snowflake 宣布了旨在开发定制化 AI 应用的新合作。Snowflake 计划将 Snowflake Cortex AI 与 NVIDIA 的 AI Enterprise 平台相结合。

这种结合包括 Triton 推理服务器,它可以大规模部署和执行 AI 推理,以及 NVIDIA 的 NeMo Retriever,它将提供高性能的信息检索,用于构建 RAG(检索增强生成)应用。

NVIDIA NIM 推理微服务的预构建 AI 容器也将作为原生应用程序部署在 Snowflake 内的 Snowpark Container Services 中。此外,由于 Snowflake Arctic LLM 可作为 NVIDIA NIM 使用,Snowflake 的合作伙伴和客户将能够快速开始 AI 实验。

Future Features in Snowflake

Snowflake Cortex AI 的更新

生成式 AI 正在以极快的速度改变各行各业的组织。同样,在 Snowflake Summit 2024 上,Snowflake Cortex AI 也不乏引人注目的新功能。如果您还不熟悉 Snowflake Cortex AI,请参阅这篇博客了解其入门介绍。

以下是峰会上公布的一些即将推出的功能:

Cortex Analyst:Cortex Analyst 是一款未来的产品,它允许业务用户在 Snowflake 上与他们的数据进行交互。它使用了 Meta 的 Llama 3 和 Mistral Large 模型进行开发。即将发布的 Snowflake Copilot(正式可用)允许技术用户将查询转化为 SQL。Cortex Analysts 将能够同时回答业务查询。

Cortex Search:Snowflake 负责此功能的所有搜索方面,包括数据摄取、嵌入、检索、重排序和生成。此功能的应用场景包括多文档综合和推理,以及“大海捞针”式的查找。

Cortex Fine-tuning:另一个重要功能是 Cortex Fine-Tuning,它提供了一个低代码或无代码的交互式界面,供用户针对特定用例进行模型微调。此功能将使组织和行业能够更好地定制模型以满足其独特的需求。

Future Features in Snowflake

Snowflake AI & ML Studio:即将推出的新功能将允许所有经验水平的用户在 Snowflake 中测试 LLM,并在类似沙盒的环境中比较多个模型的结果。这些特性与已有的用于在 UI 中快速简便地执行异常检测、分类和预测的工具相一致。

Snowflake Cortex Guard:生成式 AI 存在风险,特别是可能产生破坏性和不安全的回答。作为回应,Snowflake 打算提供这个新工具,它将允许企业识别和消除此类信息。

Future Features in Snowflake

开发工具和改进

并非所有令人兴奋的新功能和更改都仅限于 AI。Snowflake 推出了许多将增强协作和开发的新功能。

Snowflake Notebooks:Snowflake Notebooks 目前处于公开预览阶段,它提供了一个笔记本界面,使数据团队能够在一个地方使用 PythonSQL 进行协作。此外,Snowflake Notebooks 也可以以计划方式使用。

Snowflake 命令行界面 (CLI):备受期待的 Snowflake CLI 功能允许数据和基础设施团队直接从命令行创建、管理和部署 Snowflake 对象和基础设施。

Snowflake Python API:随着 Snowflake Python API 的普遍可用,除了改进的 CLI 之外,团队很快将有另一种选择,可以使用 Python 来管理 Snowflake 资源和数据管道。

Snowpark Pandas API:此功能已发布公开预览。它允许熟悉 Pandas 和 Python 的数据工程师以分布式和可扩展的方式执行他们的 Pandas 代码。为了让客户能够利用熟悉的 Pandas 功能处理大型数据集,Snowflake 利用了开源的 Modin API。

Snowflake Trail:数据和基础设施团队可以利用 Snowflake Trail(一套新的可观测性功能)来增强其应用程序和数据管道的洞察力和警报。这些功能包括 Snowpark 分析、自动 Python DataFrame 跟踪、Python 代码剖析器、日志功能和无服务器警报。其中一些功能已在公开预览和私有预览中提供。

Snowpark Python 更新

  • 现在,Python 版本 3.9 和 3.10 已在 Snowpark 中普遍可用,并支持 UDFs、UDTFs 和存储过程。要了解如何为 Snowpark Python 设置您的开发环境,请参阅 Snowflake 文档。
  • Snowpark:通过 AWS 区域的外部访问,外部访问目前处于公开预览状态。借助 Snowpark 代码,用户现在可以轻松连接到其他网络站点,包括外部 LLM,同时仍然维护严格的数据安全和控制。有关更多信息,请参阅 Snowflake 文档。立即使用快速入门指南开始。
Future Features in Snowflake
  • Python 存储过程表格式返回值的普遍可用性:通过支持 Python 处理程序的表格式存储过程的普遍可用性,数据可以以表格式返回。

创建 Python 存储过程

本文介绍如何创建 Python 存储过程。您可以在存储过程中使用 Snowpark 库来查询、更新和处理 Snowflake 表。

概述

使用 Snowflake 数据仓库作为计算框架,您可以创建和执行 Snowflake 内的数据管道,实现 Snowpark 存储过程。通过编写 Snowpark API for Python 的存储过程来创建数据管道。任务用于计划这些存储过程的执行。

Future Features in Snowflake

本地编写存储过程的要求

  • 要在本地开发环境中编写 Python 存储过程,您必须满足以下要求:
  • 必须使用 Snowpark 库 0.4.0 或更高版本。
  • 启用 Anaconda Packages 以便 Snowpark Python 加载必要的第三方依赖项。请参阅使用 Anaconda 的第三方包。
  • 支持的 Python 版本包括 3.10、3.11、3.8 和 3.9。
  • 确保您已在开发环境中配置了 Snowpark 库。有关更多信息,请参阅配置 Snowpark 的开发环境。

编写存储过程的 Python 代码

您编写的 handler 代码将在调用存储过程时运行,并包含存储过程的逻辑。本节将介绍 handler 的设计。

您可以通过多种方式使用 handler 代码来构建存储过程:

  • 代码应直接包含在创建过程的 SQL 语句之后。请参阅在 stage 或队列中维护 handler 代码。
  • 创建过程时,请将代码复制到 stage 并从中引用。请参阅在 stage 或队列中维护 handler 代码。
  • 创建包含代码的 Python 工作表,然后将工作表的内容分配给存储过程。要自动化您的 Python 工作表代码,请参阅创建 Python 存储过程。

局限性

以下是 Snowpark 存储过程的限制:

  • 存储过程不支持创建进程。
  • 存储过程不支持运行并行查询。
  • 如果您打算从任务运行存储过程,则在创建任务时必须指定一个数据仓库。任务不能使用无服务器计算资源完成。
  • 所有者权限的存储过程不支持创建命名临时对象。以所有者权限运行的存储过程称为所有者权限存储过程。有关更多详细信息,请参阅调用者权限或所有者权限。

准备编写您的已保存过程

  • 由于存储过程在 Snowflake 中执行,因此在编写代码时需要考虑这一点。
  • 尽量减少 RAM 使用量。Snowflake 对方法的内存需求有限制。有关建议,请参阅设计符合 Snowflake 内存限制的处理程序。
  • 确保 handler 函数或方法是线程安全的。

编写过程或函数

编写存储过程的方法或函数时,请记住以下几点:

  • 为 Snowpark Session 对象提供方法或函数的第一个参数。当您调用存储过程时,Snowflake 会自动创建一个 Session 对象并将其传递给您的存储过程。(您无法创建 Session 对象)。
  • 对于其余参数和返回值,请使用与 Snowflake 数据类型匹配的 Python 类型。Snowflake 支持 SQL-Python 数据类型映射中列出的 Python 数据类型(用于参数和返回值)。
Future Features in Snowflake

管理错误

您可以使用标准的 Python 异常处理方法来识别过程中发生的错误。

Snowflake 会引发一个错误,其中包含方法内发生的任何未捕获异常的堆栈跟踪。当启用了未捕获异常的日志记录时,Snowflake 会在事件表中记录有关未捕获异常的信息。

为您的代码提供依赖项

如果您的 handler 代码需要访问 handler 外部的代码(例如模块中的代码)或资源文件,您可以将这些依赖项上传到 stage,以便您的 handler 代码可以访问它们。有关使依赖项可用于您的代码的说明,请参阅为 Python 工作簿添加来自 Stage 的 Python 文件。

  • 如果您使用 SQL 创建存储过程,请使用 CREATE PROCEDURE 语句中的 IMPORTS 子句指向依赖项文件。
  • 使用已保存的过程访问 Snowflake 数据
  • 使用 Snowpark 库 API 从 Snowflake 检索数据。
  • 当处理对 Python 存储过程的调用时,Snowflake 会创建一个 Snowpark Session 对象并将其传递给存储过程的方法或函数。
  • 与其他语言中的存储过程类似,存储过程是使用调用者权限还是所有者权限执行,决定了会话上下文(特权、当前数据库和模式等)。有关更多信息,请参阅访问和设置会话状态。
Future Features in Snowflake

数据访问示例

以下示例展示了一个 Python 方法,该方法将给定数量的行从一个表复制到另一个表。该方法接受以下参数:

  • 一个 Snowpark 会话对象
  • 应从中复制行的表名
  • 应将行保存到的表名

矢量化 Python UDTF 概述

矢量化的 Python 用户定义表函数 (UDTF) 允许对行进行批量操作。

  • Snowflake 支持两种类型的矢量化 UDTF:
  • 利用矢量化 end_partition 方法。
  • 使用矢量化 process 方法的 UDTF
  • 一个 UDTF 只能有一种矢量化 process 方法和一种矢量化 end_partition 方法。
Future Features in Snowflake

使用矢量化 end_partition 方法的 UDTF

UDTF 具有矢量化 end_partition 函数,可轻松实现按分区处理。这些方法将分区作为 pandas DataFrame 进行操作,并返回 pandas DataFrame、pandas Series 列表或 pandas Series 作为输出。这使得与使用 pandas 数组或 DataFrames 的库集成更加容易。

对以下任务应用矢量化 end_partition 方法:

  • 考虑按分区处理数据,而不是逐行处理。
  • 为每个分区提供多行或多列。
  • 使用与 pandas DataFrame 配合使用的包进行数据分析。
  • 使用矢量化 process 方法的 UDTF
  • 当操作执行 1 对 1 映射时,具有矢量化 process 方法的 UDTF 提供了一种批量处理行的方法。换句话说,该方法为每输入一行产生一个输出行。列的数量没有限制。
Future Features in Snowflake

对以下任务应用矢量化 process 方法:

  • 使用多列结果批量执行 1 对 1 转换。
  • 选择一个需要 pandas.DataFrame 的库。
  • 批量处理行,而无需进行任何显式分区。
  • 批量处理行,而无需进行任何显式分区。
  • 使用 to_pandas() API 将查询结果直接转换为 pandas DataFrame。

必需条件

  • 请勿定义 process 方法。
  • 创建一个名为 end_partition 的函数,它接受一个 DataFrame 作为输入,并返回或生成一个 pandas.DataFrame、pandas Series 列表或 pandas Series,其中每个数组是一列。
  • 结果的列类型和 UDTF 定义的列类型必须匹配。

使用矢量化 process 方法创建 UDTF。

  • 像标准的 UDTF 一样,创建一个带有可选 __init__ 和 end_partition 方法的处理程序类。
  • 定义一个 process 方法,该方法接受一个 DataFrame 参数,并返回一个 pandas.DataFrame、pandas Series 列表或 pandas Series,其中每个数组是一列。
Future Features in Snowflake
  • 结果的列类型和 UDTF 定义的列类型必须匹配。提供的结果中必须正好有一个 DataFrame 或元组。与此不同,矢量化 end_partition 方法不需要您生成或返回列表。

DevOps

DevOps:轻松部署和管理 Snowflake 对象和代码。

现在,EXECUTE IMMEDIATE FROM 命令已处于公开预览阶段,您可以直接从 Stage 上的文件(例如从 VS Code)运行 Snowflake Native App 或 SQL 脚本。

此功能使您能够有控制地管理和部署 Snowflake 对象和代码。例如,您可以运行一个已保存的脚本来设置所有帐户的默认 Snowflake 环境。

EXECUTE IMMEDIATE FROM

EXECUTE IMMEDIATE FROM 在 Stage 中运行文件中的 SQL 语句。文件可能包含 Snowflake Scripting 块或 SQL 语句。SQL 语句必须在语法上有效。使用 EXECUTE IMMEDIATE FROM 命令从任何 Snowflake 会话运行文件中的语句。

此功能使您能够有控制地管理和部署 Snowflake 对象和代码。例如,您可以运行一个已保存的脚本来设置所有帐户的默认 Snowflake 环境。对于每个新帐户,配置脚本可能包含创建数据库、模式、角色和用户的语句。

Future Features in Snowflake

Snowflake 的主要特点是:

1. 灵活性

  • Snowflake 的弹性是其主要特点之一。这意味着 Snowflake 不需要任何人工干预,并且可以根据用户的需求进行扩展或缩减。
  • 用户可以在工作负载下降时自动缩减,并在工作负载增加时分配更多资源。Snowflake 的这项功能使组织能够通过仅为所需资源付费来节省成本。
  • 让我们以零售公司在圣诞节期间销售额激增为例。由于 Snowflake 的弹性,该公司可以轻松地扩大其资源以应对不断增长的数据量,而无需担心硬件限制。节假日过后,公司可以缩减运营以节省成本。

2. 计算和存储分离

  • 由于 Snowflake 分离了计算和存储这两项功能,用户可以独立扩展计算和存储。此功能有多种优势,包括:
  • 成本更低:用户无需为存储大量数据而支付额外的计算资源。
  • 灵活性更高:用户无需担心存储容量,可以根据需要分配计算资源。
  • 性能更好:当计算和存储分开时,用户可以单独优化每个组件,从而提高查询性能。
Future Features in Snowflake

作为云数据仓库平台,Snowflake 正在不断发展以适应现代数据环境的需求。基于云数据行业的趋势和最新进展,即使未来功能通常在 Snowflake Summit 或通过产品更新发布,以下是 Snowflake 可能关注的一些领域:

1. 增强的数据治理和安全功能

  • 更精细的访问控制:在现有安全框架中增加更多数据掩码和改进的访问控制,以遵守不断变化的合规性法规(GDPR、CCPA)。
  • 统一治理工具:一个用于治理的标准仪表板,用于监督跨不同工作负载和地理区域的策略、数据沿袭和访问。

2. 增强的 AI/ML 能力

  • 原生机器学习模型:通过提供与 AutoML 框架更深入的集成,Snowflake 将使用户能够在 Snowflake 平台内开发、训练和部署 ML 模型。

3. 对非结构化数据和复杂工作流的支持

  • 原生非结构化数据处理:为了方便企业存档和分析多媒体内容,Snowflake 正在扩展对非结构化数据(包括音频、视频和图像处理)的支持。
  • 数据丰富功能:平台可能具有集成的数据丰富管道,使用外部数据集或 AI 模型进行批量或实时处理。

4. 与数据湖和开源的增强集成

  • 改进的数据湖集成:在支持混合设置(例如,与 Delta Lake 和 Apache Iceberg 更好地集成)方面的持续改进,从而在 Snowflake 和数据湖之间实现无缝查询和管理。
  • 支持开源查询引擎:支持诸如 Presto 或 Apache Flink 等开源查询引擎,从而实现更高性能的实时分析。

5. 边缘和物联网分析

  • 实时处理物联网数据:提供允许 Snowflake 在靠近边缘进行处理和分析物联网数据的功能,并扩展对流数据、传感器和时间序列数据的支持。

6. 数据应用程序市场的扩展

  • 数据应用生态系统:Snowflake 的数据应用市场就像一个数据驱动应用程序的应用商店,使用户能够创建、部署和货币化整个数据应用程序,以及共享数据。
  • 跨云应用部署:一个允许数据应用程序在多云环境中平稳部署的生态系统,只需很少或无需修改设置。
Future Features in Snowflake

7. 对混合云和多云系统的改进支持

  • 跨云和跨区域复制:为了灾难恢复和实时洞察,需要跨多个云提供商或区域进行更智能、更自动化的复制。
  • 混合云优化:在使用 Snowflake 和本地数据系统时实现更好的性能,使企业能够在混合云配置中顺畅运行。

8. 加强对实时数据分析的关注

  • 实时数据流改进:鉴于实时分析日益增长的重要性,Snowflake 可能会扩展其原生流处理功能,以适应连续数据输入和分析。
  • 流集成:将 Snowflake 连接到更多实时数据源和系统,使其能够作为实时分析和决策的中心枢纽。

9. 自动化和 DataOps 功能

  • DataOps 自动化工具:通过提供允许组织自动化数据管道管理、性能优化和监控而无需大量手动工作的解决方案,Snowflake 增强了 DataOps 自动化功能。
  • 集成工作流自动化:实现在单一平台上进行端到端工作流自动化,从数据摄取到报告。

10. 高级协作工具

  • 改进的版本控制、共享工作区和跨组织协作工具,这些都是用于更好数据协作的新功能。
  • 多方计算:扩展协作能力,实现多方之间安全的数据共享,在允许联合数据分析的同时保护隐私和合规性。

结论

总而言之,我们可以得出结论,Snowflake 定位为能够满足数据驱动型企业不断增长的需求。即将推出的改进很可能会侧重于增强的 AI/ML 功能、与开源工具和数据湖的更深入集成、更强大的数据治理以及对非结构化数据的更多支持。此外,实时分析、边缘计算、自动化和多云兼容性预计将在很大程度上影响平台的发展轨迹。只要 Snowflake 不断创新,它就有望在云数据生态系统中占据主导地位,并使企业能够从其数据中提取更多价值。


下一主题