Utilisation
explore: explore_name {
sql_preamble: SQL STATEMENT ;;
}
|
Hiérarchie
sql_preamble |
Valeur par défaut
Aucun
Acceptation
Expression SQL
|
Définition
Le paramètre sql_preamble spécifie une instruction SQL qui s'exécute avant les requêtes dans l'exploration. L'utilisation principale de sql_preamble consiste à créer des fonctions définies par l'utilisateur dans Google BigQuery. La plupart des dialectes de base de données vous permettent d'installer des UDF directement sur le serveur de base de données, mais Google BigQuery est sans état. Par conséquent, sql_preamble fournit cette fonctionnalité.
Utiliser Liquid dans sql_preamble
Le paramètre sql_preamble est compatible avec Liquid et les attributs utilisateur, ce qui permet de générer du code SQL dynamique pour des cas d'utilisation tels que la définition de variables de session, la sélection de différents entrepôts ou bases de données, l'implémentation de l'élagage de partitions dans BigQuery et le filtrage flexible des données en interagissant plus directement avec la base de données sous-jacente.
Les modèles d'utilisation de Liquid suivants sont compatibles avec le paramètre sql_preamble :
_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
Les modèles d'utilisation de Liquid suivants ne sont pas compatibles avec sql_preamble :
valuerendered_valuefilterable_valuelinklinked_value_field._name
Exemples
Utiliser sql_preamble pour ajouter une médiane temporaire
Créez une fonction définie par l'utilisateur dans Google BigQuery qui calcule une médiane à l'aide de l'instruction CREATE TEMP FUNCTION de Google BigQuery, puis insérez la fonction médiane dans le code SQL de Google BigQuery avant l'exécution de chaque requête dans l'exploration.
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 )
));
;;
}
Utiliser Liquid dans sql_preamble pour localiser le nom de la table
Utilisez Liquid dans sql_preamble pour créer une table temporaire nommée en fonction de la langue sélectionnée par l'utilisateur, afin qu'un seul modèle LookML puisse s'adapter à différentes conventions de nommage internes :
explore: orders {
sql_preamble:
WITH {{ _localization['storage_table_name'] }} AS (select * from users);;
...
}
Au lieu d'utiliser un nom codé en dur tel que mytable pour la table temporaire, ce code remplace la variable Liquid par la chaîne réelle définie dans le fichier de chaînes de paramètres régionaux pour la clé storage_table_name. Pour en savoir plus, consultez Utiliser les paramètres régionaux dans les variables Liquid.
La requête Looker qui suit le préambule fait ensuite référence à cette table nommée de manière dynamique. Par exemple, la requête SQL utilise FROM {{ _localization['storage_table_name'] }}.