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 en la mayoría de los casos y situaciones, pero, como siempre, usa el buen juicio cuando implementes cualquiera de las sugerencias de esta página.

En esta página, se proporcionan recomendaciones para escribir LookML sostenible 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 LookML ya definido.

Usa la sintaxis ${TABLE}.field_name cuando hagas referencia a la tabla de base de datos subyacente para todas las dimensiones básicas que extraen datos directamente de las columnas de base 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 medidas que ya se hayan definido en LookML. Si cambia el nombre de una columna, ese cambio solo se deberá actualizar en el parámetro sql de la dimensión o las métricas base. Ese cambio se propagará automáticamente a todos los demás campos que hagan 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 debes actualizar una línea.

Cuando varias dimensiones y medidas 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. Todas las listas de campos que se repiten, 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 en el que se pueda actualizar esa lista de campos o cambiar las referencias de campo. Puedes obtener más información sobre los conjuntos en la página de documentación del parámetro set.

Evita repetir el código

Piensa en los objetos de LookML como bloques de construcción y usa el parámetro extends para combinar objetos de diferentes maneras sin repetir el 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 Explorar), así como en la publicación de Comunidad Cómo usar extensiones para definir combinaciones.

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 Comunidad de Looker sobre cómo evitar inconsistencias entre las exploraciones.

Consolidar elementos como capas de mapas y formatos de valor

Define capas de mapa 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 proyecto. Este archivo se puede incluir según sea necesario en todos los modelos. Como alternativa, agrega archivos JSON directamente al repositorio arrastrando y soltando archivos de datos en tu proyecto de LookML, y haz referencia a ellos dentro del 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"
}

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

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

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

  • Organizar claramente los archivos de LookML para que sean coherentes y fáciles de navegar
  • Usar comentarios en todas las vistas y modelos para agregar contexto al código de LookML que se escribe
  • Cómo crear documentación en Looker con archivos Markdown