다음을 통해 공유

旧版笔记本小组件: ${param}

警告

${param} Databricks Runtime 15.2 及更高版本中已弃用访问小组件值的语法。 请改用当前的 Databricks 小组件语法:param)。

本页介绍如何对 Databricks Runtime 15.1 及更低版本上运行的笔记本小组件使用旧 ${param} 语法。 Databricks 建议 迁移到当前语法

在 Databricks Runtime 15.1 及更低版本中使用小组件值

本部分介绍如何将 Databricks 小组件值传递到 Databricks Runtime 15.1 及更低版本中的 %sql 笔记本单元格。

  1. 创建小组件以指定文本值。

    Python

    dbutils.widgets.text("database", "")
    dbutils.widgets.text("table", "")
    dbutils.widgets.text("filter_value", "100")
    

    Scala(编程语言)

     dbutils.widgets.text("database", "")
     dbutils.widgets.text("table", "")
     dbutils.widgets.text("filter_value", "100")
    

    R

    dbutils.widgets.text("database", "")
    dbutils.widgets.text("table", "")
    dbutils.widgets.text("filter_value", "100")
    

    SQL

    CREATE WIDGET TEXT database DEFAULT ""
    CREATE WIDGET TEXT table DEFAULT ""
    CREATE WIDGET TEXT filter_value DEFAULT "100"
    
  2. 使用 ${param} 语法传入小组件值。

    SELECT *
    FROM ${database}.${table}
    WHERE col == ${filter_value}
    LIMIT 100
    

    注释

    若要对 $中的 字符进行转义,请使用 \$。 例如,若要表示字符串 $1,000,请使用 "\$1,000"。 在 $中, 字符无法被转义。

迁移到参数标记

下表显示了参数的常见用例、原始 Azure Databricks 小组件语法(在 Databricks Runtime 15.2 及更高版本中弃用),以及使用命名参数标记语法的等效语法(Databricks Runtime 15.2 及更高版本中受支持)。

参数用例 ${param} 原始小组件语法(从 Databricks Runtime 15.2 及更高版本开始弃用) :param 参数标记语法(从 Databricks Runtime 15.2 及更高版本开始支持)
仅加载指定日期之前的数据 WHERE date_field < '${date_param}'
必须在日期参数和大括号周围加上引号。
WHERE date_field < :date_param
仅加载小于指定数值的数据 WHERE price < ${max_price} WHERE price < :max_price
比较两个字符串 WHERE region = ${region_param} WHERE region = :region_param
指定查询中使用的表 SELECT * FROM ${table_name} SELECT * FROM IDENTIFIER(:table)
当用户输入此参数时,应使用完整的三级命名空间以标识表。
单独指定查询中使用的目录、架构和表 SELECT * FROM ${catalog}.${schema}.${table} SELECT * FROM IDENTIFIER(:catalog \|\| '.' \|\| :schema \|\| '.' \|\| :table)
在较长的格式化字符串中将参数用作模板 "(${area_code}) ${phone_number}"
参数值自动连接成一个字符串。
format_string((%d) %d, :area_code, :phone_number)
有关完整示例,请参阅连接多个参数
创建间隔 SELECT INTERVAL ${p} MINUTE SELECT CAST(:param as INTERVAL MINUTE)
按可能值的列表进行筛选 SELECT * from table WHERE value IN (${list_parameter}) SELECT * FROM samples.nyctaxi.trips WHERE array_contains(TRANSFORM(SPLIT(:list_parameter, ','), s -> TRIM(s)), dropoff_zip)