Liquid と HTML を使用して動的なダッシュボード画像を作成する

マークダウン テキスト タイルに画像 URL をハードコードすることで、Looker ダッシュボードに画像を追加できます。ただし、テキストタイルの画像は静的で、結果に基づいて更新されることはありません。 ユーザーが選択したフィルタ値に基づいてダッシュボード画像を動的に変更する場合はどうすればよいでしょうか。

このベスト プラクティスのページでは、Liquidhtml パラメータを使用して動的ダッシュボードの画像を作成する方法を説明します。

ソリューション

次のソリューションは、架空の e コマース データセットの状態を表す users.state というフィールドを含む e コマース データセットに基づいています。

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

状態のフラグの画像をダッシュボードに表示するとします。これは、ユーザーがダッシュボードの結果をフィルタリングするために選択した状態に基づいて更新されます。

動的ダッシュボード イメージを作成するには、次の 3 つのステップを完了する必要があります。

  1. LookML で画像ディメンションを作成します。
  2. 動的画像ダッシュボード タイルを作成します。
  3. ダッシュボード フィルタと最終調整を追加します。

ステップ 1: LookML で画像ディメンションを作成する

LookML で画像ディメンションを作成するには:

  1. まず、プロジェクトに移動し、画像を追加するディメンションを含むファイルを表示します。次に、そのフィールドに基づいて、特に画像の表示用に新しいディメンションを作成します。
  2. 画像を表示する値ごとに、value 変数を使用して Liquid {% dynamic if %} 条件文を定義するための html パラメータを追加します。

    たとえば、下の state_flag_image ディメンションは、state の値が "California""New York""Colorado" または "Illinois"の場合に、指定した画像(html <img> タグ付き)を表示する条件を確立します。上記以外の場合は、「画像がありません」というアイコンを表示できます。

          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. 画像を表示する値ごとに値の条件を作成します。あるいは、可視化に画像を追加する方法のコミュニティ投稿で説明されているように、value Liquid 変数を使用して動的画像フィールドを作成することもできます。

次に、画像ディメンションのダッシュボード タイルを作成します。

ステップ 2: 動的画像ダッシュボード タイルを作成する

画像ディメンション(state_flag_image)が作成されたので、動的画像ダッシュボード タイルになる Explore を作成できます。

Explore は次の基準で作成する。

  • 元のディメンションのフィルタ(この場合は state)を追加します。任意の値に対するフィルタを設定します(この例では、特定のフィルタ値が選択されていないため、state フラグに「no image available」画像が表示されます)。このフィルタ値は、ユーザーがダッシュボード フィルタに選択した内容に従って更新されます。 
  • 画像ディメンション(この例では state_flag_image)と、イメージを決定するクエリに必要な他のディメンションを選択します(たとえば、日付を考慮したい場合は、日付、など)。
  • 行の上限を 1 行に変更します。
  • 可視化タイプを 1 つの値の可視化に変更し、画像のディメンション(state_flag_image)以外の列は非表示にします。

Explore では、[可視化] パネルにレンダリングされた単一の値の可視化で最初の画像結果が表示されます。表示画像は、ユーザーが最終ダッシュボードで選択したフィルタ値に基づいて変わります。

Explore をタイルとしてダッシュボードに保存する。

ステップ 3: ダッシュボードのフィルタと最終的な調整を追加する

ダッシュボードにダッシュボード フィルタを追加する必要があります。ダッシュボードのフィルタによって、Explore のフィルタが更新され、ユーザーの選択に基づいて表示される画像が変更されます。

ダッシュボードの編集モードで、フィルタを作成します。

  • [フィルタの追加] ウィンドウを開きます
  • フィルタに使用するフィールドを選択します。フィルタ フィールドは、画像ディメンションのディメンションである必要があります。この例の場合、フィルタのフィールドは state です。
  • [アップデートするタイル] タブでステップ 2 の画像タイルを選択します。
  • インラインの [Filter to Field] プルダウン メニューで、元のディメンション(この場合は state)を選択します。
  • 必要に応じて、他のタイルを選択して更新します。
  • 必要に応じて、フィルタをカスタマイズします。もし詳細 制御オプションを使用するには、詳細コントロール オプション向けに複数のフィルタを許可するオプションが自動的に有効になります。

これで、ユーザーフィルタを選択して画像タイルが更新されます。

ユーザーが「カリフォルニア州」でフィルタすると、ダッシュボードにはカリフォルニア州のフラグとデータが表示されます。

ユーザーが「Colorado」でフィルタすると、ダッシュボードにはコロラド州の状態フラグとデータが表示されます。