Uso
filter: filter_name { ... }
}
Jerarquía
filter |
Valor predeterminado
NingunaAcepta
Un identificador de Looker para nombrar el filtroReglas especiales
Los nombres de los filtros no se pueden compartir con ningún otro filtro, dimension ni measure dentro del mismo view
|
Definición
El parámetro filter
declara un campo de solo filtro y un nombre para ese filtro. Un usuario puede agregar campos de solo filtro como filtros cuando explora, pero no puede agregarlos a su conjunto de resultados. Estos campos de solo filtro son útiles a través de los filtros con plantilla, que son un tema avanzado de LookML. También puedes consultar el ejemplo de Usa filter
para filtrar por un campo oculto.
El nombre del filtro debe tener las siguientes características:
- Ser únicos en cualquier vista
- Consisten de caracteres
a
az
(sin mayúsculas),0
a9
o_
. - Comenzar con una letra
Hay muchos tipos de campos de filtro, como se explica con más detalle en la página de documentación Dimensión, filtro y tipos de parámetros.
Ejemplos
Aquí tienes algunos ejemplos para usar el parámetro filter
.
Crea un filtro especificado por el usuario
Crea un filtro que permita al usuario especificar el order_region
:
filter: order_region {
type: string
}
Define una tabla derivada dinámica con un filtro con plantilla
Como se muestra en la página de documentación Filtros basados en plantillas y parámetros líquidos, define una tabla derivada para calcular el gasto total de los clientes en una región que especifica el usuario. En este ejemplo, se usa el filter
creado en el ejemplo anterior como parte de un filtro con plantilla. La entrada filter
se usa en la cláusula WHERE
con variables líquidas:
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
}
}
Usa el parámetro sql
con filter
También puedes usar el parámetro sql
con filter
, que se aplica a la cláusula WHERE
de SQL cada vez que el filtro tiene un valor. Esto permite una cláusula WHERE
dinámica, basada en la entrada de filtro del usuario.
En el siguiente ejemplo, se crea un filtro que solo permite nombres de usuario que existen en el conjunto de datos:
filter: user_enabled {
type: string
suggest_dimension: user_name
sql: EXISTS (SELECT user_id FROM users WHERE {% condition %} user_name {% endcondition %} and state = 'enabled') ;;
}
En el ejemplo anterior, si la lista completa de nombres de usuario en el conjunto de datos es “Zach”, “Erin” y “Brett”, el filtro dará como resultado la siguiente cláusula WHERE
:
WHERE EXISTS (SELECT user_id FROM users WHERE user_name in ('Zach', 'Erin', 'Brett') and state = 'enabled')
Consulta la sección Usa filter
para filtrar por un campo oculto en esta página a fin de obtener un ejemplo de cómo usar el parámetro sql
con filter
.
Usa filter
para definir una tabla derivada dinámica y un filtro definido por el usuario
Si usas el ejemplo anterior que define una tabla derivada con un valor de región dinámica, puedes usar el parámetro sql
con un filtro con plantilla para compilar de forma dinámica una cláusula WHERE
que se aplique a la tabla derivada y a la consulta generada por Looker principal:
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 ;;
}
En el ejemplo anterior, el usuario proporciona una entrada al filtro order_region
, que, a su vez, proporciona el valor a la dimensión region
. Luego, la dimensión region
proporciona el valor de la cláusula WHERE
en el SQL de la tabla derivada y, debido al parámetro sql
en la definición filter
, el valor de la cláusula WHERE
en una consulta generada por Looker.
Usa filter
para filtrar por un campo oculto
Puedes usar filter
para crear una dimensión que los usuarios puedan filtrar y, al mismo tiempo, evitar que los usuarios seleccionen la dimensión en una consulta.
- Primero, oculte la dimensión en cuestión con
hidden: yes
. Esto significa que la dimensión no estará disponible para que los usuarios la seleccionen desde un selector de campo Explorar.
dimension: field_to_hide {
type: string
hidden: yes
sql: ${TABLE}.field_to_hide ;;
}
- Ahora, crea un campo
filter
para vincularlo a la dimensiónfield_to_hide
.
filter: filter_on_field_to_hide {
type: string
sql: {% condition filter_on_field_to_hide %} ${field_to_hide} {% endcondition %} ;;
}
Como se explicó en el ejemplo Usa el parámetro sql
con filter
, el parámetro sql
del campo filter
aplica SQL directamente a la cláusula WHERE
de la consulta. En este caso, sql
toma la condición del filtro especificada en el filtro filter_on_field_to_hide
y la aplica a la dimensión ${field_to_hide}
.
De esta manera, los usuarios pueden filtrar una consulta por field_to_hide
con el filtro filter_on_field_to_hide
, mientras que la dimensión field_to_hide
permanece oculta.