Práctica recomendada: Cómo escribir LookML sostenible y mantenible

Estas prácticas recomendadas reflejan las recomendaciones que comparte un equipo multifuncional de Lookers experimentados. Estas estadísticas provienen de años de experiencia trabajando con clientes de Looker, desde la implementación hasta el éxito a largo plazo. Las prácticas están redactadas para funcionar para la mayoría de los usuarios y las situaciones. pero, como siempre, usa tu mejor criterio cuando implementes cualquiera de las sugerencias de esta página.

En esta página, se proporcionan recomendaciones para escribir LookML sustentable y mantenible. Estas recomendaciones se describen con más detalle en las siguientes secciones:

Usa operadores de sustitución

Los operadores de sustitución se deben usar en todos los archivos de LookML. Un modelo de LookML debe tener un solo punto de referencia para cualquier objeto en el modelo de datos físico. Cualquier definición posterior que necesite hacer referencia a ese objeto debe hacerlo apuntando al objeto de LookML ya definido.

Usa la sintaxis ${TABLE}.field_name cuando hagas referencia a la tabla de base de datos subyacente para todas las dimensiones base que extraigan datos directamente de las columnas de bases de datos subyacentes. Si cambia el nombre de un esquema o de una tabla, esto permite que un desarrollador actualice el esquema o el nombre de la tabla en un solo lugar (dentro del parámetro sql_table_name) y lo propague en el resto del código.

Usa la sintaxis ${field_name} cuando hagas referencia a dimensiones o mediciones que ya se definieron en LookML. Si el nombre de una columna cambia, ese cambio solo deberá actualizarse en el parámetro sql de la dimensión o las mediciones base. Ese cambio se propagará automáticamente a todos los demás campos que hacen referencia a la columna. Por ejemplo, si el nombre de una columna en tu base de datos cambia de usersid a users_id, deberás cambiar la referencia en Looker. Usar ${field_name} significa que solo necesitas actualizar una línea.

Cuando múltiples dimensiones y mediciones hacen referencia a un campo de LookML existente con ${TABLE}.field_name, se necesitan muchos cambios. Por ejemplo, considera las medidas this_week_count y this_month_count en el siguiente código de ejemplo de LookML:

dimension: usersid {
  type: number
  sql: ${TABLE}.usersid ;; # Change here
}

measure: this_week_count {
  type: count_distinct
  sql: ${TABLE}.usersid ;; # Change here
  filters: [created_date: "7 days"]
}

measure: this_month_count {
  type: count_distinct
  sql: ${TABLE}.usersid ;; # Change here
  filters: [created_date: "1 month"]
}

Dado que tanto this_week_count como this_month_count usan la sintaxis ${TABLE}.usersid en el parámetro sql, será necesario actualizar el parámetro sql para los tres campos.

Con la referencia ${field_name}, solo se necesita un cambio:

dimension: usersid {
  type: number
  sql: ${TABLE}.usersid ;; # Change here
}

measure: this_week_count {
  type: count_distinct
  sql: ${usersid} ;;       #Using ${field_name} to reference the LookML field `usersid`
  filters: [created_date: "7 days"]
}

measure: this_month_count {
  type: count_distinct
  sql: ${usersid} ;;       #Using ${field_name} to reference the LookML field `usersid`
  filters: [created_date: "1 month"]
}

Para ver más usos de los operadores de sustitución, consulta nuestra página de documentación Cómo incorporar SQL y hacer referencia a objetos de LookML.

Define conjuntos de campos

Usa conjuntos para mantener listas de campos reutilizables dentro del modelo. Cualquier lista de campos que se repitan, ya sea con el parámetro fields o dentro de los campos de desglose, deben incorporarse a conjuntos para crear un solo lugar en el modelo donde se pueda actualizar esa lista de campos o cambiar las referencias de los campos. Puedes encontrar más información sobre los conjuntos en la página de documentación del parámetro set.

Evita repetir código

Piensa en los objetos de LookML como componentes básicos y usa el parámetro extends para combinar objetos de diferentes maneras sin repetir código. Puedes encontrar información detallada y ejemplos de reutilización de código en la página de documentación Reutiliza código con extends. Puedes ver ejemplos adicionales en las páginas de documentación de los parámetros extends (para vistas) y extends (para exploraciones), así como en la publicación de Comunidad sobre Cómo usar extensiones para definir las uniones.

No repitas el código en varios lugares para mantener la coherencia entre las exploraciones. Para obtener más ideas sobre cómo lograrlo, consulta la publicación de la comunidad de Looker sobre cómo evitar inconsistencias entre las exploraciones.

Consolidar elementos como capas de mapas y formatos de valor

Define capas de mapas personalizadas de forma centralizada en un archivo LookML llamado map_layers.lkml, que puedes crear siguiendo la documentación de Looker sobre los archivos de proyectos. Este archivo se puede incluir según sea necesario en los modelos. De manera alternativa, agrega archivos JSON directamente al repositorio arrastrando y soltando archivos de datos en tu proyecto de LookML, y haz referencia a ellos en el modelo.

Por ejemplo, supongamos que tienes un archivo de capas de mapa, map_layers.base.lkml, que contiene el siguiente código de LookML:

map_layer: example_africa {
  file: "africa_file_name.json"
  property_key: "geounit"
}

map_layer: example_asia {
  file: "asia_file_name.json"
  property_key: "geounit"
}

map_layer: example_europe {
  file: "europe_file_name.json"
  property_key: "geounit"
}

Puedes incluir el archivo de capas del mapa map_layers.base.lkml en cualquier modelo del proyecto. Para ello, agrega el código de LookML include: "map_layers.base.lkml" al archivo del modelo que desees.

Establece cualquier formato de valor personalizado de forma centralizada dentro del modelo. Usa el parámetro named_value_format para establecer cualquier formato personalizado dentro del modelo y, luego, haz referencia a ellos con el parámetro value_format_name en las dimensiones y las medidas.

Crea lineamientos de desarrollo

Definir lineamientos de desarrollo para facilitar el desarrollo y escalamiento de un modelo de LookML. Consulta la publicación de Comunidad de Looker sobre los ejemplos de lineamientos de desarrollo de LookML para ver una explicación de una lista de lineamientos de desarrollo de muestra. Entre los lineamientos comunes, se incluyen los siguientes requisitos:

  • Organización clara de los archivos de LookML para que sean coherentes y fáciles de navegar
  • Usar comentarios en las vistas y los modelos para agregar contexto a LookML escrito
  • Crear documentación en Looker con archivos de Markdown