Looker Marketplace のブロックのカスタマイズ

Looker BlocksTM は、一般的な分析パターンやデータソースに対応した事前構築済みデータモデルです。このページでは、Looker Marketplace からインストールされた Looker Blocks をデベロッパー様がカスタマイズする方法について説明します。Looker Marketplace は、アプリケーション、ビジュアリゼーション、プラグインなど、さまざまな種類の Looker コンテンツの検出、デプロイ、管理の中心となる場所です。

現在 Looker Marketplace で利用できないブロックや、代替のブロック カスタマイズ メソッドなど、利用可能なすべての Looker ブロックの詳細については、Looker のブロックのドキュメントをご覧ください。

Looker Marketplace から Looker Blocks をインストールして管理するための要件

Looker Marketplace からいくつかのブロックをインストールして使用する前に、Looker 管理者は次の機能を有効にする必要があります。

  • Looker Marketplace を通じてブロックをインストールする場合は、Looker 管理者が Marketplace 機能を有効にする必要があります。
  • 特定のブロックに local_dependency パラメータが含まれている場合、Looker 管理者は Local Project Import Labs 機能も有効にする必要があります。これらのブロックには、local_dependency パラメータが含まれています。

    • デジタル マーケティング分析
    • セールス分析
    • ウェブ解析

Marketplace からパッケージをインストールして管理するには、developmanage_modelsdeploy 権限が必要です。

Looker Marketplace からの Looker Blocks のインストール管理については、Looker Marketplace のドキュメント ページをご覧ください。

Marketplace ブロックの LookML へのアクセス

絞り込みを使用するプロジェクトに基づくブロックは、単一の編集可能な CONFIG プロジェクトとして Marketplace からインストールされ、すべての LookML コードと定数パラメータ化を含むコア プロジェクトをリモートでインポートします。

ブロックを Marketplace からインストールすると、[Develop] メニューからプロジェクト リストにあるプロジェクトの名前をクリックすると、そのプロジェクトにアクセスできます。Marketplace の絞り込みブロックの名前の先頭には、通常は marketplace_ が続き、その後にリスティング ID が付加されます。

ブロックの読み取り専用 CORE プロジェクトを直接変更することはできませんが、ブロックの CONFIG ファイルをカスタマイズするときに、ブロックの読み取り専用 CORE ファイルで定義されている LookML を参考として使用することをおすすめします。ブロックの CORE ファイルを表示するには、IDE でブロックのプロジェクト ファイルに移動し、IDE ファイル ブラウザで imported_projects ディレクトリを展開します。

ブロック ファイルの構造

絞り込み用に構築されたブロックをインストールすると、これらのファイルはブロック プロジェクトの CONFIG 部分の一部として自動的に作成されます。

ファイル名 知る Function
<model_name>.model.lkml すべてのユーザー(読み取り専用) ブロック インストールに関連付けられた仮想モデルファイル。ブロックの CORE プロジェクトからのモデルのインポートを処理します。ブロックをアンインストールするか更新すると、関連するモデルファイルが削除され、複数のブロックのインストール間でモデルの競合が生じます。
manifest.lkml develop 権限を持つユーザーが編集できます プロジェクトとその外部依存関係を記述します。ブロック インストールの Marketplace リスティング ID が含まれます。marketplace キーワードを使用してブロックの CORE プロジェクト ファイルをリモートでインポートできます。
marketplace_lock.lkml すべてのユーザー(読み取り専用) CORE プロジェクトのリモート インポートを処理するマニフェスト ファイル内の marketplace_ref キーワードへの参照が含まれています。インストールに関連付けられている具体的なリスティング、バージョン、モデル情報を提供します。インストール中に設定される(および UI の [管理] オプションを使用して更新できる)定数に関する情報が含まれます。
refinements.lkml develop 権限を持つユーザーが編集できます デベロッパーは、インポートした CORE プロジェクト ファイルで定義されたビューと Explore を絞り込むことができます。

Marketplace ブロックのカスタマイズ

開発モードを有効にして、ブロック可能な編集可能なファイルをカスタマイズします。

develop 権限がある場合、Block の CONFIG プロジェクトの refinements.lkml ファイルで LookML をカスタマイズできます。ブロックの CORE プロジェクトですでに定義されているビューと Explore を調整したり、CORE プロジェクトでまだ定義されていない新しいビューや Explore を追加したりできます。他の LookML プロジェクトの LookML 絞り込みで可能なことはすべて、ブロックの refinements.lkml ファイルで可能です。絞り込みと元の LookML の組み合わせは、オブジェクトの元の LookML と同様に動作します。

