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

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

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

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

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

  • Looker Marketplace からブロックをインストールする場合は、Looker 管理者が Marketplace 機能を有効にする必要があります。
  • 特定のブロックに local_dependency パラメータが含まれている場合は、Looker 管理者がローカル プロジェクトのインポート ラボ機能も有効にする必要があります。これらのブロックには local_dependency パラメータが含まれています。

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

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

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

Marketplace ブロックの LookML にアクセスする

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

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

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

ブロック ファイルの構造

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

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

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

Development Mode を有効にして、ブロックの編集可能なファイルをカスタマイズします。

develop 権限がある場合は、ブロックの CONFIG プロジェクトの refinements.lkml ファイルで LookML をカスタマイズできます。ブロックの CORE プロジェクトですでに定義されているビューと Explore を絞り込むことができます。また、CORE プロジェクトでまだ定義されていない新しいビューと Explore を追加することもできます。他の LookML プロジェクトで LookML の絞り込みによりできる操作は、ブロックの refinements.lkml ファイル内でできます。絞り込まれた LookML と元の 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 ブロックの絞り込みベースのバージョンをインストールし、拡張で構築されたブロックを置き換えることをおすすめしています。この置換プロセスは、Looker Marketplace のブロック リストから新しい (絞り込み) ブロックをインストールし、Looker Marketplace の [管理] ページで元の (拡張) ブロックをアンインストールするだけの簡単なものですが、拡張で構築したブロックに対して行われた可能性のあるカスタマイズは保持されません。また、Looker コンテンツやそのコンテンツに基づく関数(ダッシュボード、Explore、コンテンツのスケジュール配信、アラート)は、元のブロックから新しいブロックに転送されません。

このセクションでは、本来なら拡張が困難か、最初からのやり直しが難しい拡張を使用したプロジェクトで構築されたブロックに対し、カスタマイズ内容を保存する方法について説明します。

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

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

カスタマイズされたブロックを更新して移行の準備を行う

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

  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. extends 行と extension 行全体を削除します。
    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 のインストール

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

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

カスタマイズ設定を新しい Marketplace ブロックに転送する

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

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

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

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

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

元のブロックに基づいて Looker コンテンツを再作成する

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

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

また、必要に応じて、新しい(絞り込み)ブロックを指すために、元の(拡張)ブロックの Explore または LookML ダッシュボードを参照するその他の Looker コンテンツを修正することも必要です。

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

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

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

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

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

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

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

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

また、ブロックのインストール時に指定された、ブロックの接続、データベース、スキーマを表す定数が正しく定義されていることを確認することもできます。そのためには、次の方法があります。

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

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

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

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