Cette page fait référence au paramètre
explore_source
qui est un sous-paramètre dederived_table
.
explore_source
peut également être un sous-paramètre detest
, décrit sur la page de documentation sur les paramètrestest
.
Utilisation
Hiérarchie
explore_source |
Valeur par défaut
AucunAcceptation
Identifiant de la table Explorer à partir de laquelle la table dérivée native est dérivée, plus les sous-paramètres qui définissent la table dérivée native.
|
Définition
Il existe deux façons de créer une table dérivée que vous pouvez utiliser comme s'il s'agissait d'une table normale dans votre base de données : les tables dérivées natives, qui sont définies à l'aide de paramètres LookML, et les tables dérivées basées sur SQL, qui sont définies à l'aide d'instructions de requête SQL.
Le paramètre explore_source
est utilisé pour les tables dérivées natives. Dans ce paramètre, vous définissez quelles colonnes seront incluses dans une table dérivée native, les filtres à appliquer à la table dérivée native, si vous souhaitez limiter ou trier les lignes de la table dérivée native, et si vous souhaitez convertir les champs horaires de la table dérivée native en fuseaux horaires différents.
CONSEIL: Le moyen le plus simple de créer une table dérivée native consiste à utiliser une exploration pour créer la requête souhaitée, puis à sélectionner l'option Get LookML. Looker génère la table dérivée LookML pour la requête, que vous pouvez copier dans un fichier d'affichage de votre projet LookML. Pour en savoir plus, consultez la page Créer des tables dérivées natives.
Définir une table dérivée native
Vous pouvez utiliser divers paramètres dans une table dérivée native, dont beaucoup sont facultatifs. Vous trouverez ci-dessous la syntaxe permettant de définir une table dérivée, ainsi que des informations supplémentaires sur chaque paramètre.
explore_source: identifier {
bind_all_filters: yes
column: identifier {
field: field_name
}
derived_column: identifier {
sql: SQL expression ;;
}
expression_custom_filter: [custom filter expression]
filters: [field_name_1: "string", field_name_2: "string", ...]
limit: number{
sorts: [field_name_1: asc | desc, field_name_2: asc | desc, ...]
timezone: "string"
}
Où :
Nom du paramètre | Description | Exemple |
---|---|---|
bind_filters |
Transmettre un filtre de la requête "Explorer" à la sous-requête de table dérivée native. Pour le configurer, utilisez le sous-paramètre from_field afin de spécifier un champ défini dans la vue de table dérivée native ou accessible dans la section "Explorer" à laquelle la table native native est jointe. Au moment de l'exécution, tous les filtres de from_field dans l'exploration seront transmis à to_field dans la sous-requête de table dérivée native. Pour obtenir un exemple, consultez cette section ci-dessous.
Remarque concernant bind_filters :
• Le filtre d'exécution doit se trouver dans une vue jointe à la même table "Explore" que la table dérivée native. • La table dérivée native ne peut pas être transformée en table dérivée persistante (PDT). • Le paramètre explore_source peut avoir le sous-paramètre bind_all_filters ou le sous-paramètre bind_filters , mais pas les deux.
|
bind_filters: { |
bind_all_filters |
Transmet tous les filtres de la requête Explorer dans la sous-requête de table dérivée native. Pour le configurer, spécifiez bind_all_filters: yes dans le explore_source de la table dérivée native. Pour obtenir un exemple, consultez cette section ci-dessous.
Remarque concernant bind_all_filters: yes :
• Le filtre d'exécution doit se trouver dans une vue jointe à la même table "Explore" que la table dérivée native. • La table dérivée native ne peut pas être convertie en PDT. • La table dérivée native ne peut être jointe que dans l'onglet "Explorer" spécifié dans le paramètre explore_source de la table dérivée native. En effet, bind_all_filters doit mapper les champs filtrés de la fonction Explorer aux champs de la table dérivée native.
• Le paramètre explore_source peut avoir le sous-paramètre bind_all_filters ou le sous-paramètre bind_filters , mais pas les deux.
|
bind_all_filters: yes
|
column |
Spécifie une colonne à inclure dans explore_source . Comporte un sous-paramètre field . |
column: cust_id { |
derived_column |
Spécifie une colonne de explore_source avec une expression dans l'espace de noms des colonnes intérieures. Faute de regroupement SQL à ce stade, l'agrégation d'expressions SQL est ici impossible. Les fonctions de fenêtrage SQL peuvent être très utiles dans ce paramètre. Comporte un sous-paramètre sql . |
derived_column: average_order { |
dev_filters |
ADDED 21.12
Spécifie les filtres que Looker applique uniquement aux versions de développement de la table dérivée. Cette fonctionnalité est utile pour les développeurs LookML lorsqu'ils testent des tables dérivées en mode développement. Le paramètre dev_filters permet à Looker de créer des versions filtrées plus petites de la table, afin qu'un développeur LookML puisse itérer et tester la table sans attendre que la table soit entièrement créée après chaque modification. Looker applique dev_filters uniquement aux versions de développement de la table dérivée, et non à la version de production de la table interrogée par vos utilisateurs. Consultez la page de documentation Tables dérivées dans Looker pour en savoir plus sur l'utilisation des tables dérivées en mode développement, ainsi que la section Créer des filtres pour le mode développement sur cette page. |
dev_filters: [orders.created_date: "90 days", orders.products: "sweaters"] |
expression_custom_filter |
Spécifie éventuellement une expression de filtre personnalisée sur une requête explore_source . |
expression_custom_filter: |
filters |
(Facultatif) Ajoute un filtre à une requête explore_source . Placez le nom du champ à filtrer entre crochets. Utilisez le format view_name.field_name , puis : et les valeurs sur lesquelles le champ doit être filtré. Les filtres sont ajoutés à la clause WHERE du code SQL généré par la table dérivée native. |
filters: [products.department: "sweaters"] |
limit |
Spécifie la limite du nombre de lignes pour la requête (facultatif). | limit: 10
|
sorts |
Spécifie un tri pour cette propriété (explore_source ). Placez le nom du champ sur lequel vous souhaitez le trier, entre crochets. Utilisez le format view_name.field_name , puis : , asc ou desc , afin d'indiquer si le champ doit être trié par ordre croissant ou décroissant. Vous pouvez effectuer un tri sur plusieurs champs en ajoutant plusieurs paires nom/champ séparées par une virgule. |
sorts: [products.brand: asc, products.name: asc] |
timezone |
Définit le fuseau horaire pour la requête explore_source . Pour les tables dérivées non persistantes, définissez le fuseau horaire sur "query_timezone" afin d'utiliser automatiquement le fuseau horaire de la requête en cours d'exécution. Si aucun fuseau horaire n'est spécifié, la requête explore_source n'effectue aucune conversion de fuseau horaire, mais utilise le fuseau horaire de la base de données. Consultez la page Valeurs timezone pour obtenir la liste des fuseaux horaires acceptés.L'IDE suggère automatiquement la valeur de fuseau horaire lorsque vous saisissez le paramètre timezone dans l'IDE. L'IDE affiche également la liste des valeurs de fuseau horaire acceptées dans le panneau d'aide rapide. |
timezone: "America/Los_Angeles" |
Examples
Les définitions suivantes fournissent des exemples de base de tables dérivées natives.
Créez une table dérivée native de user_order_facts
:
view: user_order_facts {
derived_table: {
explore_source: order_items {
column: user_id {
field: order_items.user_id
}
column: lifetime_number_of_orders {
field: order_items.order_count
}
column: lifetime_customer_value {
field: order_items.total_revenue
}
}
}
# Define the view's fields as desired
dimension: user_id {
hidden: yes
}
dimension: lifetime_number_of_orders {
type: number
}
dimension: lifetime_customer_value {
type: number
}
}
Vous pouvez ajouter des filtres pour créer une table dérivée user_90_day_facts
native:
view: user_90_day_facts {
derived_table: {
explore_source: order_items {
column: user_id {
field: order_items.user_id
}
column: number_of_orders_90_day {
field: order_items.order_count
}
column: customer_value_90_day {
field: order_items.total_revenue
}
filters: [order_items.created_date: "90 days"]
}
}
# Add define view's fields as desired
dimension: user_id {
hidden: yes
}
dimension: number_of_orders_90_day {
type: number
}
dimension: customer_value_90_day {
type: number
}
}
Créer des filtres pour le mode Développement
Dans certains cas, la création de la table dérivée native que vous créez prend beaucoup de temps, ce qui peut prendre beaucoup de temps si vous testez de nombreuses modifications en mode développement. Dans ce cas, vous pouvez utiliser dev_filters
pour créer des versions de développement plus petites d'une table dérivée native:
view: e_faa_pdt {
derived_table: {
...
datagroup_trigger: e_faa../_shared_datagroup
explore_source: flights {
dev_filters: [flights.event_date: "90 days"]
filters: [flights.event_date: "2 years", flights.airport_name: "Yucca Valley Airport"]
column: id {}
column: airport_name {}
column: event_date {}
}
}
...
}
Cet exemple inclut un paramètre dev_filters
qui filtre les données des 90 derniers jours et un paramètre filters
qui filtre les données des deux dernières années et de l'aéroport de la Yucca Valley. Le paramètre dev_filters
fonctionne conjointement avec le paramètre filters
afin que tous les filtres soient appliqués à la version de développement de la table. Si dev_filters
et filters
spécifient des filtres pour la même colonne, les dev_filters
sont prioritaires pour la version de développement de la table. Dans cet exemple, la version de développement de la table filtrera les données des 90 derniers jours pour l'aéroport de Yucca Valley.
Si une table dérivée native comporte le paramètre
dev_filters
, la table de développement ne peut pas être utilisée comme version de production, car la version de développement contient un ensemble de données abrégé. Si tel est le cas, vous pouvez mettre en commentaire le paramètredev_filters
une fois que vous avez terminé de développer la table et avant de déployer vos modifications, puis interroger la table en mode développement. Looker générera alors une version complète de la table qui pourra être utilisée pour la production lorsque vous déploierez vos modifications. Pour en savoir plus sur l'utilisation des tables de développement en production, consultez la page Tables dérivées dans Looker.
Notez que la situation inverse est vraie. Si vous avez une table dérivée native avec le paramètredev_filters
et que vous l'interrogez en mode de développement, Looker peut utiliser la table de production pour répondre à votre requête en mode de développement. Cela est vrai, sauf si vous modifiez la définition de la table, puis interrogez la table en mode de développement. Looker créera alors une table de développement pour répondre à la requête.
Transmettre des filtres dans une table dérivée native
Lorsque vous incluez une table dérivée native dans une exploration, vous pouvez utiliser les filtres d'exécution de la fonction Explorer et les appliquer à la requête de table dérivée native. Pour ce faire, ajoutez le paramètre bind_all_filters
ou bind_filters
au explore_source
de la table dérivée native.
Lorsque vous transmettez des filtres d'exécution d'une requête Explorer à une sous-requête de table dérivée native, le filtre d'exécution doit se trouver dans une vue jointe à la même table Explorer que la table dérivée native. De plus, étant donné que la table dérivée native doit être régénérée au moment de l'exécution afin d'intégrer les filtres d'exécution de la fonction Explorer, la table dérivée native ne peut pas être une table dérivée persistante (PDT).
Utiliser un fichier de cookie (bind_all_filters
)
Le moyen le plus simple de transmettre des filtres d'une requête Explorer à une sous-requête de table dérivée native consiste à spécifier bind_all_filters: yes
dans le paramètre explore_source
de la table dérivée native. Cette action transmet tous les filtres d'exécution d'une tâche Explorer dans la sous-requête de table dérivée native.
Une table dérivée native avec bind_all_filters: yes
doit être jointe à la même exploration que celle spécifiée dans le paramètre explore_source
de la table dérivée native. Si vous souhaitez utiliser la table dérivée native dans une autre exploration, utilisez plutôt le paramètre bind_filters
, comme décrit dans cette section.
Voici le style LookML d'une table dérivée native avec bind_all_filters: yes
:
view: top_10_simple_item_names {
view_label: "Top 10s"
derived_table: {
explore_source: order_items {
column: total_sale_price {
field: order_items.total_sale_price
}
column: item_name {
field: products.item_name
}
derived_column: rank {
sql: RANK() OVER (ORDER BY total_sale_price DESC) ;;
}
bind_all_filters: yes
sorts: [order_items.total_sale_price: desc]
timezone: "query_timezone"
limit: 10
}
}
dimension: item_name {
group_label: "Simple Example"
}
dimension: rank {
type: number
group_label: "Simple Example"
}
dimension: item_name_ranked {
group_label: "Simple Example"
order_by_field: rank
type: string
sql: ${rank} || ') ' || ${item_name} ;;
}
}
Dans la vue native de la table dérivée ci-dessus, explore_source
est order_items
. Voici le LookML de la section order_items
Explorer à laquelle la table dérivée native est jointe:
explore: order_items {
...
join: top_10_simple_item_names {
type: inner
relationship: many_to_one
sql_on: ${products.item_name} = ${top_10_simple_item_names.item_name} ;;
}
}
Pour voir un exemple à l'œuvre, consultez l'article de la communauté [Analytic Block] – Pivot by Top X – Présentation de bind_all_filters: yes
.
Utiliser un fichier de cookie (bind_filters
)
Le sous-paramètre bind_filters
de explore_source
transmet un filtre spécifique de la requête Explorer à la sous-requête de table dérivée native:
to_field
est le champ de la table dérivée native à laquelle le filtre est appliqué.to_field
doit être un champ de la propriétéexplore_source
sous-jacente.from_field
spécifie le champ dans l'exploration à partir duquel le filtre doit être obtenu, si l'utilisateur spécifie un filtre au moment de l'exécution.
Au moment de l'exécution, tous les filtres de from_field
dans l'exploration seront transmis à to_field
dans la sous-requête de table dérivée native.
Le LookML ci-dessous présente une table dérivée native avec bind_filters
. Avec cette configuration, Looker utilise tout filtre appliqué au champ filtered_lookml_dt.filter_date
dans l'onglet "Explorer" et l'applique au champ users.created_date
de la table dérivée native.
derived_table: {
explore_source: order_items {
bind_filters: {
to_field: users.created_date
from_field: filtered_lookml_dt.filter_date
. . .
}
}
}
Éléments à prendre en compte
Utilisez un seul paramètre explore_source
Chaque table dérivée native n'accepte qu'un seul paramètre explore_source
. Les paramètres explore_source
suivants n'entraîneront pas d'erreurs de validation LookML, mais remplaceront les paramètres explore_source
précédents.
Pour créer des colonnes à partir de champs dans différentes vues, associez d'abord les différentes vues dans la même vue. puis utilisez "Explorer" pour explore_source
.
Utiliser les instructions include
pour activer les champs de référence
Lorsque vous créez une table dérivée native, vous devez inclure le fichier contenant la définition de la fonction Explorer. Pour ce faire, le meilleur moyen est de définir Explorer dans un fichier Explorer distinct, comme décrit dans la documentation sur la création de fichiers Explorer.
Si vous créez un fichier Explorer distinct:
- Le fichier de vue de la table dérivée native doit inclure le fichier Explorer. Par exemple :
include: "/explores/order_items.explore.lkml"
- Le fichier Explorer doit inclure les fichiers d'affichage dont il a besoin. Par exemple:
include: "/views/order_items.view.lkml"
include: "/views/users.view.lkml"
- Le modèle doit inclure le fichier Explorer. Par exemple:
include: "/explores/order_items.explore.lkml"