CONFIG プロジェクトの manifest.lkml ファイルに変更を加えて、そのブロックでキャプチャする必要がある依存関係を指定することもできます。

必要なカスタマイズに合わせてカスタマイズするために、これらのファイルを変更する必要はありません。CONFIG プロジェクトに新しいファイルを作成することもできます。refinements.lkml ファイルの新しいファイルを必ず include してください。

絞り込みファイルのカスタマイズ

develop 権限がある場合、カスタム LookML を CONFIG プロジェクトに追加して、追加データをミキシングしたり、ブロックの中核分析モデルを変更したりできます。新しいビューを作成して既存の Explore に結合したり、新しいフィールドを定義したり、既存のフィールドを再定義したり、必要に応じてラベルを適用して分析用のモデルを作成したりできます。CONFIG プロジェクトで新しいファイルを作成した場合、絞り込みファイルで include 使用する必要があります。

たとえば、あるブロックをインストールしていて、その refinements.lkml ファイルに以下が含まれているとします。

include: "//<listing_id>/**/*.view.lkml"
include: "//<listing_id>/**/*.explore.lkml"

ここで、listing_idmanifest.lkml ファイルの listing パラメータの値です。

絞り込みを使用して、flights というビューに新しいディメンションを追加できます。

include: "//<listing_id>/**/*.view.lkml"
include: "//<listing_id>/**/*.explore.lkml"

view: +flights {
  dimension: air_carrier {
    type: string
    sql: ${TABLE}.air_carrier ;;
  }
}

または、aircraft という Explore にラベルを適用して、UI に「Aircraft Simplified」というラベルを表示することもできます。

include: "//<listing_id>/**/*.view.lkml"
include: "//<listing_id>/**/*.explore.lkml"

explore: +aircraft {
  label: "Aircraft Simplified"
}

refinements.lkml ファイルはブロックの仮想ファイルに自動的に含まれ、CORE プロジェクトからモデルが基本的にインポートされます。

この高度なトピックについて詳しくは、LookML の絞り込みのドキュメントをご覧ください。

編集可能なマニフェスト ファイルをカスタマイズする

絞り込みを使用するブロックでは、CORE プロジェクトと CONFIG プロジェクトの両方にマニフェスト ファイルがありますが、CONFIG プロジェクトのマニフェスト ファイルのみが編集可能です。

CONFIG manifest.lkml ファイルを編集して、CORE プロジェクトのマニフェスト ファイルにすでに含まれているパラメータにプロジェクト パラメータを追加できます。たとえば、local_dependency を追加して、ブロックを同じ Looker インスタンス上の別のブロックに結合できます。

local_dependency パラメータを含むブロックを使用または構築するには、Looker 管理者がまずローカル プロジェクト インポート ラボの機能を有効にする必要があります。

定数の値の更新

ブロックの定数は、インポートした CORE プロジェクトのマニフェスト ファイルで定義します。定数値のオーバーライド(許可されている場合)は、設定中に Marketplace UI で行うか、ブロックを更新する必要があります。ブロックを更新するには、ユーザーに developmanage_modelsdeploy の権限が必要です。

ブロックを更新することで、定数の値をオーバーライドするには:

  1. Looker Marketplace で、更新するブロックに移動します。
  2. [管理] ボタンをクリックします。
  3. 更新するブロック名の横にある歯車アイコンをクリックします。これにより、ブロック設定ウィンドウが開きます。
  4. 必要に応じて定数値を変更します。
  5. [更新] をクリックしてブロック構成ウィンドウを閉じ、ブロックを更新します。

変更は、インストール済みプロジェクトの読み取り専用の marketplace_lock.lkml ファイルに反映されます。

拡張を使用する Marketplace ブロックのカスタマイズを保持する

Looker Marketplace から入手可能なブロックの一部は、LookML の拡張機能を使用するプロジェクトで構成されています。Looker は、Looker 21.8 以降のインスタンスのすべての Marketplace ブロックを、LookML の絞り込みを利用するプロジェクト構造に変換し、拡張に基づくブロックのサポートを削除します。

