Maximizar la reutilización del código con DRY LookML: personalizar una sola vista base para varios casos prácticos

Supongamos que tienes muchos usuarios que comparten una exploración, pero que tienen casos prácticos diferentes en función de su equipo o región. Cada usuario quiere ver solo los campos que se aplican a sus casos prácticos específicos. Para satisfacer las diversas necesidades de tus usuarios, puedes usar refinamientos de LookML para personalizar las vistas y las Exploraciones sin tener que modificar el LookML original. Después, puedes incluir estas vistas y Exploraciones refinadas en archivos de modelo independientes y específicos que se adapten a las diferentes necesidades de tus usuarios.

En esta página se ofrece un ejemplo de cómo usar los refinamientos de LookML para personalizar una sola vista base y crear Exploraciones distintas para dos equipos diferentes de su empresa. También incluye ejemplos de cómo ocultar y añadir campos en contenido refinado.

Ingredientes

Requisitos previos

Ejemplo: Crear varios desgloses personalizados a partir de la misma vista base

Supongamos que tiene una exploración Ventas que contiene datos sobre clientes, compras, envíos y ubicación. Los equipos de marketing y logística de tu empresa deben consultar estos datos, pero cada uno se centra en campos diferentes de la exploración Ventas.

Quieres mostrar solo los campos que sean útiles para cada equipo en el selector de campos de Exploración para facilitar la exploración. Para ello, puedes definir dos refinamientos diferentes de la exploración Ventas y de 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 los envíos y la ubicación. También puedes añadir campos nuevos a cada vista refinada que sean específicos para las necesidades de cada equipo.

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

La vista Ventas incluye campos para la fecha de creación, entrega, devolución y envío, así como el ID, los beneficios, el estado, el precio de venta medio y total, y el recuento.

El selector de campos también muestra todos los campos de la vista Usuarios combinada:

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 los apellidos, el ID, el estado, el código postal y el recuento.

Puede acotar la sales vista para crear dos Exploraciones independientes que contengan solo los campos que interesan a los equipos de Marketing y Logística. Para ello, siga estos pasos:

  1. Crea un archivo LookML, en este ejemplo, un archivo llamado base_analysis.lkml, que contenga el LookML de la exploración Ventas, que se basa en la vista sales y en la vista users combinada. Como quieres 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 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. Crea dos archivos independientes para incluir las acotaciones de la exploración Ventas que definirás para cada equipo. Puedes nombrar los archivos marketing_analysis.lkml y logistics_analysis.lkml. El código LookML que se muestra a continuación perfecciona la exploración sales base definida en el archivo base_analysis.lkml, que se ha mostrado anteriormente, para añadir la etiqueta Análisis de ventas del equipo de marketing en un nuevo archivo 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 a él 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 independiente para cada equipo, como ecommerce_marketing.model y ecommerce_logistics.model. Al alojar los diferentes refinamientos en modelos específicos independientes para cada equipo, puede refinar el mismo conjunto de vistas y exploraciones varias veces sin sobrescribir las personalizaciones que haya hecho para el caso práctico de un equipo. Para obtener más información, consulta la página de documentación Refinamientos de LookML.

  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. Añade los ajustes que quieras a los archivos marketing_analysis.lkml y logistics_analysis.lkml. Por ejemplo, puedes ocultar campos innecesarios y añadir campos nuevos a las Exploraciones perfeccionadas de cada equipo.

Si quieres, un administrador de Looker puede configurar el acceso al modelo de cada modelo específico para proporcionar a determinados equipos acceso a nivel de Exploración.

Ocultar los campos innecesarios de las exploraciones refinadas

Puede refinar la vista sales 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 utiliza 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
  }
}

Del mismo modo, puede usar el siguiente LookML en el archivo logistics_analysis.lkml para ocultar los campos que no necesita el equipo de logística (como Beneficio, Precio de venta y Precio de venta medio):


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

Como 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 añadir un filtro a la vista combinada users del archivo logistics_analysis.lkml para ocultar estos campos en 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
  }
}

Añadir campos nuevos a las Exploraciones refinadas

También puede crear campos nuevos que sean de interés para el equipo de marketing en la vista sales refinada. Por ejemplo, puede añadir los campos Precio medio de venta, Precio total de venta y Gasto medio por usuario en la vista sales refinada:

En la vista Ventas se muestran el ID, el beneficio, el precio de venta y el recuento, así como los nuevos campos Precio de venta medio, Gasto medio por usuario y Precio de venta total.

Puedes usar el siguiente LookML para añadir estos campos a la vista sales del 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 has creado contendrá los nuevos campos en la vista Ventas, además de los campos de la vista Usuarios combinada. Los grupos de dimensiones Devuelto, Enviado, Entregado y Creado, así como la dimensión Estado, están ocultos porque el equipo de marketing no los necesita.

Del mismo modo, en el caso del equipo de logística, puedes crear campos que le resulten útiles, como Tiempos de envío y Tiempo de envío medio:

En la sección Explorar del equipo de Logística ahora se muestran los campos Tiempo de envío y Tiempo de envío medio, así como otros campos de envío y de ubicación del usuario.

Puedes usar el siguiente LookML para añadir estos campos a la vista sales del 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 has creado contendrá los nuevos campos en la vista Ventas, además de los campos de la vista Usuarios combinada. Los campos Beneficio, Precio de venta y Precio de venta medio de la vista Ventas, así como los campos Edad, Correo, Nombre, Apellidos y Creado de la sección Explorar Usuarios, están ocultos porque el equipo de Logística no los necesita.

Ahora, cada equipo tiene una exploración más adaptada a sus necesidades específicas. Aunque este enfoque requiere un poco más de configuración inicial, al mantener los datos principales en un mismo lugar, te resultará más fácil encontrarlos y usarlos.