Utilisation
max_cache_age: "24 heures"
sql_trigger: SELECT max(id) FROM my_tablename ;;
interval_trigger: "12 heures"
label: :description:":" :
Hiérarchie
datagroup |
Valeur par défaut
AucunAcceptation
Identifiant de votre groupe de données, avec sous-paramètres définissant ses propriétés.
|
Définition
Utilisez datagroup
pour attribuer une règle de mise en cache à Explorer et/ou aux tables dérivées persistantes. Si vous souhaitez utiliser des règles de mise en cache différentes pour chaque exploration et/ou traitement du traitement des données, utilisez un paramètre datagroup
distinct pour spécifier chaque règle.
Vous pouvez ajouter un libellé et une description au groupe de données:
label
: spécifie un libellé facultatif pour le groupe de données. Pour en savoir plus, consultez les sectionslabel
etdescription
de cette page.description
: spécifie une description facultative du groupe de données, qui permet d'expliquer son objectif et son mécanisme. Pour en savoir plus, consultez les sectionslabel
etdescription
de cette page.
Spécifiez les détails de la règle de mise en cache à l'aide des sous-paramètres datagroup
:
max_cache_age
: spécifie une chaîne qui définit une période. Lorsque l'ancienneté du cache d'une requête dépasse la période, Looker invalide le cache. La prochaine fois que la requête sera émise, Looker l'envoie à la base de données pour obtenir de nouveaux résultats. Pour en savoir plus, consultez la sectionmax_cache_age
de cette page.sql_trigger
: spécifie une requête SQL qui renvoie une ligne avec une colonne. Si la valeur renvoyée par la requête est différente des résultats précédents, le groupe de données passe à l'état déclenché. Pour en savoir plus, consultez la sectionsql_trigger
de cette page.interval_trigger
: spécifie un calendrier de déclenchement du groupe de données, tel que"24 hours"
. Pour en savoir plus, consultez la sectioninterval_trigger
de cette page.
La meilleure solution consiste souvent à utiliser max_cache_age
en combinaison avec sql_trigger
ou interval_trigger
. Spécifiez une valeur sql_trigger
ou interval_trigger
qui correspond au chargement de données (ETL) dans votre base de données, puis une valeur max_cache_age
qui invalidera les anciennes données en cas d'échec de l'ETL. Le paramètre max_cache_age
garantit que si le cache d'un groupe de données n'est pas vidé par sql_trigger
ou interval_trigger
, les entrées de cache expirent un certain temps. De cette manière, le mode de défaillance d'un groupe de données consiste à interroger la base de données plutôt qu'à diffuser des données obsolètes à partir du cache Looker.
Un groupe de données ne peut pas contenir à la fois les paramètres
sql_trigger
etinterval_trigger
. Si vous définissez un groupe de données avec les deux paramètres, le groupe de données utilisera la valeurinterval_trigger
et ignorera la valeursql_trigger
, car le paramètresql_trigger
nécessite l'utilisation de ressources de base de données lors de l'interrogation de la base de données.Pour les connexions utilisant des attributs utilisateur pour spécifier les paramètres de connexion, vous devez créer une connexion distincte à l'aide des champs de remplacement du champ PDT si vous souhaitez définir une règle de mise en cache du groupe de données à l'aide d'un déclencheur de requête SQL.
Sans les exceptions PDT, vous pouvez toujours utiliser un groupe de données pour le modèle et ses explorations, à condition de définir la règle de mise en cache du groupe de données en utilisant uniquementmax_cache_age
, et nonsql_trigger
.
max_cache_age
Le paramètre max_cache_age
spécifie une chaîne contenant un entier suivi de "secondes", "minutes" ou "heures". Cette période correspond à la période maximale d'utilisation des résultats mis en cache par les requêtes Explorer utilisant le groupe de données.
Lorsque l'ancienneté du cache d'une requête dépasse la valeur max_cache_age
, Looker invalide le cache. La prochaine fois que la requête sera émise, Looker l'envoie à la base de données pour obtenir de nouveaux résultats.
Lorsque l'ancienneté du cache d'une requête dépasse la valeur max_cache_age
, Looker invalide le cache. La prochaine fois que la requête sera émise, Looker l'envoie à la base de données pour obtenir de nouveaux résultats. Consultez la page de documentation Mettre en cache des requêtes et recréer des PDT à l'aide de groupes de données pour en savoir plus sur la durée de stockage des données dans le cache.
Si la fonctionnalité Labs de Looker des tableaux de bord instantanés est activée, les requêtes exécutées à partir d'un tableau de bord seront toujours exécutées sur la base de données. Les données des exécutions précédentes seront affichées sur le tableau de bord jusqu'à ce que les résultats de requête soient renvoyés, quelle que soit la valeur max_cache_age
.
Le paramètre max_cache_age
ne définit que lorsque le cache n'est pas valide ; il ne déclenche pas la recompilation des PDT. Si vous définissez un groupe de données contenant uniquement max_cache_age
, vous recevrez un avertissement de validation LookML si des tables dérivées sont attribuées au groupe de données. Si vous laissez une table dérivée attribuée à un groupe de données avec seulement un paramètre max_cache_age
, la table dérivée est créée lors de la première requête, mais la table dérivée reste indéfiniment dans le schéma de travail et n'est jamais recompilée, même si elle est de nouveau interrogée. Si vous avez l'intention d'effectuer une recompilation sur un PDT à un intervalle de temps spécifique, vous devez ajouter un paramètre interval_trigger
à votre groupe de données pour définir un calendrier de recompilation.
sql_trigger
Utilisez le paramètre sql_trigger
pour spécifier une requête SQL qui renvoie exactement une ligne avec une colonne. Looker exécute la requête SQL à des intervalles spécifiés dans le champ PDT et planification des opérations de maintenance des groupes de données de la connexion à la base de données. Si la requête renvoie une valeur différente de celle du résultat précédent, le groupe de données passe à l'état déclenché. Une fois le groupe de données déclenché, Looker recompile tous les PDT avec ce groupe de données spécifié dans leur paramètre datagroup_trigger
. Une fois la recompilation terminée, le groupe de données est prêt et Looker invalide les résultats mis en cache de toute exploration utilisant ce groupe de données.
En règle générale, sql_trigger
spécifie une requête SQL qui indique le moment où un nouveau chargement de données (ETL) est effectué, par exemple en interrogeant max(ID)
dans une table. Vous pouvez également utiliser sql_trigger
pour spécifier une heure précise de la journée en interrogeant la date actuelle et en ajoutant des heures supplémentaires à cet horodatage si nécessaire pour atteindre l'heure souhaitée, par exemple 4h.
Looker n'effectue pas de conversion de fuseau horaire pour
sql_trigger
. Si vous souhaitez déclencher votre groupe de données à un moment précis de la journée, définissez le déclencheur dans le fuseau horaire pour lequel votre base de données est configurée.
Consultez ces exemples dans le paramètre sql_trigger
pour obtenir des idées sur la configuration de requêtes SQL permettant de déclencher un groupe de données.
interval_trigger
Vous pouvez utiliser le sous-paramètre facultatif interval_trigger
pour spécifier la durée de la recompilation. Dans le paramètre interval_trigger
, vous transmettez une chaîne contenant un entier suivi de "secondes", "minutes" ou "heures".
label
et description
Vous pouvez utiliser les sous-paramètres facultatifs label
et description
pour ajouter une étiquette personnalisée et une description du groupe de données. Vous pouvez également localiser ces sous-paramètres à l'aide de fichiers de chaînes régionaux.
Ces sous-paramètres sont affichés sur la page Groupes de données de la section Base de données du panneau Admin. Pour en savoir plus sur l'affichage de ces paramètres, consultez la page Paramètres d'administration – Groupes de données.
Examples
Les exemples suivants mettent en évidence les cas d'utilisation de datagroup
, y compris:
- Créer une règle de mise en cache pour récupérer les nouveaux résultats
- Créer un groupe de données pour planifier les livraisons le dernier jour de chaque mois
- Utiliser un groupe de données en cascade
- Partager des groupes de données entre des fichiers de modèle
Créer une règle de mise en cache pour récupérer les nouveaux résultats chaque fois que de nouvelles données sont disponibles ou au moins toutes les 24 heures
Pour créer une règle de mise en cache permettant de récupérer les nouveaux résultats chaque fois que de nouvelles données sont disponibles ou au moins toutes les 24 heures:
- Utilisez le groupe de données
orders_datagroup
(dans le fichier de modèle) pour nommer la règle de mise en cache. - Utilisez le paramètre
sql_trigger
pour spécifier la requête indiquant que de nouvelles données sont disponibles:select max(id) from my_tablename
. Chaque fois que les données sont mises à jour, cette requête renvoie un nouveau numéro. - Utilisez le paramètre
max_cache_age
pour invalider les données si elles sont mises en cache depuis 24 heures. - Utilisez les paramètres facultatifs
label
etdescription
pour ajouter une étiquette personnalisée et une description du groupe de données.
datagroup: orders_datagroup {
sql_trigger: SELECT max(id) FROM my_tablename ;;
max_cache_age: "24 hours"
label: "ETL ID added"
description: "Triggered when new ID is added to ETL log"
}
Pour utiliser la règle de mise en cache orders_datagroup
par défaut pour les explorations d'un modèle, utilisez le paramètre persist_with
au niveau du modèle et spécifiez l'élément orders_datagroup
:
persist_with: orders_datagroup
Pour utiliser la règle de mise en cache orders_datagroup
pour une exploration spécifique, ajoutez le paramètre persist_with
sous le paramètre explore
, puis spécifiez orders_datagroup
. Si un groupe de données par défaut est spécifié au niveau du modèle, vous pouvez utiliser le paramètre persist_with
sous un explore
pour remplacer le paramètre par défaut.
explore: customer_facts {
persist_with: orders_datagroup
...
}
Pour utiliser la règle de mise en cache du groupe de données orders_datagroup
pour recréer un PDT, vous pouvez ajouter datagroup_trigger
sous le paramètre derived_table
et spécifier orders_datagroup
:
view: customer_order_facts {
derived_table: {
datagroup_trigger: orders_datagroup
...
}
}
Créer un groupe de données pour planifier les livraisons le dernier jour de chaque mois
Vous pouvez créer un planning pour envoyer vos contenus à la fin de chaque mois. Cependant, tous les mois ne comportent pas le même nombre de jours. Vous pouvez créer un groupe de données pour déclencher la diffusion de contenus à la fin de chaque mois, quel que soit le nombre de jours dans un mois donné.
- Créez un groupe de données à l'aide d'une instruction SQL qui se déclenchera à la fin de chaque mois:
datagroup: month_end_datagroup {
sql_trigger: SELECT (EXTRACT(MONTH FROM DATEADD( day, 1, GETDATE()))) ;;
description: "Triggered on the last day of each month"
}
Cet exemple est basé sur Redshift SQL et peut nécessiter de légères adaptations pour différentes bases de données.
Cette instruction SQL renvoie le mois de demain (le dernier jour du mois en cours, le mois suivant). Le groupe de données sera donc déclenché. Tous les deux jours, le même mois a lieu demain. Le groupe de données n'est donc pas déclenché.
- Sélectionnez le groupe de données dans une nouvelle planification ou une planification existante.
Les planifications basées sur des groupes de données ne sont envoyées qu'une fois le processus de régénération terminé pour tous les PDT qui sont conservés avec ce paramètre de groupe de données. Vous vous assurez ainsi que votre livraison inclut les données les plus récentes.
Utiliser un groupe de données en cascade PDT
Dans le cas des tables dérivées en cascade persistantes, où une table dérivée persistante (PDT) est référencée dans la définition d'une autre, vous pouvez utiliser un groupe de données pour spécifier une stratégie de persistance de la chaîne de ce type de tables.
Par exemple, voici une partie d'un fichier de modèle qui définit un groupe de données appelé user_facts_etl
et une exploration appelée user_stuff
. La fonction user_stuff
Explorer continue avec le groupe de données user_facts_etl
:
datagroup: user_facts_etl {
sql_trigger: SELECT max(ID) FROM etl_jobs ;;
}
explore: user_stuff {
persist_with: user_facts_etl
from: user_facts_pdt_1
join: user_facts_pdt_2 {
...
}
...
}
La fonction Explorer de user_stuff
rejoint la vue user_facts_pdt_1
avec la vue user_facts_pdt_2
. Ces deux vues sont basées sur des PDT qui utilisent le groupe de données user_facts_etl
comme déclencheur de persistance. La table dérivée de user_facts_pdt_2
fait référence à la table dérivée de user_facts_pdt_1
, qui est donc en cascade (PDT). Voici quelques exemples de LookML issus des fichiers de vue de ces PDT:
view: user_facts_pdt_1 {
derived_table: {
datagroup_trigger: user_facts_etl
explore_source: users {
column: customer_ID {field:users.id}
column: city {field:users.city}
...
}
}
}
view: user_facts_pdt_2 {
derived_table: {
sql:
SELECT ...
FROM ${users_facts_pdt_1.SQL_TABLE_NAME} ;;
datagroup_trigger: user_facts_etl
}
}
Si vous avez des PDT en cascade, vous devez vous assurer qu'ils ne comportent pas de règles de mise en cache de groupe de données incompatibles.
Le régénérateur Looker vérifie l'état et lance des recompilations de ces PDT comme suit:
- Par défaut, le régénérateur de Looker vérifie la requête
sql_trigger
du groupe de données toutes les cinq minutes (votre administrateur Looker peut spécifier cet intervalle à l'aide du paramètre PDT et planification des groupes de données de votre connexion à la base de données). - Si la valeur renvoyée par la requête
sql_trigger
est différente du résultat de la vérification précédente, le groupe de données passe à l'état déclenché. Dans cet exemple, si la tableetl_jobs
a une nouvelle valeurID
, le groupe de donnéesuser_facts_etl
est déclenché. Une fois le groupe de données
user_facts_etl
déclenché, le régénérateur Looker recompile tous les disques persistants qui utilisent le groupe de données (en d'autres termes, tous les disques persistants définis avecdatagroup_trigger: user_facts_etl
). Dans cet exemple, le régénérateur recompileuser_facts_pdt_1
, puis reconstruituser_facts_pdt_2
.Lorsque les PDT partagent le même
datagroup_trigger
, le générateur génère à nouveau les PDT par ordre de dépendance, en créant d'abord des tables référencées par d'autres tables. Consultez la page Tables dérivées dans Looker pour en savoir plus sur la recompilation de tables dérivées en cascade par Looker.Lorsque le régénérateur recompile tous les PDT du groupe de données, il retire le groupe de données
user_facts_etl
de l'état déclenché.Une fois que le groupe de données
user_facts_etl
n'est plus à l'état déclenché, Looker réinitialise le cache pour tous les modèles et explorations qui utilisent le groupe de donnéesuser_facts_etl
(en d'autres termes, tous les modèles et explorations définis avecpersist_with: user_facts_etl
). Dans cet exemple, Looker réinitialise le cache pour l'explorationuser_stuff
.Toutes les diffusions de contenu planifiées basées sur le groupe de données
user_facts_etl
seront envoyées. Dans cet exemple, si une livraison planifiée inclut une requête de la fonction Exploreruser_stuff
, la requête programmée sera extraite de la base de données pour obtenir de nouveaux résultats.
Partager des groupes de données entre des fichiers de modèle
Cet exemple montre comment partager des groupes de données avec plusieurs fichiers de modèle. Cette approche présente un avantage : si vous devez modifier un groupe de données, vous devez le modifier à un seul endroit pour que ces modifications soient appliquées à tous vos modèles.
Pour partager des groupes de données avec plusieurs fichiers de modèle, commencez par créer un fichier distinct contenant uniquement les groupes de données, puis utilisez le paramètre include
pour include
le fichier des groupes de données dans vos fichiers de modèle.
Créer un fichier de groupes de données
Créez un fichier .lkml
distinct pour contenir vos groupes de données. Vous pouvez créer un fichier de groupe de données .lkml
de la même manière qu'un fichier Explorer .lkml
distinct.
Dans cet exemple, le fichier de groupes de données s'appelle datagroups.lkml
:
datagroup: daily {
max_cache_age: "24 hours"
sql_trigger: SELECT CURRENT_DATE();;
}
Inclure le fichier de groupes de données dans vos fichiers de modèle
Maintenant que vous avez créé le fichier de groupes de données, vous pouvez l'include
dans les deux modèles et utiliser persist_with
pour appliquer le groupe de données à des explorations individuelles dans vos modèles ou pour appliquer le groupe de données à toutes les explorations d'un modèle.
Par exemple, les deux fichiers de modèle suivants include
le fichier datagroups.lkml
.
Ce fichier s'appelle ecommerce.model.lkml
. Le groupe de données daily
est utilisé au niveau explore
afin qu'il ne s'applique qu'à orders
:
include: "datagroups.model.lkml"
connection: "database1"
explore: orders {
persist_with: daily
}
Le fichier suivant est nommé inventory.model.lkml
. Le groupe de données daily
est utilisé au niveau model
afin qu'il s'applique à toutes les explorations du fichier de modèle:
include: "datagroups.model.lkml"
connection: "database2"
persist_with: daily
explore: items {
}
explore: products {
}