En esta página, se hace referencia al parámetro
sql
que forma parte de una tabla derivada.También puedes usar
sql
como parte de un campo, como se describe en la página de documentación del parámetrosql
(para campos).
Uso
derived_table: {
sql:
SELECT *
FROM events
WHERE type NOT IN ('test', 'staff') ;;
...
Jerarquía
sql |
Valor predeterminado
NingunaAcepta
Un bloque de SQL
|
Definición
sql
te permite especificar el SQL que se usará para generar una tabla derivada. Puedes usar cualquier consulta legal de SQL en el parámetro sql
, siempre que la consulta de SQL esté escrita en SQL sin procesar y no haga referencia a los campos de Looker. Para obtener información más completa sobre las tablas derivadas, consulta la página de documentación Tablas derivadas en Looker.
Además de hacer referencia a tablas de base de datos normales, también puedes hacer referencia a vistas de LookML o tablas derivadas en sql
. Para ello, usa lo siguiente:
${view_or_derived_table_name.SQL_TABLE_NAME} AS view_or_derived_table_name
El SQL_TABLE_NAME
en esta referencia es una string literal; no necesitas reemplazarlo con nada. Por ejemplo, si deseas hacer referencia a una tabla derivada llamada key_customer
en tu tabla derivada key_customer_order_facts
, puedes tener algo como lo siguiente:
view: key_customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT( * ) AS lifetime_orders
FROM
order
INNER JOIN
${key_customer.SQL_TABLE_NAME} AS key_customer
ON
order.customer_id = key_customer.id
GROUP BY 1
;;
}
}
Variables líquidas con sql
También puedes usar variables líquidas con el parámetro sql
. Las variables líquidas le permiten acceder a datos como los valores de un campo, los datos sobre el campo y los filtros que se aplicaron.
Las variables líquidas date_start
y date_end
son muy útiles para los dialectos de las bases de datos que particionan datos en varias tablas por fecha, como BigQuery. Consulta este artículo del Centro de ayuda para obtener una explicación detallada.
En particular, las variables líquidas _in_query
, _is_selected
y _is_filtered
pueden agregar funciones interesantes a las tablas derivadas. Muestran un valor verdadero o falso en función de si se incluyó un campo o filtro en una consulta. Existen algunos detalles que se deben considerar para usar estos valores verdaderos o falsos de forma correcta. Consulta la página de variables líquidas para obtener más información.
Por ejemplo, esta tabla derivada cambia la tabla de la base de datos que consulta en función de los campos que el usuario seleccionó:
view: dynamic_order_counts {
derived_table: {
sql:
SELECT
period, number_of_orders
FROM
{% dynamic if dates.reporting_date._in_query %}
daily_orders
{% elsif dates.reporting_week._in_query %}
weekly_orders
{% dynamic else %}
monthly_orders
{% dynamic endif %}
GROUP BY 1
;;
}
}
Ejemplos
Crea una tabla derivada customer_order_facts
:
view: customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT( * ) AS lifetime_orders
FROM
order
GROUP BY 1
;;
}
}
Aspectos para tener en cuenta
Se debe poder acceder a las tablas a las que hace referencia sql
desde la conexión actual
views
que contienen una tabla derivada hacen referencia a un parámetro explore
o join
, que a su vez se hace referencia a un modelo. El modelo determina qué conexión de base de datos se usa (consulta la página de documentación del parámetro connection
). Las conexiones de las bases de datos se definen en la sección Administrador de Looker. Cuando haces referencia a una tabla en el parámetro sql
, la tabla debe ser accesible dentro de la conexión asociada.
Usa SQL sin procesar con sql
, no referencias a campos de Looker
El SQL que escribes en un parámetro sql
de la tabla derivada debe ser SQL sin procesar y debe hacer referencia a las columnas y tablas subyacentes de tu base de datos. No debe hacer referencia a los nombres de los campos ni a las vistas de Looker.
El uso de _filters['view_name.field_name']
en una tabla derivada requiere sql_quote
Cuando defines una tabla derivada basada en SQL, si usas la variable líquida _filters['view_name.field_name']
en la que el valor se renderiza en SQL y el filtro muestra un valor de string, debes agregar comillas simples alrededor del resultado. Para ello, incluye el filtro de líquido sql_quote
.
De lo contrario, recibirás la siguiente advertencia de LookML si no anexas la variable Liquid con | sql_quote
:
Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.
Consulta la página de documentación Referencia de variables líquidas para obtener más información.