value: "Looker filter expression"
unless: [field_name, field_name, …]
AcceptsOne or more filter specifications of a field name and a Looker filter expression, plus a list of one or more field names in the
conditionally_filter parameter enables you to define a set of default filters that users can override if they apply at least one filter from a second list that you define.
This parameter is typically used to prevent users from accidentally creating very large queries that may be too expensive to run on your database. For example, you might force a user to limit their query to the previous week, unless they’ve explicitly asked for a larger date range.
Filters applied in
conditionally_filter appear to the user after they have run their query. While users can change the default
value that you set, they cannot completely remove the filter unless they apply at least one of the filters you specify in the
The field names you use can be the name of a
If you need to reference a dimension or measure that is part of a joined view rather than part of this Explore, use
Consider the following example:
In this case the
id filter refers to the
id field from the Explore called
customer.id filter refers to the
id field from the view called
customer. Both filters will be applied unless the user sets an order date in the Explore UI. This example also demonstrates that you can require multiple filters.
The default value that you specify can accept these types of expressions.
You can also force the user to use an Order ID filter (with a default value of “123” that they can change) unless they apply an Order Date filter:
Alternatively, force the user to use an Order ID filter (with a default value of “123” or “234” that they can change) unless they apply an Order Date or Order Time filter:
Or, force the user to use an Order ID filter (default value of “123”) and a Customer City filter (with default of “Chicago”), unless they apply an Order Date or Customer Date filter:
A User Cannot Remove Every Filter When
conditionally_filter Is Used
There is no way to run a query without any filters when
conditionally_filter is used. One way or another a user must use the conditional filters you specify, or their own filters from the
conditionally_filter with a
type: time Dimension in a Group Puts the Group’s Other Dimensions in the
field you specify within
conditionally_filter is a time-based dimension that is part of a dimension group, then Looker will treat all of that group’s other dimensions as if they were subject to an
unless subparameter for that conditional filter — even if you don’t include an
For example, the following two blocks of LookML are interpreted identically. Here
conditionally_filter is applied to a time-based dimension
event_date that is part of the
event dimension group. No
unless conditions are specified, but Looker will treat the other dimensions in the
event group as though they had been specified with the
LookML block 1:
LookML block 2:
In other words, Looker interprets the two LookML blocks the same way, even though only the second LookML block explicitly applies the
unless subparameter to the
event group’s other dimensions.
Things to Know
There Is a Method to Apply
conditionally_filter to a Subset of Users
If you want to apply a conditional filter for some users, but not others, you can do so using model permissioning. You would need to create two models: one in which
conditionally_filter is used, and one without. You can then grant access to the proper models on a user-specific basis.
If You Want to Use
unless, Just Use
If you want to force users to use a specific set of filters no matter what, but let them change the default value, use
If You Want Filters That Cannot Be Changed At All, Consider
If you want an Explore to have filters that are the same for everyone, and not let the users change the filter value, use
If You Want User-Specific Filters That Can’t Be Changed, Consider
If you want an Explore to have filters that are specific to each user, but cannot be removed or changed, use