Maximizar la reutilización de código con LookML sin redundancias: Personaliza una sola vista base para varios casos de uso

Imagina que tienes muchos usuarios que comparten una función Explorar, pero que tienen casos de uso diferentes según su equipo o región. Cada usuario quiere ver solo los campos que se aplican a sus casos de uso únicos. Para satisfacer las diversas necesidades de tus usuarios, puedes usar las definiciones más precisas de LookML para personalizar las vistas y las exploraciones existentes sin tener que modificar el código LookML original. Luego, puedes incluir estas vistas y exploraciones refinadas en archivos de modelos independientes y dedicados que se personalicen según las diferentes necesidades de tus usuarios.

En esta página, se proporciona un ejemplo del uso de las mejoras de LookML para personalizar una sola vista base y crear exploraciones distintas para dos equipos diferentes de tu empresa. También incluye 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 se enfoca en campos diferentes dentro de la exploración 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 ello, puedes definir dos refinamiento diferentes de la exploración Ventas y la vista sales en la que se basa. La función Explorar del equipo de Marketing puede mostrar campos relacionados con los clientes y las tendencias de compra, mientras que la función Explorar del equipo de Logística puede mostrar campos relacionados con el envío y la ubicación. También puedes agregar campos nuevos a cada vista refinada que sean específicos para las necesidades de cada equipo.

Actualmente, el selector de campos de la función Explorar Ventas muestra todos los campos de la vista Ventas:

La vista Ventas incluye campos para las fechas de creación, entrega, devolución y envío, así como el ID, las ganancias, el estado, el precio promedio y total de la venta, y el recuento.

El selector de campos también muestra todos los campos de la vista Usuarios a la que te uniste:

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

Para definir mejor la vista sales y crear dos Exploraciones independientes que contengan solo los campos que interesan a los equipos de Marketing y Logística, sigue estos pasos:

  1. Crea un archivo de LookML nuevo, en este ejemplo, un archivo llamado base_analysis.lkml, que contenga el código de LookML para la exploración Ventas, que se basa en la vista sales y la vista users unida. Como deseas usar la exploración sales base y sus vistas correspondientes para crear una exploración personalizada para cada equipo, puedes definir todos los campos y propiedades compartidos en una sola ubicación, como dentro de 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. Crea dos archivos separados para alojar las mejoras de la exploración de Ventas que definirás 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, define mejor la exploración sales base como se define en el archivo base_analysis.lkml, que se mostró anteriormente, para agregar la etiqueta Análisis de ventas para el equipo de marketing en un archivo nuevo llamado marketing_analysis.lkml. La sentencia include: "/base/base_analysis.lkml" pone el contenido del archivo base_analysis.lkml a disposición para hacer referencia a él dentro del 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 independiente para cada equipo, como ecommerce_marketing.model y ecommerce_logistics.model. Si alojas los diferentes perfeccionamientos en modelos dedicados independientes 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 de Refinamientos de LookML 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 cualquier perfeccionamiento adicional a los archivos marketing_analysis.lkml y logistics_analysis.lkml según lo desees. Por ejemplo, puedes ocultar campos innecesarios y agregar campos nuevos a las Exploraciones refinadas de cada equipo.

De manera opcional, puedes pedirle a un administrador de Looker que configure el acceso al modelo para cada modelo exclusivo para proporcionar a equipos específicos acceso a nivel de Explorar.

Oculta los campos innecesarios de las exploraciones refinadas

Puedes definir mejor la vista sales de la siguiente manera en el archivo marketing_analysis.lkml para ocultar los grupos de dimensiones Devuelto, Enviado, Entregado 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 código LookML en el archivo logistics_analysis.lkml para ocultar los campos que no necesita el equipo de Logística (como Profit, Sale Price y 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
  }
}

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 agregar un perfeccionamiento para la vista users unida dentro del archivo logistics_analysis.lkml para ocultar estos campos de Explorar:

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

Agrega campos nuevos a las exploraciones refinadas

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

En la vista Ventas, se muestran los campos ID, Ganancias, Precio de oferta y Cantidad, además de los nuevos campos Precio de oferta promedio, Gasto promedio por usuario y Precio de oferta total.

Puedes usar el siguiente código LookML para agregar estos campos a la vista sales refinada 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 de la vista Usuarios unida. Los grupos de dimensiones Devuelto, Enviado, Entregado y Creado, y la dimensión Estado están ocultos porque el equipo de Marketing no los necesita.

Del mismo modo, para el equipo de Logística, puedes crear campos nuevos que le resulten útiles, como Buckets de tiempo de envío y Tiempo de envío promedio:

En la sección Explorar del equipo de Logística, ahora se muestran los nuevos campos Buckets 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 código LookML para agregar estos campos a la vista sales refinada 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 Profit, Sale Price y Average Sale Price de la vista Sales y los campos Age, Email, First Name, Last Name y Created de la exploración Users están ocultos porque el equipo de Logística no los necesita.

Ahora cada equipo tiene una función Explorar más personalizada según sus necesidades específicas. Si bien este enfoque implica un poco más de configuración por adelantado, si mantienes los datos principales en un solo lugar, puedes facilitar su búsqueda y uso.