始终过滤

用量

探索:探索名称 {
始终过滤: {
过滤器: [字段名称: “过滤表达式”, 字段名称: “过滤表达式”, ...]
}
}
层次结构
always_filter
默认值


接受
字段名称和 Looker 过滤条件表达式

定义

借助 always_filter,您可以要求用户添加您定义的一组特定过滤条件。您还可以为过滤器定义默认值。虽然用户可能会更改其查询的默认值,但他们无法彻底移除过滤条件。

filters 子参数中引用的字段可以是维度测量过滤条件参数。如果您需要引用属于合并视图(而非此探索)的一部分的维度或测量,请使用 view_name.field_name。例如:

explore: order {
  always_filter: {
    filters: [id: "123", customer.id: "789"]
  }
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

此处的 id 过滤条件引用了 order 中的 id 字段。customer.id 过滤条件引用了 customer 中的 id 字段。此示例还演示了您可能需要多个过滤条件。

value 子参数中,使用 Looker 过滤条件表达式指定默认值。

示例

强制用户使用订单 ID 过滤条件(默认值为“123”):

explore: order {
  always_filter: {
    filters: [id: "123"]
  }
}

强制用户使用订单创建日期过滤条件(采用过去 7 天的默认值):

explore: order {
  always_filter: {
    filters: [created_date: "7 days"]
  }
}

强制用户使用订单 ID 过滤条件(默认值为“123”)、订单城市过滤条件(默认值为“芝加哥”)和客户年龄过滤条件(默认值大于或等于 18):

explore: order {
  always_filter: {
    filters: [id: "123", city: "Chicago", customer.age: ">=18"]
  }
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

常见挑战

用户无法移除 always_filter 指定的过滤条件

“探索”界面不允许用户移除 always_filter 添加的过滤条件。如果您希望以可供用户完全移除过滤条件的方式为“探索”功能预加载过滤条件,不妨考虑创建包含建议的过滤条件的查询,然后与用户共享查询,以便他们可以使用该查询及其过滤条件着手。

设置空白默认值

如果您要创建具有默认值的空白过滤条件,可以通过在过滤条件值中指定
"-EMPTY" 来实现此目的:

always_filter: {
  filters: [products.category: "-EMPTY"]
}

always_filter 参数会替换 default_value 过滤条件设置

always_filter 会替换该字段的 default_value 设置。如果您使用 always_filter 声明某个值,该值将是“探索”中的默认值。如果您没有使用 always_filter 声明值,则“探索”中会使用“是任何值”这一过滤条件。

注意事项

always_filter会影响现有的外观和信息中心图块

always_filter 添加到现有的 explore 定义后,系统会将具有默认值的过滤条件集添加到任何基于该 explore 的 Looks、Discovery 或 Dashboard 图块,包括之前保存的 Looks 和基于 explore 的信息中心图块。

如果您需要用户无法更改的过滤器,请考虑使用 sql_always_where

如果您希望“探索”页面中的过滤条件对所有人都相同,且无法以任何方式更改,您可以使用 sql_always_where

如果您需要用户无法更改的针对具体用户的过滤条件,请考虑使用 access_filter

如果您希望“探索”页面包含特定于每个用户的过滤条件,并且过滤条件无法以任何方式更改,则可以使用 access_filter