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

Ces bonnes pratiques reflètent les recommandations partagées par une équipe interfonctionnelle de chercheurs expérimentés. Ces informations sont le fruit d'années d'expérience avec les clients de Looker, de la mise en œuvre à la réussite à long terme. Ces pratiques sont conçues pour s'appliquer à la plupart des utilisateurs et des situations. Toutefois, comme toujours, veuillez faire preuve de bon sens lorsque vous implémentez l'une des suggestions de cette page.

Cette page fournit des recommandations pour écrire un 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

Des opérateurs de substitution doivent être utilisés 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 physiques. Toute définition ultérieure devant 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 référencez la table de base de données sous-jacente, pour toutes les dimensions de base qui extraient des données directement des colonnes de base de données sous-jacentes. Si un schéma ou un nom de table change, un développeur peut mettre à jour le schéma ou le nom de la table au même endroit (dans le paramètre sql_table_name) et le propager dans le reste du code.

Utilisez la syntaxe ${field_name} pour faire référence à des dimensions ou des mesures déjà définies dans le code LookML. Si le nom d'une colonne change, cette modification ne doit être mise à jour que dans le paramètre sql de la ou des mesures de base. Cette modification sera alors automatiquement appliqué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 devrez modifier la référence dans Looker. L'utilisation de ${field_name} vous permet de ne 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 la syntaxe ${TABLE}.usersid dans le paramètre sql, vous devrez mettre à jour le paramètre sql pour les trois champs.

Avec 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 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ées, que ce soit avec le paramètre fields ou dans des champs d'analyse détaillée, doivent être intégrées à des ensembles afin de créer un seul emplacement dans le modèle où cette liste de champs peut être mise à jour ou les références de champ 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 éléments de base, et utilisez le paramètre extends pour combiner des objets de différentes manières sans répéter le code. Pour en savoir plus et obtenir des exemples de réutilisation de code, consultez la page de documentation Réutiliser du code avec extends. 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 les extensions pour définir des jointures.

Assurez la cohérence entre les explorations en évitant de répéter le code à plusieurs endroits. Pour découvrir d'autres façons de procéder, consultez le post de la communauté Looker expliquant comment éviter les incohérences entre les explorations.

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

Définissez des calques de carte personnalisés de manière centralisée dans un fichier LookML appelé map_layers.lkml. Pour le créer, suivez la documentation de Looker sur les fichiers de projet. Ce fichier peut ensuite être inclus si nécessaire entre les modèles. Vous pouvez également ajouter des fichiers JSON directement au dépôt en faisant glisser et déposer 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 les formats de valeur personnalisée de manière 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 directives de développement pour faciliter le développement et la mise à l'échelle d'un modèle LookML. Consultez l'article de la communauté Looker sur des exemples de directives 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:

  • Organisation claire des 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