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

Puedes agregar imágenes a los paneles de Looker codificando de forma rígida la URL de una imagen en una tarjeta de texto de Markdown. Sin embargo, las imágenes de las tarjetas de texto son estáticas y no se actualizarán según los resultados. ¿Qué sucede si quieres que la imagen de un panel cambie de forma dinámica según el valor de filtro que seleccione el usuario?

En esta página de prácticas recomendadas, se muestra cómo obtener una imagen de panel dinámica 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 de datos de comercio electrónico hipotético:

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

Supongamos que deseas mostrar la imagen de la bandera de un estado en un panel que se actualizará según el estado por el que un usuario elija filtrar los resultados del panel.

Para crear la imagen del panel dinámico, debes completar los siguientes tres pasos:

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

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

Para crear una dimensión de imagen en LookML, haz lo siguiente:

  1. Primero, navega al proyecto y al archivo de vista que contiene la dimensión a la que deseas agregar imágenes. Luego, crea una dimensión nueva basada en ese campo, específicamente para mostrar las imágenes.
  2. Agrega un parámetro html para definir una sentencia condicional de Liquid {% if %} con la variable value para cada valor para el que quieras 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 un ícono de "no hay imagen disponible":

          dimension: state_flag_image {
              type: string
              sql: ${state} ;;
              html:
                  {% 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">
                  {% 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">
                  {% endif %} ;;
          }
        
  3. Crea una condición de valor para cada valor para el que desees mostrar una imagen. Como alternativa, puedes crear un campo de imagen dinámico con la variable value de Liquid, como se describe en la publicación de Comunidad Cómo agregar imágenes a las visualizaciones.

A continuación, puedes crear una tarjeta del panel para la dimensión de la imagen.

Paso 2: Crea una tarjeta del panel de imágenes dinámicas

Ahora que se creó la dimensión de la imagen (state_flag_image), puedes crear un Explorar que se convertirá en la tarjeta del panel de imágenes dinámicas.

Crea tu Explorar con los siguientes criterios:

  • Agrega un filtro para la dimensión original (en este caso, state). Establece el filtro para cualquier valor. Esto hará que se muestre inicialmente la imagen de "no hay imagen disponible", ya que no se seleccionó ningún valor de filtro específico. Este valor del 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 búsqueda que determina la imagen (por ejemplo, si deseas tener en cuenta una fecha, puedes incluir la fecha, etcétera).
  • Cambia el límite de filas a una fila.
  • Cambia el tipo de visualización a una visualización de un solo valor y oculta cualquier otra columna, excepto la dimensión de la imagen (state_flag_image). 

Inicialmente, en la sección Explorar se mostrará la imagen "no hay imagen disponible" en la visualización de un solo valor renderizada en el panel Visualización. La imagen que se muestra cambiará según el 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 al panel y realiza los retoques finales

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

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

  • Abre la ventana Agregar filtro.
  • Selecciona el campo por el que deseas filtrar. 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 del filtro será state.
  • Selecciona el mosaico de imagen del paso 2 en la pestaña Mosaicos para actualizar.
  • Selecciona la dimensión original (estado en este caso) en el menú desplegable intercalado Campo para filtrar.
  • Selecciona otros mosaicos para actualizar según desees.
  • Personaliza el filtro como desees. Si seleccionas la opción de control Avanzado, asegúrate de anular la selección de la opción Permitir varios valores de filtro, que se habilita automáticamente para la opción de control Avanzado.

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

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

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