link

用途

view: view_name {
  dimension: field_name {
    link: {
      label: "desired label name"
      url: "desired_url"
      icon_url: "url_of_an_image_file"
    }
    # Possibly more links
  }
}
階層
link
使用可能なフィールドタイプ
ディメンション、メジャー

許可
さまざまなパラメータ

定義

link パラメータを使用すると、ユーザーが Looker から関連コンテンツに直接簡単に移動できるよう、ディメンションやメジャーにウェブリンクを追加できます。link パラメータの形式は次のとおりです。

dimension: field_name {
  link: {
    label: "desired label name"
    url: "desired_url"
    icon_url: "url_of_an_image_file"
  }
  # Possibly more links
}

link パラメータには、次のような子パラメータがあります。

  • label は、ユーザーに表示するリンクの名前です。
  • url は、リンクの移動先となる URL です。このページの Using Liquid variables with link で説明されているように、Liquid 変数を使用してリンクを動的にできます。
  • icon_url は、ユーザーのブラウザからアクセスできる、画像ファイルを含む URL です。これにより、ユーザーはリンクの移動先を一目で把握できます。アイコンが不要な場合、icon_url パラメータを指定する必要はありません。企業ロゴが必要な場合は、http://www.google.com/s2/favicons?domain=[company website of interest] というパターンで Google 検索を行うと、.ico 形式の画像を探すことができます。

ある e コマース企業では、先月の保留中の注文を表示する Look などの Looker コンテンツから、従業員が倉庫サポートに直接連絡できるようにしたいと考えています。この Look には、注文 ID と、各注文に関連付けられた顧客のユーザー ID が含まれています。

Look を表示しているユーザーがこの操作を行えるようにするには、[注文 ID] ディメンションにリンクを追加します。


dimension: id {
  primary_key: yes
  type: number
  sql: ${TABLE}.id ;;
  link: {
    label: "Contact Warehouse Support"
    url: "mailto:warehouse@altostrat.com"
  }
}

Look では、ユーザーは [注文 ID] フィールドのいずれかの値の 3 ドット メニューをクリックして、リンク メニューのオプションから [倉庫サポートに連絡] リンクを選択できます。

リンク名をクリックすると、リンク先のコンテンツに移動します。この例では、指定されたメールアドレス宛の空白のメール下書きが新しいタブで開きます。

ユーザーがリンクをクリックすると、Looker は新しいブラウザタブまたは同じタブ(埋め込みクエリの場合は iframe)でリンクを開きます。

  • https://example.looker.com などの絶対リンクは、新しいブラウザタブで開きます。
  • /dashboards/456 などの相対リンクは、同じブラウザタブまたは iframe で開きます。リンクが開いたら、ブラウザの [戻る] をクリックして元のクエリに戻ることができます。

リンクにアクセスするには、ユーザーに explore 権限または see_drill_overlay 権限が必要です。

link パラメータは Liquid 変数 をサポートしており、行レベルと値レベルでコンテンツをさらにインタラクティブにできます。LookML では、Liquid 使用タグの 2 種類がサポートされています。値入力 {{ }} タグと条件ロジック {% %} タグです。

この 2 つのうち、{{ }} は、value_filters['view_name.field_name'] Liquid 変数 と組み合わせて link で最もよく使用されます。これは、{{ }} タグが、URL 内など、配置された場所に値を直接入力するためです。

Liquid {{ }} タグを value 変数と _filters['view_name.field_name'] 変数で使用して、link でコンテンツをインタラクティブにする例については、このページの例をご覧ください。

外部コンテンツにリンクする

たとえば、artist_name ディメンションがあり、ユーザーが Looker から直接そのアーティストの Google 検索を実行できるようにしたいとします。value Liquid 変数を使用して、次のようにディメンションにそのオプションを追加できます。

dimension: artist_name {
  link: {
    label: "Google"
    url: "http://www.google.com/search?q={{ value }}"
    icon_url: "http://google.com/favicon.ico"
  }
}

