Bonne pratique: Écrire un code LookML durable et facile à gérer

Ces bonnes pratiques reflètent les recommandations partagées par une équipe pluridisciplinaire composée de spécialistes Looker expérimentés. Ces insights sont le fruit d'années d'expérience avec les clients Looker, de l'implémentation à la réussite à long terme. Ces pratiques sont conçues pour être adaptées à la plupart des utilisateurs et des situations. Toutefois, n'oubliez pas de faire preuve de discernement lorsque vous mettez en œuvre l'une des suggestions présentées sur cette page.

Cette page fournit des recommandations pour écrire du code LookML durable et facile à gérer. Ces recommandations sont décrites plus en détail dans les sections suivantes:

Utiliser des opérateurs de substitution

Vous devez utiliser des opérateurs de substitution dans tous les fichiers LookML. Un modèle LookML ne doit avoir qu'un seul point de référence pour chaque objet du modèle de données physique. Toute définition ultérieure qui doit faire référence à cet objet doit le faire en pointant vers l'objet LookML déjà défini.

Utilisez la syntaxe ${TABLE}.field_name lorsque vous faites référence à la table de base de données sous-jacente, pour toutes les dimensions de base qui extraient des données directement des colonnes de la base de données sous-jacentes. Si un schéma ou un nom de table change, cela permet aux développeurs de mettre à jour le nom du schéma ou de la table au même endroit (dans le paramètre sql_table_name) et de le faire propager dans le reste du code.

Utilisez la syntaxe ${field_name} pour faire référence à des dimensions ou mesures déjà définies dans le code LookML. Si le nom d'une colonne change, ce changement ne devra être mis à jour que dans le paramètre sql de la dimension ou des mesures de base. Cette modification sera ensuite automatiquement propagée à tous les autres champs qui font référence à la colonne. Par exemple, si le nom d'une colonne de votre base de données passe de usersid à users_id, vous devez modifier la référence dans Looker. Si vous utilisez ${field_name}, vous n'avez besoin de mettre à jour qu'une seule ligne.

Lorsque plusieurs dimensions et mesures font référence à un champ LookML existant avec ${TABLE}.field_name, de nombreuses modifications sont nécessaires. Prenons l'exemple des mesures this_week_count et this_month_count dans l'exemple de code LookML suivant:

dimension: usersid {
  type: number
  sql: ${TABLE}.usersid ;; # Change here
}

measure: this_week_count {
  type: count_distinct
  sql: ${TABLE}.usersid ;; # Change here
  filters: [created_date: "7 days"]
}

measure: this_month_count {
  type: count_distinct
  sql: ${TABLE}.usersid ;; # Change here
  filters: [created_date: "1 month"]
}

Étant donné que this_week_count et this_month_count utilisent tous deux la syntaxe ${TABLE}.usersid dans le paramètre sql, vous devrez mettre à jour le paramètre sql pour les trois champs.

Pour la référence ${field_name}, une seule modification est nécessaire:

dimension: usersid {
  type: number
  sql: ${TABLE}.usersid ;; # Change here
}

measure: this_week_count {
  type: count_distinct
  sql: ${usersid} ;;       #Using ${field_name} to reference the LookML field `usersid`
  filters: [created_date: "7 days"]
}

measure: this_month_count {
  type: count_distinct
  sql: ${usersid} ;;       #Using ${field_name} to reference the LookML field `usersid`
  filters: [created_date: "1 month"]
}

Pour découvrir d'autres utilisations des opérateurs de substitution, consultez la page de documentation Intégrer le langage SQL et faire référence aux objets LookML.

Définir des ensembles de champs

Utilisez des ensembles pour gérer des listes de champs réutilisables dans le modèle. Toutes les listes de champs répétés, avec le paramètre fields ou dans des champs d'analyse, doivent être incorporées dans des ensembles afin de créer un seul endroit dans le modèle où cette liste de champs peut être mise à jour ou où les références de champ peuvent être modifiées. Pour en savoir plus sur les ensembles, consultez la page de documentation du paramètre set.

Éviter de répéter le code

Considérez les objets LookML comme des blocs de construction et utilisez le paramètre extends pour combiner des objets de différentes manières sans répéter le code. Pour obtenir des informations détaillées et des exemples sur la réutilisation de code, consultez la page de documentation Réutiliser du code avec des extensions. Vous trouverez d'autres exemples sur les pages de documentation des paramètres extends (pour les vues) et extends (pour les explorations), ainsi que dans le post destiné à la communauté Utiliser des extensions pour définir des jointures.

Préservez la cohérence entre les explorations en évitant de répéter le code à plusieurs endroits. Pour obtenir des idées supplémentaires, consultez le post de la communauté Looker sur la prévention des incohérences entre les explorations.

Regrouper des éléments tels que les calques de carte et les formats de valeur

Centralisez la définition de calques de carte personnalisés dans un fichier LookML appelé map_layers.lkml, que vous pouvez créer en suivant la documentation de Looker sur les fichiers de projet. Ce fichier peut ensuite être inclus dans tous les modèles si nécessaire. Vous pouvez également ajouter des fichiers JSON directement dans le dépôt en glissant-déposant des fichiers de données dans votre projet LookML, puis les référencer dans le modèle.

Par exemple, supposons que vous ayez un fichier de calques de carte, map_layers.base.lkml, contenant le code LookML suivant:

map_layer: example_africa {
  file: "africa_file_name.json"
  property_key: "geounit"
}

map_layer: example_asia {
  file: "asia_file_name.json"
  property_key: "geounit"
}

map_layer: example_europe {
  file: "europe_file_name.json"
  property_key: "geounit"
}

Vous pouvez inclure le fichier de calques de carte map_layers.base.lkml dans n'importe quel modèle du projet en ajoutant le code LookML include: "map_layers.base.lkml" au fichier de modèle souhaité.

Définissez tous les formats de valeurs personnalisées de façon centralisée dans le modèle. Utilisez le paramètre named_value_format pour définir des formats personnalisés dans le modèle, puis référencez-les à l'aide du paramètre value_format_name dans les dimensions et les mesures.

Créer des consignes de développement

Définir des consignes de développement afin de faciliter le développement et la mise à l'échelle d'un modèle LookML. Consultez le post de la communauté Looker concernant des exemples de consignes de développement LookML pour découvrir un exemple de liste de consignes de développement. Les consignes les plus courantes incluent les exigences suivantes:

  • Organiser clairement les fichiers LookML afin qu'ils soient cohérents et faciles à parcourir
  • Utilisation de commentaires dans les vues et les modèles pour ajouter du contexte au code LookML écrit
  • Créer de la documentation dans Looker à l'aide de fichiers Markdown