Looker は、インスタンス上の任意の Marketplace Blocks の精密化ベースのバージョンをインストールすることをおすすめします。これらのブロックが使用可能になると、拡張されたブロックが置き換えられます。この置き換えプロセスは簡単です。Looker Marketplace のブロック リスティングから新しい(refinements)ブロックをインストールし、Looker Marketplace の [Manage] ページで元の(拡張機能)ブロックをアンインストールできます。ただし、拡張を使用して構築されたブロックに対して行われたカスタマイズは保持されません。Looker では、そのコンテンツに基づく Looker のコンテンツまたは機能(ダッシュボード、Explore、コンテンツ配信のスケジュール設定、アラート)も、元のブロックから新しいブロックに移行されません。

このセクションでは、拡張を使用するプロジェクトでビルドされたブロックのカスタマイズを、他の方法ではゼロから複製することが難しい、または時間がかかる場合に保持する方法について説明します。

ブロックのカスタマイズを保持するには、Marketplace でパッケージをインストールして管理する権限を持つユーザーが以下の操作を行う必要があります。

  1. 移行をブロックするため、元のブロックの CONFIG プロジェクトを更新する
  2. Looker Marketplace から新しいバージョンのブロックをインストールする
  3. 新しい Marketplace ブロックにカスタマイズを移行する
  4. 元のブロックに基づいて Looker コンテンツを再作成する
  5. 拡張機能で構築されたブロックのバージョンをアンインストールする

移行の準備としてカスタマイズしたブロックを更新する

このセクションでは、拡張を使用して構築されたブロック内の主要なプロジェクト ファイルを更新し、ブロックのカスタマイズを新しい絞り込みベースのブロックにコピーできるようにする方法について説明します。拡張を使用するプロジェクトに基づくブロックは、読み取り専用の CORE プロジェクトおよび編集可能な CONFIG プロジェクトとして Marketplace からインストールされます。

  1. 次のいずれかの方法で、[開発] セクションからブロックの CONFIG プロジェクトに移動します。

    • [プロジェクト] オプションをクリックし、プロジェクトの名前をクリックします。
    • プロジェクトのリストで、ブロックの CONFIG プロジェクトの名前をクリックします。

    通常、CONFIG プロジェクト名は _config で終わります。一方、CORE プロジェクトの名前には通常、接尾辞がありません。

  2. プロジェクトのモデルファイルを開きます。たとえば、次のようになります。


    explore: ga_sessions_config {
      extends: [ga_sessions_core]
      extension: required
      join: user_sales_data {
        sql_on: ${user_sales_data.full_visitor_id} = ${ga_sessions.full_visitor_id} ;;
      }
      join: sales__by__category {
        sql: LEFT JOIN UNNEST(${user_sales_data.sales_by_category}) as sales__by__category;;
      }
    }

    explore: future_input_config {
      extends: [future_input_core]
      extension: required
      join: future_purchase_prediction {
        type: left_outer
        sql_on: ${future_input.full_visitor_id} = ${future_purchase_prediction.full_visitor_id} ;;
        relationship: one_to_one
      }
    }

  1. 開発モードの場合:

    1. extendsextension の行全体を削除します。
    2. explore 名から _config を削除します。
    3. explore 名の前に + を追加します。

    前述のモデルファイルの例は次のようになります。


    explore: +ga_sessions {
      join: user_sales_data {
        sql_on: ${user_sales_data.full_visitor_id} = ${ga_sessions.full_visitor_id} ;;
      }
      join: sales__by__category {
        sql: LEFT JOIN UNNEST(${user_sales_data.sales_by_category}) as sales__by__category;;
      }
    }

    explore: +future_input {
      join: future_purchase_prediction {
        type: left_outer
        sql_on: ${future_input.full_visitor_id} = ${future_purchase_prediction.full_visitor_id} ;;
        relationship: one_to_one
      }
    }

  1. このファイルの内容を後からコピーして保持します。

新しい Marketplace Block のインストール

拡張から絞り込みへの変換が行われているブロックの詳細については、Looker 21 リリースのハイライトをご覧ください。バージョン番号を確認することで、拡張ブロックリストを絞り込みブロックリストと区別できます。拡張ブロックは、絞り込みブロックの背後にあるメジャー バージョンの 1 つになります。たとえば、extended ブロックをバージョン 1.0.4、絞り込みブロックをバージョン 2.0.0 にします。

