使用 Snowflake Copilot

本主题介绍什么是 Snowflake Copilot 以及如何在数据分析工作流中使用该功能。

简介

Snowflake Copilot 是一款由 LLM 提供支持的助手,可在简化数据分析的同时保持稳健的数据治理,并可无缝集成到现有的 Snowflake 工作流中。

Snowflake Copilot 由 Snowflake 微调的模型提供支持,该模型可在 Snowflake 的智能、完全托管 AI 服务 Snowflake Cortex 内安全运行。这种方法意味着企业数据和元数据始终安全地保存在 Snowflake 内部。Snowflake Copilot 还充分遵循 RBAC,仅根据可以访问的数据集提供建议。

Snowflake Copilot 使用自然语言请求实现从头到尾的数据分析。首先,Copilot 可以帮助回答有关数据结构的问题,并指导您探索新的数据集。然后,可以要求 Copilot 生成并细化 SQL 查询,从数据中提取有用信息。Snowflake Copilot 甚至可以通过为优化或修复可能的问题提供建议帮助改进 SQL 查询。

Snowflake Copilot 还有助于提高 SQL 流利度或对 Snowflake 功能的理解。询问有关如何在 Snowflake 中执行任务的问题,Copilot 将根据 Snowflake 文档返回答案。

您可以在 Snowsight 中的 SQL 工作表中与 Copilot 交互。使用 Copilot 面板,您可以输入问题,Snowflake Copilot 将给出答案。您可以在工作表中运行建议的 SQL 查询。

支持的用例

  • 通过提出开放式问题了解新数据集的结构和细微差别,探索数据

  • 用纯英语问题 生成 SQL 查询

  • 点击按钮即可 试用 |sf-copilot| 建议的 SQL 查询。也可以在运行查询之前对其进行编辑。

  • 通过与 Snowflake Copilot 的对话 构建复杂的查询,通过询问后续问题细化建议的 SQL 查询并深入挖掘分析。

  • 通过询问有关 Snowflake 概念、功能和特性的问题,了解 Snowflake

  • 通过要求 Snowflake Copilot 帮助评估查询效率、查找优化或解释查询的作用来 改进查询

  • 为 Snowflake Copilot 的每个响应 **提供反馈**(赞成或反对),这将用于改进产品。

  • 添加自定义说明,如一组首选项或特定业务知识,供 Snowflake Copilot 在生成响应时考虑。

限制

  • 语言支持有限: 目前仅支持英语和 SQL。

  • **无法访问数据:**Snowflake Copilot 无权访问表内的数据。如果要对列的特定值进行筛选,则应提供该值。例如,如果要求 Snowflake Copilot 返回 A 列值等于“X”的所有行,则应在请求中提供值“X”。请参阅 构造并运行 SQL 语句 示例。

  • 不支持跨数据库或架构查询: 您可以通过创建和使用将来自不同架构和数据库的数据连接起来的视图来解决此问题。

  • 延迟响应: Snowflake Copilot 可能需要几秒钟才能完成响应,具体取决于所提供响应的长度。

  • SQL 建议可能并不总是有效: Snowflake Copilot 有时会建议包含无效 SQL 语法或不存在表或列的查询。请使用赞成或反对按钮为特定响应提供反馈。这些反馈有助于我们改进此功能。

  • 检测新数据库、架构和表的延迟: Snowflake Copilot 可能需要 3-4 小时才能识别新创建的数据库、架构和表。

  • 考虑的表和列数量有限: 要生成响应,Snowflake Copilot 首先搜索与您的请求最相关的表和列。然后根据相关性对搜索结果进行排名,在生成响应时只考虑结果中每个表中的前 10 个表和前 10 列。

如何使用 Snowflake Copilot

Snowflake Copilot 无需额外设置即可使用。使用 Snowflake Copilot 时请记住以下几点:

  • 与 Snowflake Copilot 的每个聊天会话都与特定工作表相关联。打开新工作表将打开新的聊天会话。

  • 会话期间必须使用数据库和架构才能使用 Snowflake Copilot。Copilot 使用它们生成相关响应。

  • Snowflake Copilot 使用数据库、架构、表和列的名称以及列的数据类型来确定可供查询的数据。

  • 如果 Snowflake Copilot 无法根据所选的数据库和架构回答问题,可能会尝试使用其他方式回答,例如 Snowflake 文档或一般 SQL 知识。如果得到意外的响应,可以使用赞成和反对按钮留下反馈。

  • 如果需要在问题中引用表名或列名,请在名称前加上 @。参考特定的表和列可以帮助 Snowflake Copilot 提供更准确的响应。

  • 为了获得最佳性能,请为数据库、架构、表和列使用有意义的名称,并确保为列分配适当的数据类型。

按照以下步骤开始使用 Snowflake Copilot:

  1. 创建新工作表或打开现有工作表。

  2. 在工作表的右下角,选择 Ask Copilot。Snowflake Copilot 面板在工作表的右侧打开。

  3. 确保为当前工作表选择了数据库和架构。如果没有,可以使用工作表顶部的选择器或 Snowflake Copilot 消息框下方的选择器进行选择。

  4. 在消息框中,键入问题,然后选择发送图标或按 Enter 提交问题。Snowflake Copilot 在面板中提供响应。

  5. 如果 Snowflake Copilot 的响应包括 SQL 语句:

    • 选择 Run 运行查询。这会将查询添加到工作表中并运行。

    • 在运行查询之前选择 Add 编辑查询。这会将查询添加到工作表中。

添加自定义指令

