Maximiza la reutilización de código con DRY LookML: Personaliza una sola vista base para varios casos de uso

Imagina que tienes muchos usuarios que comparten una exploración, pero que tienen diferentes casos de uso según su equipo o región. Cada usuario quiere ver solo los campos correspondientes a sus casos de uso únicos. Para satisfacer las diversas necesidades de tus usuarios, puedes usar ajustes de LookML a fin de personalizar las vistas y las exploraciones existentes sin tener que modificar el LookML original. Luego, puedes incluir estas vistas y exploraciones mejor definidas en archivos de modelos independientes y dedicados que se personalizan según las diferentes necesidades de tus usuarios.

En esta página, se proporciona un ejemplo del uso de mejoras de LookML para personalizar una sola vista base y crear exploraciones distintas para dos equipos diferentes dentro de tu empresa. También se incluyen ejemplos de cómo ocultar y agregar campos en el contenido refinado.

Componentes

Requisitos previos

Ejemplo: Cómo crear varias exploraciones personalizadas a partir de la misma vista base

Supongamos que tienes una exploración de ventas que contiene datos sobre clientes, compras, envíos y ubicación. Los equipos de Marketing y Logística de tu empresa deben explorar estos datos, pero cada uno de ellos se enfoca en diferentes campos de la exploración de ventas.

Quieres mostrar solo los campos que son útiles para cada equipo en el selector de campos de Explorar para facilitar la exploración. Para hacerlo, puedes definir dos definiciones diferentes de la exploración de ventas y la vista sales en la que se basa. La exploración del equipo de Marketing puede mostrar campos relacionados con clientes y tendencias de compra, mientras que la del equipo de Logística puede mostrar campos relacionados con el envío y la ubicación. También puedes agregar nuevos campos a cada vista mejorada que sean específicos para las necesidades de cada equipo.

Actualmente, el selector de campos para la exploración de Ventas muestra todos los campos de la vista Ventas:

La vista Ventas incluye los campos de fecha de creación, publicación, devolución y envío, así como ID, ganancias, estado, precio de venta promedio y total, y cantidad.

El selector de campos también muestra todos los campos de la vista Users unida:

La vista Usuarios incluye campos para edad, ciudad, país, fecha de creación, correo electrónico, nombre y apellido, ID, estado, código postal y recuento.

Si deseas definir mejor la vista sales para crear dos exploraciones independientes que contengan solo los campos de interés para los equipos de Marketing y Logística, sigue estos pasos:

  1. Crea un nuevo archivo de LookML, en este ejemplo, un archivo llamado base_analysis.lkml, que contiene LookML para la exploración de ventas, que se basa en la vista sales y la vista users unida. Dado que deseas usar la exploración sales básica y sus vistas correspondientes a fin de crear una exploración personalizada para cada equipo, puedes definir todos los campos y las propiedades compartidos en una sola ubicación, como en un solo archivo.

    
    # 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. Cree dos archivos separados para alojar las mejoras de la exploración de ventas que definirá para cada equipo. Puedes nombrar los archivos marketing_analysis.lkml y logistics_analysis.lkml. El código de LookML, que se muestra a continuación, refina la exploración base de sales como se definió en el archivo base_analysis.lkml, que se mostró antes, para agregar la etiqueta Análisis de ventas para el equipo de marketing a un archivo nuevo llamado marketing_analysis.lkml. La instrucción include: "/base/base_analysis.lkml" hace que el contenido del archivo base_analysis.lkml esté disponible para hacer referencia en el archivo marketing_analysis.lkml.

    
    # marketing_analysis.lkml
    
    include: "/base/base_analysis.lkml"
    
    explore: +sales {
      label: "Sales Analysis for Marketing Team"
    }
    
    
  3. Crea un archivo de modelo separado para cada equipo, como ecommerce_marketing.model y ecommerce_logistics.model. Si alojas los diferentes perfeccionamientos en modelos dedicados separados para cada equipo, puedes definir mejor el mismo conjunto de vistas y exploraciones varias veces sin reemplazar las personalizaciones que realizaste para el caso de uso de un equipo. Consulta la página de documentación sobre refinamientos de Looker para obtener más información.

  4. Con el parámetro include, incluye marketing_analysis.lkml en el modelo ecommerce_marketing.model y logistics_analysis.lkml en el modelo ecommerce_logistics.model.

  5. Agrega mejoras adicionales a los archivos marketing_analysis.lkml y logistics_analysis.lkml según lo desees. Por ejemplo, puedes ocultar los campos innecesarios y agregar campos nuevos a las exploraciones definidas para cada equipo.

De manera opcional, puedes hacer que un administrador de Looker configure el acceso al modelo para cada modelo dedicado a fin de proporcionar acceso de nivel de exploración a equipos específicos.

Se ocultan los campos innecesarios de las exploraciones mejor definidas.

Puedes definir mejor la vista sales de la siguiente manera en el archivo marketing_analysis.lkml para ocultar los grupos de dimensiones Devueltas, Enviados, Entregados y Creado, así como la dimensión Estado, ya que el equipo de Marketing no usa esos campos:


# 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 manera similar, puedes usar el siguiente LookML en el archivo logistics_analysis.lkml para ocultar los campos que el equipo de Logística no necesite (como Ganancias, Precio de venta y Precio de venta promedio):


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

Dado que el equipo de Logística no necesita ver información personal sobre los clientes, como sus nombres, edades o direcciones de correo electrónico, también puedes definir mejor la vista users unida dentro del archivo logistics_analysis.lkml para ocultar estos campos de la exploración:

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

Agregar campos nuevos a las exploraciones definidas

También puedes crear campos nuevos que sean de interés para el equipo de Marketing en la vista de sales mejor definida. Por ejemplo, puedes agregar campos para Precio de venta promedio, Precio de venta total y Inversión promedio por usuario dentro de la vista mejor definida sales:

La vista Ventas muestra ID, Ganancia, Precio de venta y Recuento, además de los nuevos campos Precio promedio de venta, Inversión promedio por usuario y Precio total de venta.

Puedes usar el siguiente LookML para agregar estos campos a la vista sales mejor definida en el archivo 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*]
  }
}

La exploración de marketing que creaste contendrá los campos nuevos en la vista Ventas, además de los campos en la vista Usuarios unida. Los grupos de dimensiones Devueltas, Enviados, Entregados y Creado, así como la dimensión Estado están ocultos porque el equipo de Marketing no los necesita.

De manera similar, para el equipo de Logística, puedes crear campos nuevos que sean útiles, como Intervalos de tiempo de envío y Tiempo de envío promedio:

El equipo de Logística Explorar ahora enumera los nuevos campos de tiempo de envío y tiempo de envío promedio, junto con otros campos de envío y ubicación del usuario.

Puedes usar el siguiente LookML para agregar estos campos a la vista sales mejor definida en el archivo 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} ;;
  }
}

La exploración de logística que creaste contendrá los campos nuevos en la vista Ventas, además de los campos de la vista Usuarios unida. Los campos Ganancias, Precio de venta y Precio promedio de venta de la vista Ventas y los campos Edad, Correo electrónico, Nombre, Apellido y Creado de la exploración Usuarios están ocultos porque el equipo de Logística no los necesita.

Ahora, cada equipo tiene una exploración que se adapta mejor a sus necesidades específicas. Si bien este enfoque implica un poco más de configuración inicial, si mantienes los datos principales en un solo lugar, puedes facilitar su búsqueda y uso.