Cortex Analyst 验证查询存储库

Cortex Analyst Verified Query Repository (VQR) 可通过提供一系列问题和相应的 SQL 查询来回答这些问题,从而帮助提高结果的准确性和可信度。之后在回答类似问题时,Cortex Analyst 可利用存储库中的相关 SQL。您可以在语义模型 YAML 文件中指定已验证的查询。

重要

已验证的 SQL 查询必须使用语义模型中定义的逻辑表和列的名称,而不是底层数据集中定义的名称。请参阅 示例查询及其讨论 以了解更多信息。

已验证的查询在语义模型的 verified_queries 部分中指定,如下所示。

verified_queries:

# Verified Query 1
- name:                         # A descriptive name of the query.
  question:                     # The natural language question that this query answers.
  verified_at:                  # Optional: Time (in seconds since the UNIX epoch, January 1, 1970) when the query was verified.
  verified_by:                  # Optional: Name of the person who verified the query.
  use_as_onboarding_question:   # Optional: Marks this question as an onboarding question for the end user.
  sql:                          # The SQL query for answering the question.

# Verified Query 2
- name:
  question:
  verified_at:
  verified_by:
  use_as_onboarding_question:
  sql:
Copy

以下是一个包含已验证查询的示例语义模型。

name: Sales Data
tables:
- name: sales_data
  base_table:
    database: sales
    schema: public
    table: sd_data

  dimensions:
    - name: state
      description: The state where the sale took place.
      expr: d_state
      data_type: TEXT
        unique: false
        sample_values:
          - "CA"
          - "IL"

    # Time dimension columns in the logical table.
    time_dimensions:
      - name: sale_timestamp
        synonyms:
          - "time_of_sale"
          - "transaction_time"
        description: The time when the sale occurred. In UTC.
        expr: dt
        data_type: TIMESTAMP
        unique: false

    # Measure columns in the logical table.
    measures:
      - name: profit
        synonyms:
          - "earnings"
          - "net income"
        description: The profit generated from a sale.
        expr: amt - cst
        data_type: NUMBER
        default_aggregation: sum

verified_queries:
  - name: "California profit"
    question: "What was the profit from California last month?"
    verified_at: 1714497970
    verified_by: Jane Doe
    use_as_onboarding_question: true
    sql: "
SELECT sum(profit)
FROM __sales_data
WHERE state = 'CA'
    AND sale_timestamp >= DATE_TRUNC('month', DATEADD('month', -1, CURRENT_DATE))
    AND sale_timestamp < DATE_TRUNC('month', CURRENT_DATE)
"
Copy

在上面的例子中,__sales_data 对应模型中定义的 sales_data 表。为避免名称冲突,逻辑表的名称以两个下划线为前缀。查询中使用的列(statesale_timestampprofit)是在模型的 sale_data 表中定义的逻辑列。底层列(d_statedtamtcst)的名称不能直接用于查询。

如示例所示,问题不需要是一个完整的句子,也不需要以问题的形式出现,但它应该反映用户可能会问的问题。确保 SQL 查询在语法上是正确的,并且确实回答了提出的问题;这就是“已验证的查询”的本质。无效或不准确的查询会对 Cortex Analyst 的性能和准确性产生负面影响。

小技巧

使用下一节中将要介绍的开源语义模型生成器应用程序来帮助将已验证的查询添加到语义模型中,而无需担心 SQL 或 YAML 句法。

使用语义模型生成器添加已验证的查询

Snowflake 提供了一个开源的 Streamlit 应用程序,可帮助您将已验证的查询添加到模型中。要安装和使用此应用程序,请按照以下说明操作。

  1. 克隆存储库。 首先克隆 语义模型生成器 (https://github.com/Snowflake-Labs/semantic-model-generator) 存储库。按照存储库的 README (https://github.com/Snowflake-Labs/semantic-model-generator/blob/main/README.md) 中的设置说明,向应用程序提供 Snowflake 凭据。

  2. 安装应用程序。按照 admin_app README (https://github.com/Snowflake-Labs/semantic-model-generator/blob/main/admin_apps/README.md) 中的说明安装必要的依赖项并启动应用程序。

  3. 设置应用程序。 应用程序运行后,在提供的字段中输入语义模型 YAML 文件的数据库、架构和暂存区位置。YAML 文件将出现在窗口左侧的交互式编辑器中。

  4. 生成查询。 在窗口右侧,使用聊天界面提出问题,该问题将生成 SQL 询问。

  5. 验证并保存查询。

  • 检查生成的查询及其产生的结果。如按预期运行,选择助手答案下方的 Save as verified query 按钮,以将查询添加到语义模型中。

  • 如果生成的查询不正确,请选择 Edit 按钮修改查询。运行修改后的查询,检查它是否产生预期的结果。继续编辑和测试,直到查询按预期工作。然后选择 Save as verified query,以将其添加到语义模型中。

  1. 更新语义模型。 选择窗口左下方的 Save 按钮来更新语义模型。重复该过程以添加更多查询。

  2. 上传新的 YAML 文件。 对添加的查询感到满意后,选择 Upload 按钮,为新的 YAML 文件输入文件名,然后选择 Submit Upload

当返回 Snowsight 中的暂存区时,您会看到包含已验证的查询的新语义模型 YAML 文件。

查看 Cortex Analyst 响应中使用的验证查询

当用户的问题与验证查询存储库 (VQR) 中的查询类似时,Cortex Analyst 会使用该查询在其响应中生成 SQL 查询。要查看使用了哪个验证查询,请参阅 API 响应中的 置信度字段

语言: 中文