Utilisation
view: my_view {
derived_table: {
increment_key: "created_date"
...
}
}
|
Hiérarchie
increment_key- ou - increment_key |
Valeur par défaut
Aucun
Acceptation
Nom d'une dimension LookML temporelle
Règles spéciales
increment_key n'est compatible qu'avec les tables persistantes et uniquement pour des dialectes spécifiques
|
Définition
Vous pouvez créer des augmentations de tables PDT incrémentielles dans votre projet si votre dialecte les prend en charge. Une augmentation de table PDT est une table dérivée persistante (PDT) créée par Looker en annexant des données à jour à la table, au lieu de régénérer la totalité de la table. Pour en savoir plus, consultez la page de documentation sur les augmentations de tables PDT.
increment_key est le paramètre qui transforme une table PDT en augmentation de table PDT en spécifiant l'incrément de temps pour lequel les données à jour doivent être interrogées et ajoutées à la table PDT. En plus de increment_key, vous pouvez éventuellement fournir un increment_offset pour spécifier le nombre de périodes précédentes (selon la granularité de la clé d'incrémentation) qui sont régénérées pour représenter des données tardives.
La
increment_keyd'une table PDT est indépendante du déclencheur de persistance de la table PDT. Pour obtenir des exemples de scénarios présentant l'interaction deincrement_key,increment_offsetet la stratégie de persistance, consultez la page de documentation sur les augmentations de tables PDT.Le param0} paramètre ne fonctionne qu'avec les dialectes compatibles et uniquement avec les tables qui ont une stratégie de persistance, telles que les tables PDT et les tables agrégées (qui sont un type de table PDT).
increment_key
La increment_key doit spécifier une dimension LookML temporelle :
- Pour les tables PDT basées sur LookML, la
increment_keydoit être basée sur une dimension LookML définie dans la vue sur laquelle laexplore_sourcede la table PDT est basée. Pour obtenir un exemple, consultez la section Créer une augmentation de table PDT basée sur LookML sur cette page. - Pour les tables agrégées, la
increment_keydoit être basée sur une dimension LookML définie dans la vue sur laquelle l'exploration de la table agrégée est basée. Pour obtenir un exemple, consultez la section Créer un tableau cumulé incrémental sur cette page. - Pour les PDT basées sur SQL, la
increment_keydoit être basée sur une dimension LookML définie dans le fichier d'affichage de la PDT. Pour obtenir un exemple, consultez la section Créer une augmentation de table PDT basée sur SQL sur cette page.
De plus, la increment_key doit être :
- une heure absolue tronquée, telle que le jour, le mois, l'année, le trimestre fiscal, etc. Les périodes telles que le jour de la semaine ne sont pas prises en charge.
- un horodatage qui augmente de manière prévisible avec de nouvelles données, comme la date de création de la commande. En d'autres termes, un horodatage ne doit être utilisé comme clé d'incrémentation que si les données les plus récentes ajoutées à la table comportent également l'horodatage le plus récent. Un horodatage tel que l'anniversaire de l'utilisateur ne fonctionnerait pas comme clé d'incrémentation, car un horodatage d'anniversaire n'augmente pas de manière fiable avec les nouveaux utilisateurs ajoutés à la table.
Créer une augmentation de table PDT basée sur LookML
Pour transformer une table PDT basée sur LookML (native) en augmentation de table PDT, utilisez le paramètre increment_key pour spécifier le nom d'une dimension LookML temporelle. La dimension doit être définie dans la vue sur laquelle la table PDTexplore_source est basée.
Voici, par exemple, un fichier d'affichage pour une table PDT basée sur LookML, à l'aide du paramètre LookML explore_source. La table PDT est créée à partir de l'exploration flights, qui dans ce cas est basée sur la vue flights :
view: flights_lookml_incremental_pdt {
derived_table: {
indexes: ["id"]
increment_key: "departure_date"
increment_offset: 3
datagroup_trigger: flights_default_datagroup
distribution_style: all
explore_source: flights {
column: id {}
column: carrier {}
column: departure_date {}
}
}
dimension: id {
type: number
}
dimension: carrier {
type: string
}
dimension: departure_date {
type: date
}
}
Cette table sera générée intégralement lorsque la première requête sera exécutée sur elle. Après cela, la table PDT sera régénérée en augmentations d'une journée (increment_key: departure_date), en remontant trois jours en arrière (increment_offset: 3).
La dimension departure_date est en fait la période date temporelle du groupe de dimensions departure. Pour une présentation du fonctionnement des groupes de dimensions, consultez la page relative au paramètre dimension_group de la documentation. Le groupe de dimensions et la période sont tous deux définis par la vue flights, qui est la explore_source de cette table PDT. Voici comment le groupe de dimensions departure est défini dans le fichier d'affichage flights :
...
dimension_group: departure {
type: time
timeframes: [
raw,
date,
week,
month,
year
]
sql: ${TABLE}.dep_time ;;
}
...
Créer une augmentation de table PDT basée sur SQL
Looker vous suggère d'utiliser des tables dérivées basées sur LookML (natives) comme base pour les augmentations de tables PDT, plutôt que des tables dérivées basées sur SQL. Les tables dérivées natives gèrent de manière inhérente la logique complexe requise pour les augmentations de tables PDT. Les tables PDT basées sur SQL reposent sur une logique créée manuellement, qui est sujette aux erreurs lorsqu'elle est utilisée avec des fonctionnalités très complexes.
Pour définir une augmentation de table PDT basée sur SQL, utilisez increment_key et (facultativement) increment_offset comme vous le feriez avec une table PDT basée sur LookML. Toutefois, comme les tables PDT basées sur SQL ne sont pas basées sur des fichiers de vue LookML, des exigences supplémentaires sont nécessaires pour transformer une table PDT basée sur SQL en augmentation de table PDT :
- Vous devez baser la clé d'incrémentation sur une dimension LookML temporelle que vous définissez dans le fichier d'affichage de la table PDT.
- Vous devez fournir un
filtre Liquid dans la table PDT pour connecter la clé d'incrémentation à la colonne temporelle de la base de données sur laquelle la clé d'incrémentation est basée. Le filtre{% incrementcondition %} doit spécifier le nom de la colonne dans votre base de données, et non un alias SQL ni le nom d'une dimension basée sur la colonne (voir l'exemple suivant).{% incrementcondition %}
Le format de base du filtre Liquid est le suivant :
WHERE {% incrementcondition %} database_table_name.database_time_column {% endincrementcondition %}
Voici, par exemple, le fichier de vue d'une table PDT basée sur SQL qui est régénérée en augmentations d'une journée (increment_key: "dep_date"), où les données des trois derniers jours seront ajoutées à la table lors de sa régénération (increment_offset: 3) :
view: sql_based_incremental_date_pdt {
derived_table: {
datagroup_trigger: flights_default_datagroup
increment_key: "dep_date"
increment_offset: 3
distribution_style: all
sql: SELECT
flights.id2 AS "id",
flights.origin AS "origin",
DATE(flights.leaving_time ) AS "departure"
FROM public.flights AS flights
WHERE {% incrementcondition %} flights.leaving_time {% endincrementcondition %}
;;
}
dimension_group: dep {
type: time
timeframes: [date, week, month, year]
datatype: date
sql: ${TABLE}.departure
;;
}
dimension: id {
type: number
}
dimension: origin {
type: string
}
}
Notez les points suivants à propos de cet exemple :
- La table dérivée est basée sur une instruction SQL. L'instruction SQL crée une colonne dans la table dérivée basée sur la colonne
flights.leaving_timede la base de données. La colonne reçoit l'aliasdeparture. - Le fichier d'affichage de la table PDT définit un groupe de dimensions appelé
dep.- Le paramètre
sqldu groupe de dimensions indique que le groupe de dimensions est basé sur la colonnedeparturede la table dérivée. - Le paramètre
timeframesdu groupe de dimensions inclutdatecomme période.
- Le paramètre
- La table dérivée
increment_keyutilise la dimensiondep_date, qui est une dimension basée sur la périodedatedu groupe de dimensionsdep. Pour une présentation du fonctionnement des groupes de dimensions, consultez la page relative au paramètredimension_groupde la documentation. - Le filtre Liquid
est utilisé pour connecter la clé d'incrémentation à la colonne{% incrementcondition %}flights.leaving_timede la base de données.- Le
doit spécifier le nom d'une colonne{% incrementcondition %}TIMESTAMPdans votre base de données (ou il doit être évalué comme une colonneTIMESTAMPdans votre base de données). - Le
doit être évalué par rapport à ce qui est disponible dans la clause{% incrementcondition %}FROMqui définit votre table PDT, comme les colonnes de la table spécifiée dans la clauseFROM. Le ne peut pas faire référence au résultat de l'instruction{% incrementcondition %}SELECT, comme un alias qui a été attribué à une colonne dans l'instruction SQL, ou le nom d'une dimension basée sur la colonne. Dans cet exemple, le est{% incrementcondition %}flights.leaving_time. Étant donné que la clauseFROMspécifie la tableflights, le peut faire référence aux colonnes de la table{% incrementcondition %}flights. - Le
doit pointer vers la même colonne de base de données que celle utilisée pour la clé d'incrémentation. Dans cet exemple, la clé d'incrémentation est{% incrementcondition %}dep_date, une dimension définie par la colonnedeparturede la table PDT, qui est un alias de la colonneflights.leaving_timede la base de données. Par conséquent, le filtre pointe versflights.leaving_time:
- Le
WHERE {% incrementcondition %} flights.leaving_time {% endincrementcondition %}
Vous pouvez ajouter à la clause WHERE pour créer d'autres filtres. Par exemple, si la table de base de données remonte à de nombreuses années, vous pouvez créer un filtre afin que la création initiale de la table PDT n'utilise que les données postérieures à une certaine date. Ce WHERE crée une table PDT avec des données postérieures au 1er janvier 2020 :
WHERE {% incrementcondition %} flights.leaving_time {% endincrementcondition %}
AND flights.leaving_time > '2020-01-01'
Vous pouvez également utiliser la clause WHERE pour analyser les données en SQL dans un horodatage, puis lui attribuer un alias. Par exemple, l'augmentation de table PDT suivante utilise un incrément de 15 minutes basé sur text_column, qui correspond à des données de chaîne analysées en données d'horodatage :
view: sql_based_incremental_15min_pdt {
derived_table: {
datagroup_trigger: flights_default_datagroup
increment_key: "event_minute15"
increment_offset: 1
sql: SELECT PARSE_TIMESTAMP("%c", flights.text_column) as parsed_timestamp_column,
flights.id2 AS "id",
flights.origin AS "origin",
FROM public.flights AS flights
WHERE {% incrementcondition %} PARSE_TIMESTAMP("%c", flights.text_column)
{% endincrementcondition %} ;;
}
dimension_group: event {
type: time
timeframes: [raw, minute15, hour, date, week, month, year]
datatype: timestamp
sql: ${TABLE}.parsed_timestamp_column ;;
}
dimension: id {
type: number
}
dimension: origin {
type: string
}
}
Vous pouvez utiliser l'alias pour le SQL dans la définition sql du groupe de dimensions, mais vous devez utiliser l'expression SQL dans la clause WHERE. Ensuite, comme minute15 a été configuré comme période dans le groupe de dimensions event, vous pouvez utiliser event_minute15 comme clé d'incrémentation pour obtenir un incrément de 15 minutes pour la table PDT.
Créer une table agrégée incrémentale
Pour créer un tableau cumulé incrémental, ajoutez increment_key et (facultativement) increment_offset sous le paramètre materialization du paramètre aggregate_table. Utilisez le paramètre increment_key pour spécifier le nom d'une dimension LookML temporelle. La dimension doit être définie dans la vue sur laquelle l'exploration de la table agrégée est basée.
Par exemple, ce tableau cumulé est basé sur l'exploration accidents, qui dans ce cas est basée sur la vue accidents. La table agrégée est régénérée en augmentations d'une semaine (increment_key: event_week), en remontant deux semaines en arrière (increment_offset: 2) :
explore: accidents {
. . .
aggregate_table: accidents_daily {
query: {
dimensions: [event_date, id, weather_condition]
measures: [count]
}
materialization: {
datagroup_trigger: flights_default_datagroup
increment_key: "event_week"
increment_offset: 2
}
}
}
La clé d'incrémentation utilise la dimension event_week, qui est basée sur la période week timeframe du groupe de dimensions event. Pour une présentation du fonctionnement des groupes de dimensions, consultez la page relative au paramètre dimension_group de la documentation. Le groupe de dimensions et la période sont tous deux définis par la vue accidents :
. . .
view: accidents {
. . .
dimension_group: event {
type: time
timeframes: [
raw,
date,
week,
year
]
sql: ${TABLE}.event_date ;;
}
. . .
}
Éléments à prendre en compte
Optimiser la table source pour les requêtes temporelles
Assurez-vous que la table source de l'augmentation de table PDT est optimisée pour les requêtes temporelles. En particulier, la colonne temporelle utilisée pour la clé d'incrémentation doit avoir une stratégie d'optimisation, comprenant par exemple un partitionnement, des clés de tri, des index, ou toute stratégie d'optimisation prise en charge par votre dialecte. L'optimisation de la table source est fortement recommandée car, à chaque mise à jour de l'augmentation de table, Looker demande à la table source de déterminer les dernières valeurs de la colonne temporelle utilisée pour la clé d'incrémentation. Si la table source n'est pas optimisée pour ces requêtes, la requête des dernières valeurs par Looker peut être lente et coûteuse.
Dialectes de base de données pris en charge pour les augmentations de tables PDT
Pour que Looker prenne en charge les tables PDT incrémentielles dans votre projet Looker, votre dialecte de base de données doit être compatible avec les commandes LDD (langage de définition de données) qui permettent de supprimer et d'insérer des lignes.
Le tableau suivant répertorie les dialectes prenant en charge les augmentations de tables PDT dans la dernière version de Looker :
| Dialecte | Compatibilité |
|---|---|
| Actian Avalanche | |
| Amazon Athena | |
| Amazon Aurora MySQL | |
| Amazon Redshift | |
| Amazon Redshift 2.1+ | |
| Amazon Redshift Serverless 2.1+ | |
| Apache Druid | |
| Apache Druid 0.13.x - 0.17.x | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| Cloudera Impala 3.1+ | |
| Cloudera Impala 3.1+ with Native Driver | |
| Cloudera Impala with Native Driver | |
| DataVirtuality | |
| Databricks | |
| Denodo 7 | |
| Denodo 8 & 9 | |
| Dremio | |
| Dremio 11+ | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| Google Cloud AlloyDB for PostgreSQL | |
| Google Cloud PostgreSQL | |
| Google Cloud SQL | |
| Google Spanner | |
| Greenplum | |
| HyperSQL | |
| IBM Netezza | |
| MariaDB | |
| Microsoft Azure PostgreSQL | |
| Microsoft Azure SQL Database | |
| Microsoft Azure Synapse Analytics | |
| Microsoft SQL Server 2008+ | |
| Microsoft SQL Server 2012+ | |
| Microsoft SQL Server 2016 | |
| Microsoft SQL Server 2017+ | |
| MongoBI | |
| MongoSQL | |
| MySQL | |
| MySQL 8.0.12+ | |
| Oracle | |
| Oracle ADWC | |
| PostgreSQL 9.5+ | |
| PostgreSQL pre-9.5 | |
| PrestoDB | |
| PrestoSQL | |
| SAP HANA | |
| SAP HANA 2+ | |
| SingleStore | |
| SingleStore 7+ | |
| Snowflake | |
| Teradata | |
| Trino | |
| Vector | |
| Vertica |