通过


Mustache 参数语法

重要

仅旧版 SQL 编辑器支持 Mustache 参数语法。 Databricks 建议对新查询使用 命名参数标记 。 如果将使用胡须语法的查询复制到笔记本、AI/BI 仪表板数据集编辑器或 Genie 空间中,则必须在运行查询之前将其转换为命名参数标记。

在旧版 SQL 编辑器中,用双大括号({{ }})包装的任何字符串都被视为查询参数。 结果窗格上方会出现一个控件,您可以在其中设置参数值。

添加 mustache 参数

  1. 按“”Cmd + I。 参数插入游标位置,并显示 “添加参数 ”对话框。
  2. 输入 关键字,根据需要更改 标题,然后选择 类型
  3. 单击“添加参数”。
  4. 在小组件中设置参数值。
  5. 单击“应用更改”
  6. 单击“ 保存”。

或者,直接在查询中键入 {{ }} ,然后单击参数小组件中的齿轮图标进行配置。

若要使用不同的值重新运行查询,请更新小组件,然后单击“ 应用更改”。

编辑、删除和重新排序参数

编辑:单击参数小组件旁边的齿轮图标。 若要防止不拥有查询的用户更改参数值,请单击“ 仅显示结果”。

删除:从查询中删除参数标记。 将自动删除小组件。

重新排序:单击参数小组件并将其拖动到所需顺序。

小组件类型

以下小组件类型可用:

文本

采用字符串作为输入。 反斜杠、单引号和双引号会被自动转义。 Azure Databricks在值周围添加引号。

SELECT * FROM samples.tpch.customer WHERE c_name = {{ name_param }}

编号

采用数字作为输入。

SELECT * FROM users WHERE age = {{ number_param }}

日期和时间

参数化日期和时间戳值。 有三个选项可用:

类型 精准率
日期
日期和时间 分钟
日期和时间(以秒为单位) 第二个

所有日期和时间值都作为字符串文本传递,必须在查询中用单引号包装:

SELECT * FROM usage_logs WHERE date = '{{ date_param }}'

选择 Range 选项时,Azure Databricks使用 .start.end 后缀创建两个参数:

SELECT * FROM usage_logs
WHERE modified_time > '{{ date_range.start }}'
AND modified_time < '{{ date_range.end }}'

注释

日期范围小组件仅返回 DATE 类型列的正确结果。 对于时间戳列,请使用“日期和时间范围”控件。

动态日期值:日期小组件包括蓝色闪电图标。 单击它可选择动态值,例如todayyesterdaythis weeklast weeklast monthlast year。 这些值会自动更新。

重要

动态日期值与计划查询不兼容。

将输入限制为预定义的静态列表。 支持单值和多值选择。

  • 单个值:在查询中用单引号包装参数。

  • 多值:在组件设置中启用“允许多个值”。 使用 Quote 选项控制值是用单引号、双引号还是无。 将你的 WHERE 子句更新为使用 IN

    SELECT * FROM orders WHERE status IN ( {{ status_param }} )
    

    选中双引号后,查询解析为: WHERE status IN ("value1", "value2", "value3")

下拉列表值是字符串。 若要使用日期或时间戳,请以数据源所需的格式输入它们。

基于查询的下拉列表

从保存的查询填充下拉列表选项。 行为类似于下拉列表,但选项是动态的。

  1. 在“设置”面板中的 类型 下,选择 基于查询的下拉列表
  2. 单击 “查询 ”字段并选择保存的查询。

如果查询返回多个列,Azure Databricks使用第一列。 如果查询返回名为 namevalue 的列,小组件显示 name 列,但在运行时将关联的 value 传递给查询。

例:

SELECT user_uuid AS 'value', username AS 'name' FROM users
value 名字
1001 约翰·史密斯
1002 简·多
1003 Bobby 表

在运行时传递给数据库的值是 100110021003,而不是显示名称。

注释

如果源查询返回大量记录,则性能会下降。