ユーザーが [アーティスト名] フィールドの値の 3 ドット メニューをクリックすると、Looker に [リンク] メニューが表示されます。このメニューには、サンプル LookML で作成されたリンクが含まれています。このリンクをクリックすると、選択したアーティストの Google 検索が新しいブラウザタブで開きます。選択したアーティスト名は、{{ value }} が配置されている URL に挿入されます。

このパターンは、ウェブ アプリケーション間の移動を容易にするために、ユーザーのブラウザがアクセスできる他の外部ウェブサイト(チケット管理システム、顧客管理システム、その他のビジネス関連ツールなど)に複製できます。

Looker のコンテンツにリンクする

外部サイトに加えて、link パラメータを使用して、カスタム ドリル エクスペリエンスのために、他の関連する Looker Explore、Look、ダッシュボードにユーザーを誘導できます。同じ例を、フィールドの LookML html パラメータのリンクに適用することもできます。

まず、リンク先の既存の Explore、Look、ダッシュボードの URL を取得する必要があります。次に、フィルタ値や名前などの URL の特定の要素を、{{ }} タグを含む value 変数と _filters['view_name.field_name'] 変数に置き換えます。これらの変数は、ユーザーが選択した値を、置き換える URL 要素に入力します。コンテンツ URL の基本的な構造は次のとおりです。

  • Explore: /explore/YOUR_MODEL_NAME/YOUR_EXPLORE_NAME?fields=view_name.field_name1,view_name.field_name2...
    • 既存の Explore の Explore URL を取得するには、[**拡張 URL**] 歯車アイコン オプションを選択します。
    • Explore フィルタは、URL に f[view_name.field_name] として表示されます。例については、関連する Explore にリンクするをご覧ください。
  • Look: /looks/YOUR_LOOK_NUMBER
  • ユーザー定義のダッシュボード: /dashboards/YOUR_DASHBOARD_NUMBER?FILTER_NAME_1=VALUE&FILTER_NAME_2=VALUE

    • 既存のダッシュボードの URL を取得するには、ダッシュボード ページからブラウザの URLをコピーします。
  • LookML ダッシュボード: /dashboards/YOUR_MODEL::YOUR_DASHBOARD

    • 既存の LookML ダッシュボードの URL を取得するには、ダッシュボード ページから ブラウザの URL をコピーします。

ユーザー定義のダッシュボードと LookML ダッシュボードの両方のダッシュボード フィルタは、URL に filter_name として表示されます。ここで、filter_name はダッシュボードに配置されたフィルタの名前です。例については、リンクされたコンテンツに既存のフィルタ値を渡すをご覧ください。

フィルタ値や名前などの URL の要素は、URL エンコードされます。クエリ文字列の開始を示す特殊文字 ?、要素を区切る &、スペースを表す %20 などがあります。例については、他の比較演算子の URL エンコードをご覧ください。

リンク先のコンテンツの URL を取得したら、Liquid を使用して、value 変数または _filters['view_name.field_name'] 変数と {{ }} タグを使用して、フィールドの値を URL の任意の要素に挿入できます。クエリ URL の各部分について詳しくは、URL とクエリ パラメータの使用に関する Looker コミュニティの投稿をご覧ください。

City というディメンションがあります。ユーザーが、都市の指標と [City] フィルタを含む別の既存の Explore にアクセスできるようにします。リンク先の Explore は、ユーザーが選択した都市でフィルタされるようにします。

手順は次のとおりです。

  1. ドリルダウンする既存の Explore の URL を取得します。
  2. [City] ディメンションに link パラメータを追加します。
  dimension: city {
  type: string
  sql: ${TABLE}.city ;;
  link: {
    label: "City Metrics Explore"
    url: "/explore/ecommerce_model/order_items_explore?fields=users.city,orders.count,users.count&f[users.city]=&sorts=orders.count+desc&limit=500"
  }
  }

ここでは、URL が limit=500 に短縮されています。これにより、Explore の結果が 500 行に制限されます。明確にするために記すと、必要に応じて、URL の残りの部分を含めることができます。通常、これにはビジュアリゼーション設定の URL エンコードが含まれます。

  1. 値を URL に挿入する場所に、Liquid {{ value }} タグと変数を挿入します。この例では、ユーザーが選択した都市でフィルタされる Explore の URL 文字列で、フィルタ要素 f[users.city]= が配置されている場所に値を配置します。
