Maximiser la réutilisation du code avec LookML DRY : personnaliser une seule vue de base pour plusieurs cas d'utilisation

Imaginez que de nombreux utilisateurs partagent une même exploration, mais que leurs cas d'utilisation diffèrent en fonction de leur équipe ou de leur région. Chaque utilisateur ne souhaite voir que les champs qui s'appliquent à ses cas d'utilisation uniques. Pour répondre aux différents besoins de vos utilisateurs, vous pouvez utiliser les améliorations de LookML afin de personnaliser les vues et les explorations existantes sans avoir à modifier le code LookML d'origine. Vous pouvez ensuite inclure ces vues et explorations affinées dans des fichiers de modèle dédiés et distincts, personnalisés en fonction des différents besoins de vos utilisateurs.

Cette page fournit un exemple d'utilisation des améliorations LookML pour personnaliser une vue de base unique et créer des explorations distinctes pour deux équipes différentes de votre entreprise. Il inclut également des exemples de masquage et d'ajout de champs dans le contenu affiné.

Composants

Prérequis

Exemple : Créer plusieurs explorations personnalisées à partir de la même vue de base

Supposons que vous disposiez d'une exploration Ventes contenant des données sur les clients, les achats, la livraison et la zone géographique. Les équipes marketing et logistique de votre entreprise doivent toutes deux explorer ces données, mais elles se concentrent chacune sur des champs différents dans l'exploration Ventes.

Vous souhaitez n'afficher que les champs utiles à chaque équipe dans le sélecteur de champs d'exploration pour faciliter l'exploration. Pour ce faire, vous pouvez définir deux affinements différents de l'exploration Ventes et de la vue sales sur laquelle elle est basée. L'exploration de l'équipe marketing peut afficher des champs liés aux clients et aux tendances d'achat, tandis que l'exploration de l'équipe logistique peut afficher des champs liés à la livraison et à l'emplacement. Vous pouvez également ajouter des champs spécifiques aux besoins de chaque équipe à chaque vue affinée.

Actuellement, le sélecteur de champs de l'exploration Ventes affiche tous les champs de la vue Ventes :

La vue "Ventes" inclut des champs pour les dates de création, de livraison, de retour et d'expédition, ainsi que l'ID, le bénéfice, l'état, le prix de vente moyen et total, et le nombre.

Le sélecteur de champs affiche également tous les champs de la vue Users jointe:

La vue "Utilisateurs" inclut des champs pour l'âge, la ville, le pays, la date de création, l'adresse e-mail, le prénom, le nom, l'ID, l'État, le code postal et le nombre.

Vous pouvez affiner la vue sales pour créer deux explorations distinctes contenant uniquement les champs présentant un intérêt pour les équipes marketing et logistique. Pour ce faire, procédez comme suit:

  1. Créez un fichier LookML, dans cet exemple un fichier nommé base_analysis.lkml, qui contient le code LookML de l'exploration Ventes, basée sur la vue sales et la vue users jointe. Comme vous souhaitez utiliser l'exploration sales de base et ses vues correspondantes pour créer une exploration personnalisée pour chaque équipe, vous pouvez définir tous les champs et propriétés partagés dans un seul emplacement, par exemple dans un seul fichier.

    
    # base_analysis.lkml
    
    include: "views/sales.view.lkml"
    include: "views/inventory_items.view.lkml"
    include: "views/users.view.lkml"
    
    explore: sales {
      join: inventory_items {
        type: left_outer
        sql_on: ${sales.inventory_item_id} = ${inventory_items.id} ;;
        relationship: many_to_one
      }
    
      join: users {
        type: left_outer
        sql_on: ${sales.user_id} = ${users.id} ;;
        relationship: many_to_one
      }
    }
    
  2. Créez deux fichiers distincts pour héberger les améliorations de l'exploration Ventes que vous définirez pour chaque équipe. Vous pouvez nommer les fichiers marketing_analysis.lkml et logistics_analysis.lkml. Le code LookML, présenté ci-dessous, affine l'exploration de base sales telle que définie dans le fichier base_analysis.lkml, présenté précédemment, pour ajouter l'étiquette Analyse des ventes pour l'équipe marketing dans un nouveau fichier appelé marketing_analysis.lkml. L'instruction include: "/base/base_analysis.lkml" permet de référencer le contenu du fichier base_analysis.lkml dans le fichier marketing_analysis.lkml.

    
    # marketing_analysis.lkml
    
    include: "/base/base_analysis.lkml"
    
    explore: +sales {
      label: "Sales Analysis for Marketing Team"
    }
    
    
  3. Créez un fichier de modèle distinct pour chaque équipe, par exemple ecommerce_marketing.model et ecommerce_logistics.model. En hébergeant les différents affinements dans des modèles dédiés distincts pour chaque équipe, vous pouvez affiner le même ensemble de vues et d'explorations plusieurs fois sans écraser les personnalisations que vous avez apportées au cas d'utilisation d'une équipe. Consultez la page de documentation sur les filtres LookML pour en savoir plus.

  4. Avec le paramètre include, incluez marketing_analysis.lkml dans le modèle ecommerce_marketing.model et logistics_analysis.lkml dans le modèle ecommerce_logistics.model.

  5. Ajoutez des filtres supplémentaires aux fichiers marketing_analysis.lkml et logistics_analysis.lkml selon vos besoins. Par exemple, vous pouvez masquer les champs inutiles et ajouter de nouveaux champs aux explorations affinées de chaque équipe.

