Uso
explore: explore_name {
sql_preamble: SQL STATEMENT ;;
}
|
Jerarquía
sql_preamble |
Valor predeterminado
Ninguno
Acepta
Una expresión SQL
|
Definición
El parámetro sql_preamble especifica una instrucción de SQL que se ejecuta antes de que se ejecuten las consultas en Explorar. El uso principal de sql_preamble es crear funciones definidas por el usuario (UDF) en Google BigQuery. La mayoría de los dialectos de bases de datos te permiten instalar UDF directamente en el servidor de la base de datos, pero Google BigQuery no tiene estado, por lo que sql_preamble proporciona esta funcionalidad.
Usa Liquid en sql_preamble
El parámetro sql_preamble admite Liquid y atributos del usuario, lo que permite la generación dinámica de SQL para casos de uso como la configuración de variables de sesión, la selección de diferentes almacenes o bases de datos, la implementación de la eliminación de particiones en BigQuery y el filtrado flexible de datos a través de una interacción más directa con la base de datos subyacente.
En el parámetro sql_preamble, se admiten los siguientes patrones de uso de Liquid:
_filters['view_name.field_name']{% date_start date_filter_name %}{% date_end date_filter_name %}{% condition filter_name %} sql_or_lookml_reference {% endcondition %}{% if %} sql_or_lookml_reference {% else %} other_value {% endif %}{% parameter parameter_name %}parameter_name._parameter_value_user_attributes['name_of_attribute']_localization['localization_key']_model._name_explore._name_explore._dashboard_url_query._query_timezoneview_name._in_queryview_name.field_name._in_queryview_name.field_name._is_selectedview_name.field_name._is_filtered_view._name
Los siguientes patrones de uso de Liquid no son compatibles con sql_preamble:
valuerendered_valuefilterable_valuelinklinked_value_field._name
Ejemplos
Usa sql_preamble para especificar una reserva de BigQuery
Especifica una reserva de Google BigQuery para usar en las consultas de Explorar con la instrucción SET @@reservation de SQL de BigQuery en el parámetro sql_preamble:
explore: orders {
sql_preamble:
SET @@reservation='projects/your-project/locations/your-location/reservations/your-reservation';
}
Cómo usar sql_preamble para agregar una mediana temporal
Crea una función definida por el usuario (UDF) en Google BigQuery que calcule una mediana con la instrucción CREATE TEMP FUNCTION de Google BigQuery y, luego, inserta la función de mediana en el SQL de Google BigQuery antes de que se ejecute cada consulta en Explorar.
explore: salary {
sql_preamble:
CREATE TEMP FUNCTION MEDIAN(a_num ARRAY<FLOAT64>)
RETURNS FLOAT64 AS ((
SELECT
AVG(num)
FROM (
SELECT
row_number() OVER (ORDER BY num) -1 as rn
, num
FROM UNNEST(a_num) num
)
WHERE
rn = TRUNC(ARRAY_LENGTH(a_num)/2)
OR (
MOD(ARRAY_LENGTH(a_num), 2) = 0 AND
rn = TRUNC(ARRAY_LENGTH(a_num)/2)-1 )
));
;;
}
Cómo usar Liquid en sql_preamble para localizar el nombre de la tabla
Usa Liquid en sql_preamble para crear una tabla temporal cuyo nombre se base en el idioma seleccionado por el usuario, de modo que un solo modelo de LookML pueda adaptarse a diferentes convenciones de nomenclatura internas:
explore: orders {
sql_preamble:
WITH {{ _localization['storage_table_name'] }} AS (select * from users);;
...
}
En lugar de usar un nombre codificado, como mytable, para la tabla temporal, este código reemplazará la variable de Liquid por la cadena real que se define en el archivo de cadenas de configuración regional para la clave storage_table_name. Consulta Cómo usar la configuración regional en variables de Liquid para obtener más información.
La consulta de Looker que sigue al preámbulo haría referencia a esta tabla con nombre dinámico. Por ejemplo, la consulta en SQL usaría FROM {{ _localization['storage_table_name'] }}.