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 です。このページの link で Liquid 変数を使用するセクションで説明されているように、Liquid 変数を使用してリンクを動的にすることができます。
  • icon_url は、ユーザーのブラウザからアクセスできる、画像ファイルを含む URL です。これにより、ユーザーはリンクをクリックするとどこに移動するのかを一目で把握しやすくなります。アイコンが不要な場合、icon_url パラメータは必須ではありません。企業ロゴが必要な場合は、http://www.google.com/s2/favicons?domain=[company website of interest] というパターンで Google 検索を行うと、.ico 形式の画像を探すことができます。

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

[Orders ID] ディメンションにリンクを追加すると、Look を表示しているユーザーがこのアクションを利用できるようになります。


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

Look で、ユーザーは [注文 ID] フィールドのいずれかの値の 3 つのドットメニューをクリックしてアクセスできるリンク メニューのオプションの中に、[Contact Warehouse Support] リンクが表示されます。

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

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

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

リンクにアクセスするには、explore 権限または see_drill_overlay 権限のいずれかが必要です。

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

この 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 検索結果が新しいブラウザタブで開きます。選択したアーティスト名が、URL の {{ value }} の場所に挿入されます。

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

Looker のコンテンツへのリンク

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

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

  • 探索: /explore/YOUR_MODEL_NAME/YOUR_EXPLORE_NAME?fields=view_name.field_name1,view_name.field_name2...
    • 既存の Explore の Explore URL を取得するには、[拡張 URL] 歯車アイコン オプションを選択します。
    • 探索フィルタは URL に f[view_name.field_name] として表示されます。例については、関連する Explore へのリンクのセクションをご覧ください。
  • 外観: /looks/YOUR_LOOK_NUMBER
  • User-Defined Dashboard: /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] フィルタを含む別の既存の Explore にアクセスできるようにします。リンクされた Explore が、ユーザーが選択した都市でフィルタされるようにします。

手順は次のとおりです。

  1. ドリルダウンする既存の Explore の URL を取得します。
  2. [市区町村] ディメンションに 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 }} タグと変数を挿入します。この場合、フィルタ要素 f[users.city]= がある URL 文字列に値を配置して、ユーザーが選択した都市で Explore をフィルタします。
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"
  }
}

[市区町村] ディメンションに、[市区町村の指標のデータ探索] オプションが表示される 3 つのドットのリンク メニューが表示されます。

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

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

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

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

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

次の例は、link パラメータで _filters['view_name.field_name'] 変数を使用して、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 で安全に使えない文字列をパーセントでエンコードされた文字列に変換しています。これにより、スペースやカンマなどの特殊文字を含むフィルタ値をリンクされたダッシュボードに渡すことができます。

たとえば、ユーザーがクエリを「カリフォルニア州」でフィルタしたとします。ユーザーが [名前] フィールドの値の横にある 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 管理者が ビジュアル ドリル機能を有効にしている場合、link パラメータと Liquid 変数を使用して、Explore と Look のドリル オーバーレイに表示されるビジュアリゼーションをカスタマイズできます。ダッシュボードでは、ビジュアル ドリル機能を有効にしなくても、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 に追加されることがあります。参照先のフィールドがクエリのビジュアリゼーションに存在せず、ビジュアリゼーションが列を手動で並べ替えたテーブルグラフである場合、ダウンロードした一部の形式の列の順序が影響を受ける可能性があります。