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

Imaginez que de nombreux utilisateurs partagent une exploration, mais utilisent des cas d'utilisation différents selon leur équipe ou leur région. Chaque utilisateur ne souhaite afficher 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 affinages LookML pour personnaliser les vues et les explorations existantes sans avoir à modifier le code LookML d'origine. Vous pouvez ensuite inclure ces vues affinées et ces explorations dans des fichiers de modèle dédiés et distincts, personnalisés en fonction des 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 au sein de votre entreprise. Il comprend également des exemples de masquage et d'ajout de champs dans le contenu affiné.

Composants

Prérequis

Exemple: création de 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 examiner ces données, mais elles se concentrent chacune sur des domaines différents de l'exploration Ventes.

Pour faciliter l'exploration, vous voulez n'afficher que les champs qui sont utiles pour chaque équipe dans le sélecteur de champs d'exploration. Pour ce faire, vous pouvez définir deux affinages 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 celle de l'équipe logistique peut afficher des champs liés à la livraison et à l'emplacement. Vous pouvez également ajouter à chaque vue affinée de nouveaux champs spécifiques aux besoins de chaque équipe.

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

La vue "Ventes" comprend des champs pour la date 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 d'unités.

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

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

Vous pouvez affiner la vue sales afin de créer deux explorations distinctes ne contenant que les champs qui intéressent les équipes marketing et logistique. Pour ce faire, procédez comme suit:

  1. Créez un fichier LookML (appelé base_analysis.lkml dans cet exemple) contenant le code LookML de l'exploration Sales, basé sur les vues sales et la vue users jointe. Puisque vous souhaitez utiliser l'exploration sales de base et les vues correspondantes afin de créer une exploration personnalisée pour chaque équipe, vous pouvez définir l'ensemble des champs et propriétés partagés dans un même 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 sales de base, tel que défini dans le fichier base_analysis.lkml présenté précédemment, pour ajouter le libellé Analyse des ventes pour l'équipe marketing dans un nouveau fichier nommé marketing_analysis.lkml. L'instruction include: "/base/base_analysis.lkml" rend le contenu du fichier base_analysis.lkml disponible pour référence 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 distincts pour chaque équipe, vous pouvez affiner le même ensemble de vues et d'explorations plusieurs fois sans remplacer les personnalisations que vous avez effectuées pour le cas d'utilisation d'une équipe. Pour en savoir plus, consultez la page de documentation sur les affinages de LookML.

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

  5. Ajoutez tout affinement supplémentaire aux fichiers marketing_analysis.lkml et logistics_analysis.lkml si vous le souhaitez. Par exemple, vous pouvez masquer les champs inutiles et ajouter de nouveaux champs aux explorations affinées pour chaque équipe.

Si vous le souhaitez, vous pouvez demander à un administrateur Looker de configurer l'accès au modèle pour chaque modèle dédié afin d'accorder un accès au niveau de l'exploration à des équipes spécifiques.

Masquage des champs inutiles dans les 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é, Distribué et Créé, ainsi que la dimension État, puisque 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 Bénéfice, Prix soldé et Prix de vente moyen):


# 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
  }
}

Comme l'équipe logistique n'a pas besoin de voir les informations personnelles des clients (noms, âges ou adresses e-mail, par exemple), vous pouvez également affiner la vue users jointe dans le fichier logistics_analysis.lkml afin de masquer ces champs dans 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 des champs Prix de vente moyen, Prix de vente total et Dépenses moyennes par utilisateur dans la vue sales affinée:

La vue "Ventes" liste les champs "ID", "Bénéfice", "Prix soldé" et "Nombre", ainsi que les nouveaux champs "Prix de vente moyen", "Dépenses moyennes 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 de la vue Ventes, en plus des champs de la vue Utilisateurs jointe. Les groupes de dimensions Retourné, Expédié, Livré et Créé ainsi que la dimension État sont masqués, car l'équipe marketing n'en a pas besoin.

De même, pour l'équipe logistique, vous pouvez créer des champs qui lui seront utiles, comme Tranches de délai de livraison et Délai de livraison moyen:

L'outil Explorer de l'équipe logistique affiche désormais les nouveaux champs "Buckets 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 contient les nouveaux champs de la vue Ventes, en plus des champs de la vue Utilisateurs jointe. Les champs Bénéfice, Prix soldé et Prix de vente moyen de la vue Ventes et les champs Âge, Adresse e-mail, Prénom, Nom et Créé dans l'onglet Utilisateurs sont masqués, car l'équipe logistique n'en a pas besoin.

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