En esta página, se hace referencia al parámetro
sqlque forma parte de una tabla derivada.También puedes usar
sqlcomo parte de un campo, como se describe en la página de documentación del parámetrosql(para campos).
Uso
view: my_derived_table {
derived_table: {
sql:
SELECT *
FROM events
WHERE type NOT IN ('test', 'staff')
;;
...
}
}
|
Jerarquía
sql |
Valor predeterminado
Ninguno
Acepta
Un bloque de SQL
|
Definición
sql te permite especificar el código SQL que se usará para generar una tabla derivada. Puedes usar cualquier consulta en SQL válida en el parámetro sql, siempre y cuando la consulta en SQL esté escrita en SQL sin procesar y no haga referencia a campos de Looker. Para comprender mejor las tablas derivadas, consulta la página de documentación Tablas derivadas en Looker.
Además de hacer referencia a tablas de bases 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 de esta referencia es una cadena literal, por lo que no es necesario que la reemplaces por nada. Por ejemplo, si quisieras hacer referencia a una tabla derivada llamada key_customer en tu tabla derivada key_customer_order_facts, podrías 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 de Liquid con sql
También puedes usar variables de Liquid con el parámetro sql. Las variables de Liquid te permiten acceder a datos como los valores de un campo, datos sobre el campo y los filtros aplicados al campo.
Las variables de Liquid date_start y date_end son muy útiles para los dialectos de bases de datos que particionan los datos en varias tablas por fecha, como BigQuery. Consulta la página de prácticas recomendadas Uso de date_start y date_end con filtros de fecha para obtener una explicación detallada.
En particular, las variables de Liquid _in_query, _is_selected y _is_filtered pueden agregar algunas funcionalidades interesantes a las tablas derivadas. Devuelven verdadero o falso según si se incluyó un campo o un filtro en una consulta. Hay algunas complejidades que se deben tener en cuenta para usar correctamente estos valores verdadero/falso. Consulta la página de variables de Liquid para obtener más información.
Por ejemplo, esta tabla derivada cambia la tabla de la base de datos que consulta según los campos que seleccionó el usuario:
view: dynamic_order_counts {
derived_table: {
sql:
SELECT
period, number_of_orders
FROM
{% if dates.reporting_date._in_query %}
daily_orders
{% elsif dates.reporting_week._in_query %}
weekly_orders
{% else %}
monthly_orders
{% 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.
Los views que contienen una tabla derivada se referencian con un parámetro explore o join, que, a su vez, se referencia con 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 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 de campos de Looker
El SQL que escribas en un parámetro sql de tabla derivada debe ser SQL sin procesar, que haga referencia a las columnas y tablas subyacentes de tu base de datos. No debe hacer referencia a nombres de campos ni de 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 de Liquid _filters['view_name.field_name'] en la que el valor se renderiza en SQL y el filtro devuelve un valor de cadena, debes agregar comillas simples alrededor del resultado. Para ello, incluye el filtro sql_quote de Liquid.
De lo contrario, recibirás la siguiente advertencia de LookML si no agregas la variable de Liquid con | sql_quote:
Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.
Consulta la página de documentación de la referencia de variables de Liquid para obtener más información.