Crea una imagen de panel dinámica con Liquid y HTML

Para agregar imágenes a los paneles de Looker, puedes codificar la URL de una imagen en un mosaico de texto de Markdown. Sin embargo, las imágenes en los mosaicos de texto son estáticas y no se actualizarán en función de los resultados. ¿Qué sucede si quieres que una imagen del panel cambie de manera dinámica en función de un valor de filtro seleccionado por el usuario?

En esta página de prácticas recomendadas, se muestra cómo lograr una imagen dinámica del panel con Liquid y el parámetro html.

La solución

La siguiente solución se basa en un conjunto de datos de comercio electrónico que incluye un campo llamado users.state, que representa los estados en un conjunto hipotético de datos de comercio electrónico:

dimension: state {
  type: string
  sql: ${TABLE}.state ;;
}

Supongamos que quieres mostrar la imagen de la marca de un estado en un panel que se actualizará en función del estado por el que un usuario elige filtrar los resultados del panel.

Debe completar tres pasos para crear la imagen dinámica del panel:

  1. Crea una dimensión de imagen en LookML.
  2. Crea una tarjeta de panel de imagen dinámica.
  3. Agrega filtros y toques finales en el panel.

Paso 1: Crea una dimensión de imagen en LookML

Para crear una dimensión de imagen en LookML, sigue estos pasos:

  1. Primero, navega hasta el proyecto y visualiza el archivo que contiene la dimensión a la que deseas agregar imágenes. Luego, crea una dimensión nueva en función de ese campo, específicamente para mostrar las imágenes.
  2. Agrega un parámetro html para definir una sentencia condicional {% dynamic if %} líquida con la variable value para cada valor para el que desees mostrar una imagen.

    Por ejemplo, la siguiente dimensión state_flag_image establece una condición para mostrar las imágenes especificadas (con etiquetas html <img> ) cuando el valor de state es "California", "New York", "Colorado" o "Illinois". Para todos los demás estados, puedes mostrar el ícono "No hay imagen disponible":

          dimension: state_flag_image {
              type: string
              sql: ${state} ;;
              html:
                  {% dynamic if state._value == "California" %}
                  <img src="https://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_California.svg" height="170" width="255">
                  {% elsif state._value == "New York" %}
                  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Flag_of_New_York.svg/1200px-Flag_of_New_York.svg.png" height="170" width="255">
                  {% elsif state._value == "Colorado" %}
                  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Flag_of_Colorado.svg/255px-Flag_of_Colorado.svg.png" height="170" width="255">
                  {% elsif state._value == "Illinois"%}
                  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Flag_of_Illinois.svg/1200px-Flag_of_Illinois.svg.png" height="170" width="255">
                  {% dynamic else %}
                  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/No_image_available.svg/1024px-No_image_available.svg.png" height="170" width="170">
                  {% dynamic endif %} ;;
          }
    
  3. Crea una condición de valor para cada valor para el que deseas mostrar una imagen. También puedes crear un campo de imagen dinámica con la variable value Liquid, según se describe en la publicación de Comunidad Cómo agregar imágenes a las visualizaciones.

A continuación, puedes crear un mosaico de panel para la dimensión de la imagen.

Paso 2: Crea una tarjeta dinámica de imagen del panel

Ahora que se creó la dimensión de la imagen (state_flag_image), puedes crear una exploración que se convertirá en el mosaico del panel de imágenes dinámicas.

Crea tu exploración con los siguientes criterios:

  • Agrega un filtro para la dimensión original (en este caso, state). Configura el filtro para cualquier valor (en este caso, la marca de estado mostrará la imagen "sin imagen disponible", ya que no se seleccionó ningún valor de filtro específico). Este valor de filtro se actualizará según lo que el usuario seleccione para el filtro del panel. 
  • Selecciona la dimensión de la imagen (en este caso, state_flag_image) y cualquier otra dimensión que pueda ser necesaria para la consulta que la determina (por ejemplo, si deseas incluir una fecha, puedes incluirla, etcétera).
  • Cambia el límite de filas a una fila.
  • Cambia el tipo de visualización a visualización de un solo valor y oculta las demás columnas, excepto la dimensión de la imagen (state_flag_image). 

La exploración mostrará el primer resultado de la imagen en la visualización de valor único renderizada en el panel Visualización. La imagen visible cambiará en función del valor del filtro que el usuario seleccione en el panel final:

Guarda la exploración en un panel como una tarjeta.

Paso 3: Agrega filtros y toques finales en el panel

Ahora debes agregar filtros del panel al panel. Los filtros del panel actualizarán el filtro en Explorar para cambiar la imagen que se muestra en función de la selección del usuario.

En el modo de edición del panel, crea el filtro:

  • Abre la ventana Agregar filtro.
  • Selecciona el campo que deseas usar como filtro. El campo de filtro debe ser la dimensión en la que se basa la dimensión de la imagen. En el caso de este ejemplo, el campo para el filtro será state.
  • Selecciona el mosaico de imagen del Paso 2 en la pestaña Tiles to Update.
  • Selecciona la dimensión original (en este caso, state) en el menú desplegable intercalado state.
  • Selecciona otros mosaicos para actualizar según lo desees.
  • Personaliza el filtro como desees. Si seleccionas la opción Control avanzado, asegúrate de anular la selección de la opción Permitir varios valores de filtro, que está habilitada automáticamente para la opción de control Avanzado.

Ahora, el mosaico de la imagen se actualizará con la selección de filtro del usuario.

Si un usuario elige filtrar por "California", se mostrarán en el panel la bandera y los datos del estado:

Cuando un usuario elige filtrar por “Colorado”, el panel mostrará la bandera y los datos del estado de Colorado: