Crie uma imagem de painel de controlo dinâmica com Liquid e HTML

Pode adicionar imagens aos painéis de controlo do Looker ao codificar um URL de imagem num mosaico de texto de Markdown. No entanto, as imagens nos mosaicos de texto são estáticas e não são atualizadas com base nos resultados. E se quiser que uma imagem do painel de controlo mude dinamicamente com base num valor de filtro selecionado pelo utilizador?

Esta página de práticas recomendadas demonstra como alcançar uma imagem de painel de controlo dinâmica através do Liquid e do parâmetrohtml.

A solução

A solução seguinte baseia-se num conjunto de dados de comércio eletrónico que inclui um campo denominado users.state, que representa os estados num conjunto de dados de comércio eletrónico hipotético:

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

Suponha que quer apresentar a imagem da bandeira de um estado num painel de controlo que vai ser atualizado com base no estado pelo qual um utilizador opta por filtrar os resultados do painel de controlo.

Existem três passos que tem de concluir para criar a imagem do painel de controlo dinâmico:

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

Passo 1: crie uma dimensão de imagem no LookML

Para criar uma dimensão de imagem no LookML:

  1. Primeiro, navegue para o projeto e veja o ficheiro que contém a dimensão à qual quer adicionar imagens. Em seguida, crie uma nova dimensão com base nesse campo, especificamente para a utilização da apresentação das imagens.
  2. Adicione um parâmetro html para definir uma {% if %} declaração condicional do Liquid com a variável value, para cada valor para o qual quer apresentar uma imagem.

    Por exemplo, a dimensão state_flag_image seguinte estabelece uma condição para apresentar as imagens especificadas (com etiquetas html <img> ) quando o valor de state for "California", "New York", "Colorado" ou "Illinois". Para todos os outros estados, pode apresentar 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 para o qual quer apresentar uma imagem. Em alternativa, pode criar um campo de imagem dinâmico através da variável value Liquid, conforme descrito na publicação da comunidade Como adicionar imagens a visualizações.

Em seguida, pode criar um mosaico do painel de controlo para a dimensão da imagem.

Passo 2: crie um mosaico do painel de controlo de imagens dinâmicas

Agora que a dimensão da imagem (state_flag_image) foi criada, pode criar uma análise detalhada que se tornará o mosaico do painel de controlo de imagens dinâmicas.

Crie a sua exploração com os seguintes critérios:

  • Adicione um filtro para a dimensão original (neste caso, state). Defina o filtro para qualquer valor (a flag de estado apresenta a imagem "nenhuma imagem disponível" neste caso, uma vez que não é selecionado nenhum valor de filtro específico). Este valor do filtro é atualizado de acordo com o que o utilizador seleciona para o filtro do painel de controlo. 
  • Selecione a dimensão da imagem (neste caso, state_flag_image) e quaisquer outras dimensões que possam ser necessárias para a consulta que determina a imagem (por exemplo, se quiser ter em conta uma data, pode incluir a data, etc.).
  • Altere o limite de linhas para uma linha.
  • Altere o tipo de visualização para uma visualização de valor único e oculte todas as outras colunas, exceto a dimensão da imagem (state_flag_image). 

O Explore apresenta o primeiro resultado de imagem na visualização de valor único renderizada no painel Visualização. A imagem de apresentação é alterada com base no valor do filtro que o utilizador seleciona no painel de controlo final:

Guarde a exploração num painel de controlo como um mosaico.

Passo 3: adicione filtros ao painel de controlo e retoques finais

Agora, tem de adicionar filtros do painel de controlo ao painel de controlo. Os filtros no painel de controlo atualizam o filtro na funcionalidade Explorar para alterar a imagem apresentada com base na seleção do utilizador.

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

  • Abra a janela Adicionar filtro
  • Selecione o campo pelo qual filtrar. O campo de filtro deve ser a dimensão na qual a dimensão da imagem se baseia. No caso deste exemplo, o campo do filtro é state.
  • Selecione o mosaico de imagem do passo 2 no separador Mosaicos a atualizar.
  • Selecione a dimensão original (estado, neste caso) no menu pendente inline Campo a filtrar.
  • Selecione outros mosaicos para atualizar conforme pretendido.
  • Personalize o filtro como quiser. Se selecionar a opção de controlo Avançado, certifique-se de que desmarca a opção Permitir vários valores de filtro, que é ativada automaticamente para a opção de controlo Avançado.

Agora, o mosaico de imagem é atualizado com a seleção do filtro de utilizador.

Quando um utilizador opta por filtrar por "Califórnia", o painel de controlo apresenta a bandeira do estado e os dados do estado da Califórnia:

Quando um utilizador opta por filtrar por "Colorado", o painel de controlo apresenta a bandeira do estado e os dados do estado do Colorado: