Criar uma imagem dinâmica do painel com Liquid e HTML

É possível adicionar imagens aos painéis do Looker codificando um URL de imagem em um bloco de texto do Markdown. No entanto, as imagens em blocos de texto são estáticas e não são atualizadas com base nos resultados. E se você quiser que uma imagem do painel mude dinamicamente com base em um valor de filtro selecionado pelo usuário?

Esta página de práticas recomendadas demonstra como criar uma imagem dinâmica do painel usando Liquid e o parâmetro html.

A solução

A solução a seguir usa como base um conjunto de dados de e-commerce que inclui um campo chamado users.state, que representa os estados em um conjunto hipotético de dados de e-commerce:

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

Digamos que você queira exibir a imagem da bandeira de um estado em um painel que será atualizado com base no estado pelo qual um usuário opta por filtrar os resultados do painel.

Há três etapas que você precisa concluir para criar a imagem do painel dinâmico:

  1. Crie uma dimensão de imagem no LookML.
  2. Crie um bloco do dashboard de imagem dinâmica.
  3. Adicione filtros do painel e toques finais.

Etapa 1: criar uma dimensão de imagem no LookML

Para criar uma dimensão de imagem no LookML:

  1. Primeiro, navegue até o projeto e visualize o arquivo que contém a dimensão à qual você quer adicionar imagens. Em seguida, crie uma nova dimensão com base nesse campo, especificamente para exibir as imagens.
  2. Adicione um parâmetro html para definir uma instrução condicional {% dynamic if %} líquida com a variável value para cada valor em que você quer exibir uma imagem.

    Por exemplo, a dimensão state_flag_image abaixo estabelece uma condição para exibir as imagens especificadas (com tags html <img> ) quando o valor de state é "California", "New York", "Colorado" ou "Illinois". Para todos os outros estados, é possível mostrar um ícone "nenhuma imagem disponível":

          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. Crie uma condição de valor para cada valor em que você quer exibir uma imagem. Outra opção é criar um campo de imagem dinâmica usando a variável value Liquid, conforme descrito na postagem Como adicionar imagens a visualizações na Comunidade.

Em seguida, você pode criar um bloco do dashboard para a dimensão da imagem.

Etapa 2: criar um bloco do dashboard de imagem dinâmica

Agora que a dimensão da imagem (state_flag_image) foi criada, crie um Explore que vai se tornar o bloco do painel de imagem dinâmica.

Crie seu Explore com os seguintes critérios:

  • Adicione um filtro para a dimensão original (neste caso, state). Defina o filtro para qualquer valor. A sinalização do estado exibirá a imagem "nenhuma imagem disponível" nesse caso, porque nenhum valor de filtro específico foi selecionado. O valor desse filtro é atualizado de acordo com o que o usuário seleciona para o filtro do painel. 
  • Selecione a dimensão da imagem (neste caso, state_flag_image) e outras dimensões que possam ser necessárias para a consulta que determina a imagem (por exemplo, se você quiser considerar uma data, pode incluir data etc.).
  • Mude o limite de linhas para uma linha.
  • Mude o tipo para uma visualização de valor único e oculte outras colunas, exceto a dimensão da imagem (state_flag_image). 

A Análise vai mostrar o primeiro resultado de imagem na visualização de valor único renderizada no painel Visualização. A imagem de exibição muda com base no valor do filtro que o usuário seleciona no painel final:

Salve o "Explorar" em um painel como um bloco.

Etapa 3: adicionar filtros no painel e toques finais

Agora você precisa adicionar filtros ao painel. Os filtros no dashboard atualizam o filtro em "Explorar" para alterar a imagem exibida com base na seleção do usuário.

No modo de edição do painel, crie o filtro:

  • Abra a janela "Adicionar filtro"
  • Selecione o campo para filtrar. O campo de filtro deve ser a dimensão de base da imagem. No caso deste exemplo, o campo do filtro é state.
  • Selecione o bloco de imagem da etapa 2 na guia Tiles to Update.
  • Selecione a dimensão original (neste caso, state) no menu suspenso state in-line.
  • Selecione outros blocos para atualizar.
  • Personalize o filtro como quiser. Se você selecionar a opção de controle Avançado, desmarque a opção Permitir vários valores de filtro, que é ativada automaticamente para o controle Avançado.

Agora, o bloco de imagem vai ser atualizado com a seleção do filtro do usuário.

Quando um usuário opta por filtrar por "Califórnia", o painel exibe a bandeira do estado e os dados para o estado de São Paulo:

Quando um usuário opta por filtrar por "Colorado", o painel exibe a bandeira do estado e os dados para o estado do Colorado: