Vous pouvez ajouter des images aux tableaux de bord Looker en codant en dur l'URL d'une image dans une tuile de texte Markdown. Toutefois, les images des blocs de texte sont statiques et ne sont pas mises à jour en fonction des résultats. Que faire si vous souhaitez qu'une image de tableau de bord change de manière dynamique en fonction d'une valeur de filtre sélectionnée par l'utilisateur ?
Cette page de bonnes pratiques explique comment obtenir une image de tableau de bord dynamique à l'aide de Liquid et du paramètre html
.
La solution
La solution suivante est basée sur un ensemble de données d'e-commerce qui inclut un champ appelé users.state
, représentant les états dans un ensemble de données d'e-commerce hypothétique :
dimension: state { type: string sql: ${TABLE}.state ;; }
Supposons que vous souhaitiez afficher l'image du drapeau d'un État sur un tableau de bord qui se mettra à jour en fonction de l'État selon lequel un utilisateur choisit de filtrer les résultats du tableau de bord.
Pour créer l'image dynamique du tableau de bord, vous devez suivre trois étapes :
- Créez une dimension d'image dans LookML.
- Créez un bloc de tableau de bord d'image dynamique.
- Ajoutez des filtres de tableau de bord et apportez les touches finales.
Étape 1 : Créez une dimension d'image dans LookML
Pour créer une dimension d'image dans LookML :
- Tout d'abord, accédez au projet et au fichier de vue contenant la dimension à laquelle vous souhaitez ajouter des images. Créez ensuite une dimension basée sur ce champ, spécifiquement pour afficher les images.
-
Ajoutez un paramètre
html
pour définir une instruction conditionnelle Liquid avec la variablevalue
pour chaque valeur pour laquelle vous souhaitez afficher une image.{% if %}
Par exemple, la dimension
state_flag_image
suivante établit une condition pour afficher les images spécifiées (avec des tagshtml <img>
) lorsque la valeur destate
est"California"
,"New York"
,"Colorado"
ou"Illinois"
. Pour tous les autres états, vous pouvez afficher une icône "Aucune image 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 %} ;; }
-
Créez une condition de valeur pour chaque valeur pour laquelle vous souhaitez afficher une image. Vous pouvez également créer un champ d'image dynamique à l'aide de la variable Liquid
value
, comme décrit dans le post de la communauté Ajouter des images aux visualisations.
Vous pouvez ensuite créer un bloc de tableau de bord pour la dimension "Image".
Étape 2 : Créer un bloc de tableau de bord d'image dynamique
Maintenant que la dimension d'image (state_flag_image
) a été créée, vous pouvez créer une exploration qui deviendra le bloc de tableau de bord d'image dynamique.
Créez votre exploration en respectant les critères suivants :
-
Ajoutez un filtre pour la dimension d'origine (
state
dans cet exemple). Définissez le filtre sur n'importe quelle valeur. L'image "aucune image disponible" s'affichera alors initialement, car aucune valeur de filtre spécifique n'est sélectionnée. La valeur de ce filtre est mise à jour en fonction de ce que l'utilisateur sélectionne pour le filtre du tableau de bord. -
Sélectionnez la dimension de l'image (
state_flag_image
dans le cas présent) et toutes les autres dimensions qui peuvent être nécessaires à la requête déterminant l'image (par exemple, si vous souhaitez prendre en compte une date, vous pouvez l'inclure, etc.). - Définissez la limite de lignes sur une ligne.
-
Définissez le type de visualisation sur Valeur unique et masquez toutes les autres colonnes, à l'exception de la dimension de l'image (
state_flag_image
).
Votre page "Explorer" affichera initialement l'image "aucune image disponible" dans la visualisation de valeur unique affichée dans le panneau Visualisation. L'image affichée change en fonction de la valeur du filtre que l'utilisateur sélectionne dans le tableau de bord final :
Enregistrez l'exploration dans un tableau de bord en tant que vignette.
Étape 3 : Ajoutez des filtres de tableau de bord et apportez les touches finales
Vous devez maintenant ajouter des filtres de tableau de bord. Les filtres du tableau de bord mettront à jour le filtre dans Explorer pour modifier l'image affichée en fonction de la sélection de l'utilisateur.
En mode Édition du tableau de bord, créez le filtre :
- Ouvrez la fenêtre "Ajouter un filtre".
- Sélectionnez le champ à utiliser comme critère de filtrage. Le champ de filtre doit correspondre à la dimension sur laquelle la dimension de l'image est basée. Dans cet exemple, le champ du filtre sera state.
- Sélectionnez la vignette d'image de l'étape 2 dans l'onglet Vignettes à mettre à jour.
- Sélectionnez la dimension d'origine (état dans le cas présent) dans le menu déroulant Champ à filtrer intégré. Sélectionnez les autres vignettes à modifier, si vous le souhaitez.
- Personnalisez le filtre comme vous le souhaitez. Si vous sélectionnez l'option de contrôle Avancé, veillez à désélectionner l'option Autoriser plusieurs valeurs de filtre, qui est automatiquement activée pour l'option de contrôle Avancé.
La vignette d'image est désormais mise à jour en fonction de la sélection du filtre utilisateur.
Lorsqu'un utilisateur choisit de filtrer par "Californie", le tableau de bord affiche le drapeau et les données de l'État de Californie :
Lorsqu'un utilisateur choisit de filtrer par "Colorado", le tableau de bord affiche le drapeau et les données de l'État du Colorado :