用量
filter: filter_name { ... }
}
层次结构
filter |
默认值
无接受
用于为过滤器命名的 Looker 标识符特殊规则
过滤条件名称不能与同一 view 中的任何其他过滤条件、dimension 或 measure 共用 |
定义
filter
参数声明仅供过滤条件使用的字段以及该过滤条件的名称。用户在探索时可以将仅包含过滤条件的字段添加为过滤条件,但无法将其添加到结果集中。这些仅供过滤条件的字段可通过模板化过滤条件(高级的 LookML 主题)加以使用。您还可以参阅使用 filter
按隐藏字段进行过滤示例。
过滤条件名称必须:
- 在所有给定的视图中具有唯一性
- 由字符
a
到z
(不包括大写字母)、0
到9
或_
组成 - 以字母开头
过滤器字段有许多种类型,请参阅维度、过滤器和参数类型文档页面。
示例
以下是使用 filter
参数的一些示例。
创建用户指定的过滤条件
创建一个允许用户指定 order_region
的过滤器:
filter: order_region {
type: string
}
使用模板化过滤条件定义动态派生表
如模板化过滤器和液体参数文档页面中所示,定义派生表以计算用户所指定区域中客户的生命周期支出。此示例使用在上一个示例中创建的 filter
作为模板化过滤条件的一部分。filter
输入在 WHERE
子句中使用 Liquid 变量:
view: customer_facts {
derived_table: {
sql:
SELECT
customer_id,
SUM(sale_price) AS lifetime_spend
FROM
order
WHERE
{% condition order_region %} order.region {% endcondition %}
GROUP BY 1
;;
}
filter: order_region {
type: string
}
}
将 sql
参数与 filter
结合使用
您还可以将 sql
参数与 filter
一起使用,该参数适用于只要过滤器具有值的 SQL WHERE
子句。这样,就可以根据用户过滤条件输入添加动态 WHERE
子句。
以下示例创建了一个过滤条件,仅允许使用数据集中现有的用户名:
filter: user_enabled {
type: string
suggest_dimension: user_name
sql: EXISTS (SELECT user_id FROM users WHERE {% condition %} user_name {% endcondition %} and state = 'enabled') ;;
}
在上面的示例中,如果数据集中的用户名的完整列表为“Zach”、“Erin”和“Brett”,则过滤条件会生成以下 WHERE
子句:
WHERE EXISTS (SELECT user_id FROM users WHERE user_name in ('Zach', 'Erin', 'Brett') and state = 'enabled')
请参阅本页面中的使用 filter
按隐藏字段过滤部分,查看有关如何将 sql
参数与 filter
结合使用的示例。
使用 filter
定义动态派生表和用户定义的过滤条件
使用前面定义了具有动态区域值的派生表的示例,您可以将 sql
参数与模板化过滤条件结合使用,以动态构建同时适用于派生表和 Looker 生成的主查询的 WHERE
子句:
view: customer_facts {
derived_table: {
sql:
SELECT
customer_id,
SUM(sale_price) AS lifetime_spend
FROM
order
WHERE
{% condition order_region %} order.region {% endcondition %}
GROUP BY 1
;;
}
filter: order_region {
type: string
sql: {% condition order_region %} ${region} {% endcondition %} ;;
}
dimension: region {
type: string
sql: ${TABLE}.region ;;
}
在上面的示例中,用户提供输入给过滤器 order_region
,后者再提供值给 region
维度。然后,region
维度会在派生表 SQL 中提供 WHERE
子句的值,并且由于 filter
定义中的 sql
形参,在 Looker 生成的查询中,WHERE
子句的值。
使用 filter
按隐藏字段进行过滤
您可以使用 filter
创建用户可过滤的维度,同时还可以阻止用户选择查询中的维度。
- 首先,请使用
hidden: yes
隐藏相关维度。这意味着,该维度将不会供用户从“探索”字段选择器中选择。
dimension: field_to_hide {
type: string
hidden: yes
sql: ${TABLE}.field_to_hide ;;
}
- 现在,创建一个
filter
字段以关联到field_to_hide
维度。
filter: filter_on_field_to_hide {
type: string
sql: {% condition filter_on_field_to_hide %} ${field_to_hide} {% endcondition %} ;;
}
如将 sql
参数与 filter
搭配使用示例中所述,filter
字段的 sql
参数直接将 SQL 应用于查询的 WHERE
子句。在本例中,sql
接受在 filter_on_field_to_hide
过滤条件中指定的过滤条件,并将其应用于 ${field_to_hide}
维度。
这样,用户就可以使用 filter_on_field_to_hide
过滤条件按 field_to_hide
过滤查询,同时 field_to_hide
维度保持隐藏状态。