Looker Block をカスタマイズする

このページでは、次の Cortex Framework Looker Block を特定のビジネス要件に合わせて調整する方法に関するベスト プラクティスと例の概要について説明します。

インストール

Cortex Framework Looker Block は、 Looker Block をデプロイするドキュメント で説明されているように、いくつかの方法でインストールできます。ただし、ビジネスニーズに合わせてブロックをカスタマイズする最も簡単な方法として、リポジトリをフォークする ことをおすすめします。

Cortex Framework Looker Block は、各レイヤが前のレイヤにロジックの増分を追加する階層型アプローチで作成されています。

  • ベースレイヤ: ソーステーブルを参照するマシン生成の LookML ビュー。
  • コアレイヤ: 新しいフィールドを追加したり、 ベースレイヤのフィールドを変更したりする手書きの変更。
  • 論理レイヤ: さまざまなビューにわたる Explore の定義と結合。

この階層型 アプローチとカスタマイズの鍵となるのは、絞り込みの使用です。また、DRY(Don't Repeat Yourself)の原則に従うために、extendsconstantsが活用されます。ラベル、SQL ステートメント、html、リンク プロパティの動的コンテンツは、 Liquid テンプレート作成言語を使用して生成されます。

Google の一般的なベスト プラクティス:

ファイルとフォルダの構成

Looker Block 内では、各フォルダはオブジェクト タイプ(ビュー、Explore、ダッシュボードなど)のコレクションを表します。個々のオブジェクトは、別々のファイルで定義されます。プロジェクト ルートには、次のキーファイルが含まれています。

  • .model ファイル
  • マニフェスト ファイル
  • README ファイルとその他の Markdown ファイル
  • Marketplace ファイル(ブロックが Looker Marketplace でも利用可能な場合)

ファイル ブラウザ

図 1 。Looker Block 内のフォルダ構成の例。

モデル

モジュール式のファイル管理により、プロジェクトの model ファイルは次のパラメータでスリム化されます。

  1. 乗り継ぎ
  2. include

    含まれるファイルの種類は次のとおりです。

    • コンポーネント(データグループ、関連する場合は named_value_formats
    • Explore(Explore はモデルファイルで定義されていません)
    • ダッシュボード

Block で使用されるビューの include ステートメントは、次の例に示すように、この場所ではなく、個々の Explore ファイル内で定義されます。

connection: "@{CONNECTION_NAME}"

include: "/components/**/*.lkml"
include: "/explores/**/*.explore"
include: "/dashboards/**/*.dashboard"

マニフェスト

マニフェスト ファイルでは、プロジェクト全体で参照される定数を指定します。ブロックに使用される定数の例を次に示します。

  • 接続名
  • プロジェクト ID
  • レポート データセット

Cortex Framework Looker Block では、定数を使用して次のものも定義します。

  • ラベルを表示
  • 項目のラベル
  • HTML 形式
  • URL リンク
  • ダッシュボード名

Looker Block に定義されている定数を確認し、必要に応じて値を変更します。変更は、定数が参照されているすべての場所に適用されます。

ユーザー属性

一部の Looker Block では、 ユーザー属性を管理者が Looker インスタンスで定義する必要があります。デフォルトの言語や通貨のユーザー属性を使用すると、ユーザーまたはグループごとにダッシュボードの表示方法をカスタマイズできます。必要なユーザー属性について詳しくは、各ブロックの 概要 をご覧ください。

ビュー

[Base] フォルダにあるビューは、テーブルからビューを作成を使用して自動的に生成されたものです。これらのファイルは最小限に変更されています。

ラベル、新しいディメンション、 メジャーなど、これらのビューに対する大幅な変更は、絞り込み、extends、派生テーブルを使用して [Core] フォルダに作成されています。

コアフォルダ内では、ビューに接尾辞が付いており、ビューのタイプを示しています。

  • 絞り込みの場合は _rfn
  • 拡張が必要なビューの場合は _ext
  • SQL ベースの派生テーブルの場合は _sdt
  • ネイティブ派生テーブルの場合は _ndt
  • 永続的な派生テーブルの場合は _pdt
  • 複数のビューのフィールドを参照するビューの場合は _xvw

接尾辞の例

図 2 。ビューのタイプを示す接尾辞の例。

各ビュー定義は、説明、ソース、参照、拡張フィールド、その他の関連するメモなど、背景情報を提供するアノテーションで始まります。

アノテーション

図 3 。ビュー定義内のアノテーションの例。

ネストされた繰り返しレコード

ネストされた繰り返しレコードを含む基盤となるテーブルの場合、Looker はこれらのレコードをネスト解除するための個別のビューを作成します。たとえば、Oracle EBS Looker Block では、sales_orders テーブルに lines という名前のネストされた繰り返し構造体があります。Looker は、これらを 2 つの異なる ビューとして扱います: sales_orderssales_orders__lines

Explore 内でこれらのネスト解除されたレコードを結合するには、UNNEST コマンドと組み合わせて sql プロパティを使用して結合を定義する必要があります。

UNNEST コマンド

図 4 。UNNEST コマンドと組み合わせて「sql」プロパティを使用した結合の例。

詳細については、Looker でネストされた BigQuery データをモデリングする方法をご覧ください。

Cortex Framework Looker Block には、ビューやその他のオブジェクトに多くのコメントが含まれています。コードの操作と理解を容易にするため、LookML 開発環境で使用できる [Fold LookML] オプションを使用することをおすすめします。

LookML を折りたたむ

図 5 。[Fold LookML] をクリックします。

LookML を開く

図 6 。をクリックして LookML を展開します。

もう一度折りたたむ

図 7 。をクリックして LookML を再度折りたたみます。

フィールド

field という用語は、dimensionmeasurefilterparameter などのオブジェクトを指します。これらの新しいブロックでは、次の原則に従いました。

  1. ディメンションの名前はsnake_case (小文字で単語間にアンダースコア)で付けます。例: customer_name
  2. 基盤となるテーブルの列名は、ディメンションの名前として使用されます。ラベルをディメンションに適用して、ビジネスに適した名前を付けることができます。 たとえば、division_hdr_spart という名前のディメンションに「Division ID」というラベルを付けることができます。
  3. 列数の多いテーブルの場合、フィールドはデフォルトで非表示になっています。ビューの絞り込みを使用して、Explore に表示するフィールドのサブセットの hidden プロパティを「no」に設定します。フィールドが想定どおりに表示されない場合は、このフィールド プロパティを編集することで問題を解決できます。
  4. View_label プロパティと group_label プロパティは、必要に応じて Explore 内のフィールドを整理するために使用されます。
  5. 複数のビューで使用されるフィールドの場合、ラベルなどのプロパティは「共通」ビュー内で確立され、その後他のビューに拡張されます。このアプローチでは、プロパティの定義を一元化し、再利用性を高めます。必要な変更は「共通」ビュー内で管理され、「共通」ビューが拡張されているすべてのビューに変更が反映されます。
  6. 複数の Explore で使用されるパラメータや、複数のビューを参照するフィールドは、_xvw 接尾辞が付いたフィールドのみのビューで定義されます。詳細については、Explore 間で不整合が発生しないようにするをご覧ください。

編集例

このセクションでは、一般的なカスタマイズの例を示します。

フィールドの非表示を解除する

ベースビューには、基盤となるテーブルのすべてのディメンションが含まれます。ほとんどのディメンションを表示する必要がない場合は、絞り込みを使用してすべてのフィールドをデフォルトで非表示にします。これは、fields_hidden_by_default プロパティを「yes」に設定することで実現できます。含まれている LookML ダッシュボードに関連するフィールドのサブセットは非表示にされていません。次の例では、item_posnr というディメンションを持つ sales_orders という名前のベースビューを想定しています。

view: sales_order {
  sql_table_name: reporting.sales_order ;;

  dimension: item_posnr {
    type: string
    sql: ${TABLE}.Item_POSNR
  }
}

このビューの絞り込みは、_rfn 接尾辞が付いたファイルで定義されています。絞り込みでは、ビュー プロパティ fields_hidden_by_default が「yes」に設定されます。つまり、すべてのフィールドが最初は非表示になります。ビューにフィールド item_posnr を表示するには、hidden プロパティを「no」に設定します。

view: +sales_order {
   fields_hidden_by_default: yes

   dimension: item_posnr {
     hidden: no
   }
}

パラメータ ビューのラベルを変更する

一部の Looker Block では、スタンドアロン ファイルで定義された共有パラメータ セットを使用します。たとえば、Oracle EBS Block では otc_common_parameters_xvw ファイルを使用します。このビューには「🔍 Filters」というラベルが表示されます。これは、マニフェスト ファイル内で定数として定義されています。

このラベルを変更するには:

  1. マニフェスト ファイルで label_view_for_filters 定数を見つけます。
  2. 定数の値を任意のラベルに編集します。
  3. マニフェスト ファイルを保存します。 変更は、label_view_for_filters 定数が参照されているすべての場所に自動的に反映されます。
Manifest

constant: label_view_for_filters {
  value: "My Filters"
}

または、ビュー otc_common_parameters_xvw に移動し、「label」プロパティを任意の値に編集します。

view: otc_common_parameters_xvw {
  label: "My Filters"
}

新しいメジャーを追加する

新しいメジャーは、関連する絞り込みに直接追加できます。次の例は、販売注文の絞り込みに追加された新しいメジャーを示しています。

view: +sales_orders {

  measure: customer_count {
    type: count_distinct
    sql: ${customer_id}
   }
}

2 つ目の絞り込みレイヤを追加する

新しい絞り込みは、既存の絞り込みに基づいて構築できます。次の例のように、ファイル sales_orders_rfn.viewsales_orders の絞り込みを検討します。これにより、 メジャー average_sales が作成されます。

include: "/views/base/sales_orders"
view: +sales_orders {
  measure: average_sales {
    type: average
    sql: ${order_value}
  }
}

2 つ目の絞り込みファイルを作成するには:

  1. 新しい絞り込みファイルを作成する: sales_orders_rfn2.view という名前を付けます。
  2. 最初の絞り込みファイルを含める: これにより、すべての定義が sales_orders_rfn から sales_orders_rfn2 に組み込まれます。
  3. ラベル プロパティを編集する: label プロパティを average_sales 「average spend」または任意のラベルに変更します。
  4. 新しいディメンションを追加する: 新しいディメンションのコードを sales_orders_rfn2.viewファイルに含めます。

    include: "/views/core/sales_orders_rfn.view"
    view: +sales_orders {
    
      measure: average_sales {
        label: "Average Spend"
      }
    
      dimension: customer_name_with_id {
        type: string
        sql: CONCAT(${customer_id},' ',${customer_name})
      }
    }
    
  5. Explore に 2 つ目の絞り込みファイルを含める: これにより、 のすべての定義と機能強化が Explore に組み込まれます。sales_orders_rfn2

    include: "/views/core/sales_orders_rfn2.view"
    explore: sales_orders {
    }
    

新しい絞り込みレイヤを作成する

Cortex Framework Looker Block 内で定義されているベースビューの絞り込みは、特定の要件を満たしていない場合に置き換えることができます。_rfn ファイルを直接編集して、不要なフィールド定義を削除したり、新しいフィールド定義を追加したりできます。

または、新しい絞り込みファイルを作成します。

  1. 新しい絞り込みファイルを作成する: sales_invoices_rfn という名前を付けて保存します。
  2. ベースビューを含める: これにより、 ベースビュー sales_invoices のすべての定義が sales_invoices_rfn に組み込まれます。
  3. 選択したカスタマイズを追加する: ディメンションを 主キーとして定義してください。

    include: "/views/base/sales_invoices.view"
    
    view: +sales_invoices {
    
      fields_hidden_by_default: yes
    
      dimension: invoice_id {
        hidden: no
        primary_key: yes
        value_format_name: id
      }
    
      dimension: business_unit_name {
        hidden: no
        sql: CONCAT(${business_unit_id}, ":",${TABLE}.BUSINESS_UNIT_NAME) ;;
      }
    }
    
  4. Explore に新しい絞り込みを含める: Cortex Framework Looker Block で提供される絞り込みの代わりに、 include プロパティで新しいファイルを使用します。

    include: "/views/my_customizations/sales_invoices_rfn.view"
    
    explore: sales_invoices {
    }
    

LookML ダッシュボード フィルタを編集する

複数の LookML ダッシュボードで使用されるダッシュボード フィルタの共通セットは、_template 接尾辞が付いた名前のダッシュボードで定義され、各ダッシュボードに拡張されます。拡張すると、特定のダッシュボードに必要なフィルタ オブジェクトを変更できます。

すべてのダッシュボードを編集する

すべてのダッシュボードのフィルタタイプを変更するには、フィルタを定義するテンプレート ファイルを見つけます。ui_config のタイプと表示プロパティを任意の構成に編集します。この変更は、テンプレートを拡張するすべてのダッシュボードに適用されます。以下に otc_template.dashboard の例を示します。

- dashboard: otc_template
  extension: required

  filters:
  - name: customer_country
    title: "Sold to Customer: Country"
    type: field_filter
    default_value: ''
    allow_multiple_values: true
    required: false
    ui_config:
      type: dropdown_menu
      display: popover
    explore: countries_md
    field: countries_md.country_name_landx

特定のダッシュボードを編集する

特定のダッシュボードのフィルタを変更するには、ダッシュボード ファイルを見つけて、変更が必要な select プロパティとともにフィルタ名を含めます。この変更は、単一のダッシュボードに限定されます。たとえば、otc_order_status.dashboardcustomer_country フィルタのタイトル、UI タイプ、表示を変更する場合、これらのプロパティのみがダッシュボード ファイルに含まれます。残りのプロパティは、拡張されたテンプレートから継承されます。

- dashboard: otc_order_status
  title: Order Status
  extends: otc_template

  filters:
  - name: customer_country
    title: "Customer Country"
    ui_config:
      type: dropdown_menu
      display: inline

LookML ダッシュボードの作成と変更について詳しくは、 LookML ダッシュボードの構築をご覧ください。