dimension: city {
  type: string
  sql: ${TABLE}.city ;;
  link: {
    label: "City Metrics Explore"
    url: "/explore/ecommerce_model/order_items_explore?fields=users.city,orders.count,users.count&f[users.city]={{ value }}&sorts=orders.count+desc&limit=500"
  }
}

これで、[City] ディメンションに 3 ドット リンク メニューが表示され、[City Metrics Explore] オプションが表示されます。

ユーザーがリンクをクリックすると、選択した都市でフィルタされた [City Metrics Explore] にリダイレクトされます。

次の例で説明するように、Looker コンテンツにリンクする際に既存のフィルタ値を保持することもできます。

例: リンクされたコンテンツに既存のフィルタ値を渡す

link パラメータでサポートされているもう 1 つの Liquid 変数は _filters['view_name.field_name'] です。この変数は、フィルタに入力された既存の値を取得し、リンクされた Explore、ダッシュボード、Look に渡します。

コンテンツ URL では、フィルタ値が指定されている場所を確認し、_filters['view_name.field_name'] 変数に置き換えることができます。クエリ URL の各部分について詳しくは、URL とクエリ パラメータの使用に関する Looker コミュニティの投稿をご覧ください。

次に、_filters['view_name.field_name'] 変数を使用して、link パラメータで users.state というフィールドの既存のフィルタ値を渡すディメンションの例を示します。

dimension: name {
  link: {
    label: "Business Pulse By State Dashboard"
    url: "/dashboards/694?State={{ _filters['users.state'] | url_encode }}"
  }
}

この例では、ユーザーが users.state ディメンションでクエリをフィルタすると、リンクされたダッシュボードは元のクエリで選択したのと同じ州で自動的にフィルタされます。この例では、Liquid フィルタ url_encode を含めることで、URL で安全でない文字列がパーセント エンコードされた文字列に変換されます。これにより、スペースやカンマなどの特殊文字を含むフィルタ値を、リンクされたダッシュボードに渡すことができます。

たとえば、ユーザーがクエリを「California」州でフィルタしたとします。ユーザーが [名前] フィールドの値の横にある 3 ドット メニューをクリックすると、[リンク] メニューにダッシュボード [Business Pulse by State] へのリンクが表示されます。ユーザーがこのリンクをクリックすると、[Business Pulse by State] ダッシュボードはすでに「California」州でフィルタされています。

これは、リンクされた Look と Explore にフィルタ値を渡す場合にも機能します。

dimension: name {
    link: {
      label: "Average Order Profit Look"
      url: "/looks/249?&f[users.state]={{ _filters['users.state'] | url_encode }}"
    }
    link: {
      label: "User Facts Explore Explore"
      url: "/explore/ecommerce/users?fields=users.id,users.name&f[users.state]={{ _filters['users.state'] | url_encode }}"
    }
  }

複数のフィルタを渡すには、次の URL のように、フィルタの間に & を配置します。

dimension: name {
  link: {
    label: "Business Pulse By State Dashboard"
    url: "/dashboards/694?State={{ _filters['users.state'] | url_encode }}&Date={{ _filters['orders.date'] | url_encode }}"
  }
  link: {
    label: "Average Order Profit Look"
    url: "/looks/249?&f[users.state]={{ _filters['users.state'] | url_encode }}&f[orders.date]={{ _filters['orders.date'] | url_encode }}"
  }
}

ダッシュボード フィルタの作成については、LookML ダッシュボードの作成ユーザー定義のダッシュボード フィルタの追加と編集のドキュメント ページをご覧ください。

Looker 管理者が ビジュアル ドリル 機能を有効にしている場合は、Explore と Look のドリル オーバーレイに表示されるビジュアリゼーションを link パラメータと Liquid 変数を使用してカスタマイズできます。ダッシュボードでは、link パラメータを使用してビジュアル ドリルをサポートします。**ビジュアル ドリル** 機能を有効にする必要はありません。