絞り込みを使用するプロジェクトに基づくブロックは、単一の編集可能な LookML プロジェクトとして Marketplace からインストールされ、すべての LookML と定数パラメータ化を含むプロジェクトをリモートでインポートします。

  1. Looker メニューバーのショップ アイコンを選択して、Looker Marketplace に移動します。
  2. 絞り込みに基づく新しいマーケットプレイス ブロックのリスティングをクリックします。このブロックには、拡張を使用して構築された既存のブロックと同じ名前が付けられています。
  3. [インストール] をクリックして、新しいブロックをインストールします。このブロックがインストールされると、Looker Marketplace の [管理] ページに 2 つの同じリスティングが表示されます。

カスタマイズを新しい Marketplace ブロックに移行する

このセクションでは、元の(拡張)ブロックの更新内容を新しい(絞り込み)ブロックに移行する方法について説明します。

  1. [開発] セクションで、次のいずれかの方法で新しいブロックのプロジェクトを開きます。

    • [プロジェクト] オプションをクリックし、プロジェクトの名前をクリックします。
    • プロジェクトのリストで、ブロックするプロジェクトの名前をクリックします。

    Marketplace の絞り込みブロックの名前の先頭には、通常は marketplace_ が続き、その後にリスティング ID が付加されます。

  2. refinements.lkml ファイルに、元の(拡張)ブロックモデルの更新済みコンテンツを貼り付けます。絞り込みファイルにすでに含まれている include ステートメントは必ず保持してください。

元のブロックに基づく Looker コンテンツの再作成

Marketplace のブロックの絞り込みベースのバージョンを採用する最後のステップでは、拡張ベースの元のブロックをアンインストールします。一部の拡張ベースのブロックには、事前構築された LookML ダッシュボードと Explore が含まれています。元の(拡張)ブロックで定義された LookML ダッシュボードに基づき、ユーザーがアラートまたはメール配信のスケジュールを作成した場合、そのブロックや Looker ブロックが Looker Marketplace からアンインストールされると、そのアラートやスケジュールはそれぞれ無効になるか失敗します。

これらのアラートまたはスケジュールされた配信を、新しい(絞り込み)ブロックの LookML ダッシュボードで再作成する必要があります。Looker の管理者とスケジュールおよびアラートに関する適切な権限を持つユーザーは、管理セクションの [アラートとスケジュール] ページで、(拡張機能の)ブロック ダッシュボードの名前を検索して、必要に応じて(精度の高い)対応するダッシュボード上で新しいアラートや配信スケジュールを設定できます。

必要に応じて、元の(拡張)Explore ブロックまたは LookML ダッシュボードを参照するその他の Looker コンテンツについても、新しい(調整)ブロックを指すように変更する必要があります。

元のブロックのアンインストール

拡張機能を使用して構築されたブロックのバージョンをアンインストールするには:

  1. Looker メニューバーのショップ アイコンを選択して、Looker Marketplace に移動します。

  2. Looker Marketplace の左側のナビゲーションで [Manage] を選択して、[Manage] ページを開きます。

  3. [管理] ページで、ゴミ箱のアイコンをクリックして、元の(拡張)ブロックをアンインストールします。バージョン番号を確認することで、拡張ブロックリストを絞り込みブロックリストと区別できます。拡張ブロックは、絞り込みブロックの背後にあるメジャー バージョンの 1 つになります。たとえば、extended ブロックをバージョン 1.0.4、絞り込みブロックをバージョン 2.0.0 にします。

ブロックをアンインストールすると、元の(拡張)ブロックリストは Looker インスタンスの左側のナビゲーションから消え、Explore の Explore は [Explore] セクションに表示されなくなり、LookML ダッシュボードは LookML ダッシュボード フォルダに表示されなくなります。また、ブロックの LookML ダッシュボードに基づくアラートやスケジュール済みの配信はすべて無効になるか失敗します。

ブロックのトラブルシューティング

Marketplace ブロックにエラーが表示される場合は、スキーマがブロックの構造と一致していない可能性があります。

また、ブロックのインストール時に指定された定数(ブロックの接続、データベース、スキーマを表すもの)が正しく定義されているかどうか確認することもできます。手順は次のとおりです。

  1. Looker メニューバーのショップ アイコンを選択して、Looker Marketplace に移動します。

  2. Looker Marketplace の左側のナビゲーションで [Manage] を選択して、[Manage] ページを開きます。

  3. [管理] ページでブロックの歯車アイコンをクリックして、構成設定を表示します。

  4. [構成の更新] ウィンドウで、ブロックが正しく構成されていることを確認します。変更を加えたら [更新] をクリックし、更新を保存してブロック設定ウィンドウを閉じます。