Snowflake Copilot 接受自定义指令,可让您自定义响应方式。启用后,这些指令用于增强发送到 Snowflake Copilot 后面的模型的提示,在生成新响应时 Copilot 会考虑这些提示。自定义指令可以包括使用特定音调或以某种方式响应的指示、关于如何编写 SQL 的首选项,或有关要考虑的数据的其他信息。

添加自定义指令时,请记住以下几点:

  • 自定义指令有 2000 个字符的限制。

  • Snowflake 建议使用纯英语指定自定义指令。

  • 这些指令特定于输入这些指令并用于与 Snowflake Copilot 的所有对话的用户。

按照以下步骤为 Snowflake Copilot 添加自定义指令:

  1. 创建新工作表或打开现有工作表。

  2. 在工作表的右下角,选择 Ask Copilot。Snowflake Copilot 面板在工作表的右侧打开。

  3. 选择 Snowflake Copilot 面板顶部的 Copilot 菜单。

  4. 从下拉菜单中选择 Custom instructions

  5. 要启用自定义指令文本框,请选择自定义指令窗口左下方的 Enable for new chats 切换按钮。

  6. 用纯文本英语输入指令。

  7. 完成后选择 Save

  8. 在 Copilot 面板中继续与 Snowflake Copilot 对话。

示例

以下各节提供演示如何操作的示例:

这些示例使用 Snowflake Marketplace 中的示例数据集。

先决条件

本节中的示例使用 Snowflake Marketplace 中的 Cybersyn Github Archive 数据集

  1. 在账户中安装 Cybersyn Github Archive 数据集

  2. 创建新工作表或打开现有工作表。

  3. 在工作表的右下角,选择 Ask Copilot

  4. 选择 Cybersyn Github Archive 数据库和架构。

探索数据

下面的示例演示如何使用 Snowflake Copilot 探索数据集。

  1. 输入开放式问题,如“我可以就此数据集提出哪些类型的问题?”

  2. 按下 Enter,Snowflake Copilot 将根据您选择的数据库和架构生成响应。

  3. 询问进一步澄清有关数据的问题,如“我可以通过什么类型的事件进行筛选?”或“这些表中的任何一个是否都可以加入?”

  4. 如果来自 Snowflake Copilot 的响应包含 SQL 语句,则可以选择 Add 将查询添加到工作表末尾并在运行前对其进行编辑,也可以选择 Run 添加查询并自动运行。

构造并运行 SQL 语句

下面的示例演示如何使用 Snowflake Copilot 生成 SQL 查询。

  1. 在 Snowflake Copilot 消息框中输入问题“过去一年中给出多少颗星?”,然后按下 Enter。Snowflake Copilot 通过 SQL 查询响应,回答问题。

  2. 选择 Add 将查询添加到工作表末尾。

  3. 输入问题“每月向我展示此信息”,然后按下 Enter。Snowflake Copilot 通过 SQL 查询响应,回答问题。

  4. 选择 Run 将查询添加到工作表中并运行查询。

Snowflake Copilot 无权访问表内的数据。如果希望 Snowflake Copilot 构造基于列的特定值筛选的 SQL 语句,则必须提供要筛选的值。

  1. 输入问题“以 'snowflake' 开头的所有响应名称是什么?”,然后按下 Enter。Snowflake Copilot 通过 SQL 查询进行响应,该查询使用您提供的筛选器值。

  2. 选择 Add 在运行之前编辑查询,或者选择 Run 将查询添加到工作表中并运行。

解释 SQL 语句

下面的示例演示如何使用 Snowflake Copilot 解释您正在处理的 SQL 语句。

  • 在 Snowflake Copilot 消息框中,键入以下问题和 SQL 查询:

    Can you explain this query to me step-by-step?
    
    Copy
    SELECT
      github_repos.repo_name,
      COUNT(github_stars.repo_id) AS total_stars
    FROM
      github_repos
      JOIN github_stars ON github_repos.repo_id = github_stars.repo_id
    GROUP BY
      github_repos.repo_name
    ORDER BY
      total_stars DESC;
    
    Copy

Snowflake Copilot 通过所提供查询的分步解释进行响应。

询问有关 SQL 和 Snowflake 的问题

Snowflake Copilot 可以访问 Snowflake 文档,并且可以回答有关 Snowflake 或 SQL 的一般问题。以下是您可以尝试的一些示例问题:

  • 如何编写 SQL 加入?

  • 什么是 Snowpark Cortex?

  • 如何将数据引入 Snowflake?

使用 Snowflake Copilot 的技巧

  • 创建精选 视图 可以显著提高 Snowflake Copilot 的性能。

    创建视图时遵循以下指导原则:

    指导原则

    示例

    对视图及其列使用描述性和易于理解的名称。

    选择名称时,请使用在使用 Snowflake Copilot 时可能用到的业务和数据分类。

    如果列包含特定销售的日期,请将列命名为 sale_date

    确保所有列具有适当的数据类型。

    如果列包含特定销售的日期,请确保该列具有 DATE 类型。

    将常用的指标/表达式定义为新列。

    如果利润定义为 revenue - cost,请在视图中创建列 (revenue - cost) AS profit

    如果可能,捕获常见和复杂的联接。

    如果两个表 productssales 经常联接,请确保视图连接这些表。

    如果常用联接表之间有多个联接路径,请使用视图中的首选联接路径。

  • 提问时尽量具体。想象一下,您正在向可能不太了解数据的人提问。

  • 如果要筛选列内的特定值,可能需要主动引导 Snowflake Copilot。您可以要求 Snowflake Copilot 查询返回列中的所有不同值。

成本

Snowflake Copilot 在 2024 年 5 月 31 日之前免费。有关定价和计费的详细信息即将发布。

语言: 中文