sql (para tablas derivadas)

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ámetro sql (para campos).

Uso

view: my_derived_table {
derived_table: {
sql:
SELECT *
FROM events
WHERE type NOT IN ('test', 'staff') ;;
...

Jerarquía
sql
Valor predeterminado
Ninguna

Acepta
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.