Cette page fait référence au paramètre
sqlqui fait partie d'une table dérivée.Vous pouvez également utiliser
sqldans un champ, comme décrit sur la page de documentation du paramètresql(pour les champs).
Utilisation
view: my_derived_table {
derived_table: {
sql:
SELECT *
FROM events
WHERE type NOT IN ('test', 'staff')
;;
...
}
}
|
Hiérarchie
sql |
Valeur par défaut
Aucun
Acceptation
Bloc SQL
|
Définition
sql vous permet de spécifier le code SQL qui sera utilisé pour générer une table dérivée. Vous pouvez utiliser n'importe quelle requête SQL légale dans le paramètre sql, à condition qu'elle soit écrite en SQL brut et ne fasse pas référence à des champs Looker. Pour mieux comprendre les tables dérivées, consultez la page de documentation Tables dérivées dans Looker.
En plus de faire référence à des tables de base de données normales, vous pouvez également faire référence à des vues LookML ou à des tables dérivées dans sql. Pour ce faire, utilisez :
${view_or_derived_table_name.SQL_TABLE_NAME} AS view_or_derived_table_name
Dans cette référence, SQL_TABLE_NAME est une chaîne littérale, qu'il est donc inutile de remplacer. Par exemple, si vous souhaitez faire référence à une table dérivée nommée key_customer dans votre table dérivée key_customer_order_facts, vous pouvez utiliser le code suivant :
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 Liquid avec sql
Vous pouvez également utiliser des variables Liquid avec le paramètre sql. Les variables Liquid vous permettent d'accéder à des données telles que les valeurs d'un champ, des informations sur le champ et les filtres appliqués au champ.
Les variables Liquid date_start et date_end sont très utiles pour les dialectes de base de données qui partitionnent les données dans plusieurs tables par date, comme BigQuery. Pour en savoir plus, consultez la page des bonnes pratiques Utiliser date_start et date_end avec des filtres de date.
Les variables Liquid _in_query, _is_selected et _is_filtered, en particulier, peuvent ajouter des fonctionnalités intéressantes aux tables dérivées. Elles renvoient la valeur "true" ou "false" selon qu'un champ ou un filtre a été inclus dans une requête. Il existe certaines subtilités à prendre en compte pour utiliser correctement ces valeurs "true"/"false". Pour en savoir plus, consultez la page sur les variables Liquid.
Par exemple, cette table dérivée modifie la table de base de données qu'elle interroge en fonction des champs sélectionnés par l'utilisateur :
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
;;
}
}
Exemples
Créez une table dérivée customer_order_facts :
view: customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT( * ) AS lifetime_orders
FROM
order
GROUP BY 1
;;
}
}
Éléments à prendre en compte
Les tables référencées par sql doivent être accessibles à partir de la connexion actuelle.
Les views contenant une table dérivée sont référencés par un paramètre explore ou join, qui est lui-même référencé par un modèle. Le modèle détermine la connexion de base de données à utiliser (consultez la page de documentation sur le paramètre connection). Les connexions à la base de données sont définies dans la section Admin de Looker. Lorsque vous faites référence à une table dans le paramètre sql, celle-ci doit être accessible dans la connexion associée.
Utilisez le code SQL brut avec sql, et non les références de champs Looker.
Le code SQL que vous écrivez dans un paramètre sql de table dérivée doit être du code SQL brut, faisant référence aux colonnes et tables sous-jacentes de votre base de données. Il ne doit pas faire référence à des noms de champs ou de vues Looker.
L'utilisation de _filters['view_name.field_name'] dans une table dérivée nécessite sql_quote.
Lorsque vous définissez une table dérivée basée sur SQL, si vous utilisez la variable Liquid _filters['view_name.field_name'] où la valeur est affichée en SQL et que le filtre renvoie une valeur de chaîne, vous devez ajouter des guillemets simples autour du résultat. Pour ce faire, incluez le filtre Liquid sql_quote.
Sinon, l'avertissement LookML suivant s'affichera si vous n'ajoutez pas la variable Liquid avec | sql_quote :
Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.
Pour en savoir plus, consultez la page de documentation Documentation de référence sur les variables Liquid.