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

Para agregar imágenes a los paneles de Looker, codifica una URL de 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 en función de los resultados. ¿Qué sucede si deseas que una imagen del panel cambie de forma 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 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 hipotético de comercio electrónico:

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

Supongamos que quieres 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.

Debes completar tres pasos para crear la imagen del panel dinámico:

  1. Crea una dimensión de imagen en LookML.
  2. Crea una tarjeta de panel de imágenes dinámicas.
  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, sigue estos pasos:

  1. Primero, navega al proyecto y abre el archivo 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 {% if %} de Liquid con la variable value para cada valor para el que deseas 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 deseas mostrar una imagen. Como alternativa, puedes crear un campo de imagen dinámico con la variable Liquid value, 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 imagen.

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

Ahora que se creó la dimensión de imagen (state_flag_image), puedes crear una tarjeta de Explorar que se convertirá en la tarjeta 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). Establece el filtro para cualquier valor (la marca de estado mostrará la imagen "No hay imagen disponible" en este caso, ya que no se selecciona 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 consulta que determina la imagen (por ejemplo, si deseas tener en cuenta una fecha, puedes incluirla, etcétera).
  • Cambia el límite de filas a una fila.
  • Cambia el tipo de visualización a una visualización de valor único y oculta cualquier otra columna, excepto la dimensión de imagen (state_flag_image). 

En Explorar, se mostrará el primer resultado de imagen 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 seleccione el usuario en el panel final:

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

Paso 3: Agrega filtros al panel y da los toques finales

Ahora, debes agregar filtros al panel. Los filtros del panel actualizarán el filtro de 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 que deseas usar para filtrar los datos. 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 la tarjeta de imagen del paso 2 en la pestaña Tarjetas para actualizar.
  • Selecciona la dimensión original (estado en este caso) en el menú desplegable Campo para filtrar intercalado.
  • Selecciona otras tarjetas para actualizarlas como desees.
  • Personaliza el filtro como desees. Si seleccionas la opción de control Avanzada, asegúrate de desmarcar la opción Permitir varios valores de filtro, que se habilita automáticamente para la opción de control Avanzada.

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

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

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