ドリル ビジュアリゼーションを散布図に設定する例を次に示します。


  measure: count {
    type: count_distinct
    sql: ${id} ;;
    drill_fields: [created_date, total_sale_price]
    link: {
      label: "Drill as scatter plot"
      url: "
      {% assign vis_config = '{\\"type\\": \\"looker_scatter\\"}' %}
        \{\{ link \}\}&vis_config=\{\{ vis_config | encode_uri \}\}&toggle=dat,pik,vis&limit=5000"
    }
  }

ドリル ビジュアリゼーションのカスタマイズ例については、より強力なデータ ドリルダウンのベスト プラクティス ページをご覧ください。

Looker コンテンツにリンクする際の考慮事項

等しい以外のフィルタ比較演算子を含める必要がある場合や、複数のフィルタを含める必要がある場合、または Looker コンテンツへのリンクでカンマをエスケープする必要がある場合があります。以降のセクションでは、これらのユースケースについて詳しく説明します。

他の比較演算子の URL エンコード

リンクされたフィルタに等しい=)以外の比較演算子を含める場合は、演算子をURL エンコードします。

たとえば、リンクされた Look の order_id フィルタに、クリックした値に関連付けられた order_id フィールドのより小さい< )値を含める場合は、演算子文字(この場合は %3C)を部分的にエンコードして URL に追加します。

f[orders.order_id]=%3C{{ other_orders.order_id._value }}
複数のフィルタを含める

複数のフィルタをリンクされた Look、ダッシュボード、Explore に適用するには、各フィルタをアンパサンド(& )で区切ります。

dimension: name {
  link: {
    label: "Drill Look"
    url:"/looks/looknumber?&f[users.state]={{ value }}[users.region]={{ users.region._value }}&f[users.age]={{ _filters['users.age'] | url_encode }}"
  }
}
カンマをエスケープする

通常 value 変数を使用するリンクされた値のカンマは、filterable_value 変数でエスケープできます。

次のリンクは、選択した users.city 値で結果をフィルタする Explore にドリルダウンします。

dimension: city {
    type: string
    sql: ${TABLE}.city ;;
    link: {
        label: "Drill by City"
        url: "/explore/model_name/explore_name?fields=users.email,users.id&f[users.city]={{ value }}"
    }
}

ユーザーが [Santa Cruz, CA] をクリックして、この都市でフィルタされた結果にドリルダウンすると、ドリル結果には Santa Cruz または CA のいずれかを含むすべての結果が返されます。

value の代わりに filterable_value を使用すると、カンマがエスケープされます。

dimension: city {
    type: string
    sql: ${TABLE}.city ;;
    link: {
        label: "Drill by City"
        url: "/explore/model_name/explore_name?fields=users.email,users.id&f[users.city]={{ filterable_value }}"
    }
}

ドリル結果には、文字列値 Santa Cruz, CA 全体を含むすべての結果が返されます。

ドリル URL にカンマを含むフィルタ値をハードコードする場合は、値を二重引用符で囲んでからバックスラッシュ (\) でエスケープします。

dimension: city {
    type: string
    sql: ${TABLE}.city;;
    link: {
        label: "Drill by City"
        url: "/explore/model_name/explore_name?fields=users.email,users.id&f[users.city]=\"Santa Cruz, CA\"&sorts=users.email"
    }
}

参考情報

  • より高度なカスタム ドリルの例については、より強力なデータ ドリルダウンのベスト プラクティス ページをご覧ください。
  • リンクで {{ value }} を使用する例については、Liquid 変数のドキュメント ページをご覧ください。

知っておくべきこと

ディメンションに別のフィールドを参照する link パラメータが含まれている場合、そのディメンションが使用されているクエリの基になる SQL に追加のフィールドが追加されることがあります。参照先のフィールドがクエリのビジュアリゼーションに存在せず、ビジュアリゼーションが手動で列を並べ替えたテーブルグラフの場合、ダウンロードした形式によっては列の順序が影響を受けることがあります。