Un administrateur Looker peut également configurer l'accès au modèle pour chaque modèle dédié afin d'accorder à des équipes spécifiques un accès au niveau de l'exploration.

Masquage des champs inutiles des explorations affinées

Vous pouvez affiner la vue sales comme suit dans le fichier marketing_analysis.lkml pour masquer les groupes de dimensions Retourné, Expédié, Livré et Créé, ainsi que la dimension État, car ces champs ne sont pas utilisés par l'équipe marketing :


# marketing_analysis.lkml

include: "/base/base_analysis.lkml"

explore: +sales {
  label: "Sales Analysis for Marketing Team"
}

view: +sales
  dimension_group: returned {
    hidden: yes
  }

  dimension_group: shipped {
    hidden: yes
  }

  dimension_group: delivered {
    hidden: yes
  }

  dimension_group: created {
    hidden: yes
  }

  dimension: status {
    hidden: yes
  }
}

De même, vous pouvez utiliser le code LookML suivant dans le fichier logistics_analysis.lkml pour masquer les champs dont l'équipe logistique n'a pas besoin (comme Profit, Sale price et Average Sale price):


# logistics_analysis.lkml

include: "/base/base_analysis.lkml"

explore: +sales {
  label: "Sales Analysis for Logistics Team"
}

view: +sales {
  dimension: profit {
    hidden: yes
  }

  dimension: sale_price {
    hidden: yes
  }

  measure: average_sale_price {
    hidden: yes
  }
}

Étant donné que l'équipe logistique n'a pas besoin de voir des informations personnelles sur les clients, telles que leur nom, leur âge ou leur adresse e-mail, vous pouvez également ajouter un filtre pour la vue users jointe dans le fichier logistics_analysis.lkml afin de masquer ces champs de l'exploration:

  view: +users {
    dimension: age {
    hidden: yes
  }

  dimension: email {
    hidden: yes
  }

  dimension: first_name {
    hidden: yes
  }

  dimension: last_name {
    hidden: yes
  }

  dimension_group: created {
    hidden: yes
  }
}

Ajout de nouveaux champs aux explorations affinées

Vous pouvez également créer des champs qui intéressent l'équipe marketing dans la vue sales affinée. Par exemple, vous pouvez ajouter les champs Prix de vente moyen, Prix soldé total et Dépenses moyennes par utilisateur dans la vue sales améliorée:

La vue "Ventes" affiche l'ID, le bénéfice, le prix soldé et le nombre, ainsi que les nouveaux champs "Prix soldé moyen", "Dépense moyenne par utilisateur" et "Prix soldé total".

Vous pouvez utiliser le code LookML suivant pour ajouter ces champs à la vue sales affinée dans le fichier marketing_analysis.lkml :


# marketing_analysis.lkml

view: +sales {
  measure: average_sale_price {
    type: average
    value_format_name: usd
    sql: ${sale_price} ;;
    drill_fields: [detail*]
  }

  measure: total_sale_price {
    type: sum
    value_format_name: usd
    sql: ${sale_price} ;;
    drill_fields: [detail*]
  }

  measure: average_spend_per_user {
    type: number
    value_format_name: usd
    sql: 1.0 * ${total_sale_price} / NULLIF(${users.count},0) ;;
    drill_fields: [detail*]
  }
}

L'exploration Marketing que vous avez créée contiendra les nouveaux champs dans la vue Ventes, en plus des champs de la vue Utilisateurs associée. Les groupes de dimensions Retournés, Expédiés, Livrés et Créés, ainsi que la dimension État, sont masqués, car l'équipe marketing n'en a pas besoin.

De même, pour l'équipe chargée de la logistique, vous pouvez créer des champs qui lui seront utiles, tels que Shipping Time Buckets (Segments de délai de livraison) et Average Shipping Time (Délai de livraison moyen) :

L'onglet "Explorer" de l'équipe logistique liste désormais les nouveaux champs "Segments de délai de livraison" et "Délai de livraison moyen", ainsi que d'autres champs de livraison et de localisation de l'utilisateur.

Vous pouvez utiliser le code LookML suivant pour ajouter ces champs à la vue sales affinée dans le fichier logistics_analysis.lkml :


# logistics_analysis.lkml

view: +sales {
  dimension: shipping_time_buckets {
    case: {
      when: {
        sql: ${shipping_time} <= 7 ;;
        label: "One Week"
      }
      when: {
        sql: ${shipping_time} > 7 AND ${shipping_time} <= 14 ;;
        label: "Two Weeks"
      }
      when: {
        sql:  ${shipping_time} > 14 ;;
        label: "Over Two Weeks"
      }
      else: "Note Shipped"
    }
  }

  measure: average_shipping_time {
    type: average
    value_format_name: decimal_4
    sql: ${shipping_time} ;;
  }
}

L'exploration "Logistique" que vous avez créée contiendra les nouveaux champs dans la vue Ventes, en plus des champs de la vue Utilisateurs associée. Les champs Bénéfice, Prix soldé et Prix de vente moyen de la vue Ventes, ainsi que les champs Âge, Adresse e-mail, Prénom, Nom et Créé de l'exploration Utilisateurs sont masqués, car l'équipe logistique n'en a pas besoin.

Chaque équipe dispose désormais d'une exploration plus adaptée à ses besoins spécifiques. Bien que cette approche implique un peu plus de configuration en amont, en conservant les données principales au même endroit, vous pouvez les rendre plus faciles à trouver et à utiliser.