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 nos 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?

Nesta página de práticas recomendadas, mostramos como criar uma imagem dinâmica de painel usando Liquid e o parâmetro html.

A solução

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

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

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

Há três etapas para criar a imagem dinâmica do painel:

  1. Crie uma dimensão de imagem no LookML.
  2. Crie um bloco de painel de imagens dinâmicas.
  3. Adicione filtros e toques finais ao painel.

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

Para criar uma dimensão de imagem em LookML:

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

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

          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. Crie uma condição de valor para cada valor em que você quer mostrar uma imagem. Você também pode criar um campo de imagem dinâmica usando a variável value do Liquid, conforme descrito na postagem da comunidade Como adicionar imagens às visualizações.

Em seguida, crie um bloco de painel para a dimensão de imagem.

Etapa 2: criar um bloco de painel de imagens dinâmicas

Agora que a dimensão da imagem (state_flag_image) foi criada, você pode criar uma análise detalhada que vai se tornar o bloco dinâmico do painel de imagens.

Crie sua análise detalhada com os seguintes critérios:

  • Adicione um filtro para a dimensão original (neste caso, state) e defina qualquer valor. Isso fará com que a imagem "nenhuma imagem disponível" seja exibida inicialmente, já que nenhum valor de filtro específico está selecionado. Esse valor será atualizado de acordo com o que o usuário selecionar 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 incluir uma data, adicione "data" etc.
  • Mude o limite de linhas para uma linha.
  • Mude o tipo de visualização para valor único e oculte todas as outras colunas, exceto a dimensão da imagem (state_flag_image). 

Inicialmente, a opção "Explorar" vai mostrar a imagem "Nenhuma imagem disponível" na visualização de valor único renderizada no painel Visualização. A imagem de exibição muda de acordo com o valor do filtro que o usuário seleciona no dashboard final:

Salve a Análise de dados em um dashboard como um título.

Etapa 3: adicionar filtros e toques finais ao painel

Agora você precisa adicionar filtros ao painel. Os filtros no painel vão atualizar o filtro na análise detalhada para mudar a imagem mostrada 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 precisa ser a dimensão em que a dimensão da imagem se baseia. Neste exemplo, o campo do filtro será state.
  • Selecione o bloco de imagem da etapa 2 na guia Blocos a serem atualizados.
  • Selecione a dimensão original (estado, neste caso) no menu suspenso inline Campo para filtrar.
  • Selecione outros blocos para atualizar conforme necessário.
  • 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 a opção de controle Avançado.

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

Quando um usuário escolhe filtrar por "Califórnia", o painel mostra a bandeira e os dados do estado:

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