DRY LookML でのコードの再利用性の最大化: 複数のユースケースに合わせて単一のベースビューをカスタマイズする

1 つの Explore を共有するユーザーが多数いて、チームや地域によってユースケースが異なる場合を考えてみましょう。各ユーザーは、固有のユースケースに適用されるフィールドのみを確認します。ユーザーの多様なニーズに対応するには、LookML の絞り込みを使用して、元の LookML を変更することなく既存のビューと Explore をカスタマイズします。その後、これらのカスタマイズしたビューと Explore を、ユーザーのさまざまなニーズに合わせてカスタマイズされた別個の専用モデル ファイルに追加できます。

このページでは、LookML の絞り込みを使用して 1 つのベースビューをカスタマイズし、社内の 2 つの異なるチームごとに個別の Explore を作成する例を提供します。また、精製されたコンテンツでフィールドを非表示にする方法と追加する方法の例も示します。

材料

前提条件

例: 同じベースビューから複数のカスタマイズされた Explore の作成

たとえば、販売 Explore に顧客、購入、配送、場所に関するデータが含まれているとします。会社のマーケティング チームとロジスティクス チームはどちらもこのデータを探索する必要がありますが、チームはそれぞれセールス Explore 内の異なるフィールドに焦点を当てています。

探索を容易にするために、Explore フィールド ピッカーで、各チームに役立つフィールドのみを表示する必要があります。これを行うには、販売 Explore と、そのベースとなる sales ビューの 2 つの異なる絞り込みを定義します。マーケティング チームの Explore には、顧客と購入傾向に関連するフィールドが表示され、ロジスティクス チームの Explore には、配送と場所に関連するフィールドが表示されます。各チームのニーズに固有の新しいフィールドを、各絞り込み済みビューに追加することもできます。

現在、[販売] Explore のフィールド ピッカーには、[販売] ビューのすべてのフィールドが表示されます。

[販売] ビューには、作成日、納品日、返品日、発送日のほか、ID、利益、ステータス、平均販売価格、合計販売価格、数量のフィールドがあります。

フィールド ピッカーでも、結合済み [ユーザー] ビューのすべてのフィールドが表示されます。

[ユーザー] ビューには、年齢、都市、国、作成日、メール、姓、名、ID、州、郵便番号、数量のフィールドがあります。

sales ビューを絞り込み、マーケティング チームとロジスティクス チームが関心を持つフィールドのみを含む 2 つの個別のデータ探索を作成するには、次の手順を行います。

  1. 新しい LookML ファイル(この例では base_analysis.lkml というファイル)を作成します。このファイルには、sales ビューと結合済み users ビューに基づく 販売 Explore の LookML が含まれています。ベース sales Explore とそれに対応するビューを使用して、チームごとにカスタマイズ済み Explore を作成するため、すべての共有フィールドとプロパティを単一の場所(単一のファイル内など)で定義できます。

    
    # base_analysis.lkml
    
    include: "views/sales.view.lkml"
    include: "views/inventory_items.view.lkml"
    include: "views/users.view.lkml"
    
    explore: sales {
      join: inventory_items {
        type: left_outer
        sql_on: ${sales.inventory_item_id} = ${inventory_items.id} ;;
        relationship: many_to_one
      }
    
      join: users {
        type: left_outer
        sql_on: ${sales.user_id} = ${users.id} ;;
        relationship: many_to_one
      }
    }
    
  2. 2 つの個別のファイルを作成して、チームごとに定義する 販売 Explore の絞り込みを格納します。そのファイルに marketing_analysis.lkmllogistics_analysis.lkml という名前を付けることができます。以下に示す LookML コードは、前に示した base_analysis.lkml ファイルで定義されているようにベース sales Explore を絞り込み、マーケティング チームの販売分析というラベルを marketing_analysis.lkml という新しいファイル内に追加します。ステートメント include: "/base/base_analysis.lkml" により、base_analysis.lkml ファイルの内容を marketing_analysis.lkml ファイル内で参照できるようになります。

    
    # marketing_analysis.lkml
    
    include: "/base/base_analysis.lkml"
    
    explore: +sales {
      label: "Sales Analysis for Marketing Team"
    }
    
    
  3. チームごとに個別のモデル ファイル(ecommerce_marketing.modelecommerce_logistics.model など)を作成します。チームごとに別々の専用モデルに異なる絞り込みを格納することで、1 つのチームのユースケースに対して行ったカスタマイズを上書きすることなく、同じ一連のビューと Explore を複数回絞り込むことができます。詳細については、LookML の絞り込みのドキュメントのページをご覧ください。

  4. include パラメータを使用して、ecommerce_marketing.model モデル内に marketing_analysis.lkml を含め、ecommerce_logistics.model モデル内に logistics_analysis.lkml を含めます。

  5. 必要に応じて、追加の絞り込みを marketing_analysis.lkml ファイルと logistics_analysis.lkml ファイルに加えます。たとえば、不要なフィールドを非表示にして、各チームの絞り込み済み Explore に新しいフィールドを追加できます。

必要に応じて Looker 管理者が専用モデルごとのモデルのアクセス権を構成して、特定のチームに Explore レベルのアクセス権を付与することもできます。

絞り込み済み Explore から不要なフィールドを非表示にする

次のように sales ビューを marketing_analysis.lkmlファイルで絞り込み、返却済み配送済み配信済みおよび作成済みディメンション グループ、およびステータスディメンションを非表示にできます。これらのフィールドをマーケティング チームが使用しないためです。


# marketing_analysis.lkml

include: "/base/base_analysis.lkml"

explore: +sales {
  label: "Sales Analysis for Marketing Team"
}

view: +sales
  dimension_group: returned {
    hidden: yes
  }

  dimension_group: shipped {
    hidden: yes
  }

  dimension_group: delivered {
    hidden: yes
  }

  dimension_group: created {
    hidden: yes
  }

  dimension: status {
    hidden: yes
  }
}

同様に、logistics_analysis.lkml ファイルで以下の LookML を使用すると、ロジスティクス チームに必要のないフィールド(利益販売価格平均販売価格など)を非表示にします。


# logistics_analysis.lkml

include: "/base/base_analysis.lkml"

explore: +sales {
  label: "Sales Analysis for Logistics Team"
}

view: +sales {
  dimension: profit {
    hidden: yes
  }

  dimension: sale_price {
    hidden: yes
  }

  measure: average_sale_price {
    hidden: yes
  }
}

ロジスティクス チームは、お客様の個人情報(名前、年齢、メールアドレスなど)を表示する必要がないため、logistics_analysis.lkml ファイル内の結合済み users ビューの絞り込みを追加して、これらのフィールドを Explore から非表示にすることもできます。

  view: +users {
    dimension: age {
    hidden: yes
  }

  dimension: email {
    hidden: yes
  }

  dimension: first_name {
    hidden: yes
  }

  dimension: last_name {
    hidden: yes
  }

  dimension_group: created {
    hidden: yes
  }
}

絞り込み済み Explore への新しいフィールドの追加

マーケティング チームが関心を持つ新しいフィールドを、絞り込み済み sales ビュー内に作成することもできます。たとえば、絞り込み済み sales ビュー内に [平均販売価格]、[合計販売価格]、[ユーザーあたりの平均費用] のフィールドを追加できます。

[販売] ビューには、ID、利益、販売価格、数量に加えて、新しい平均販売価格、ユーザーあたりの平均費用、合計販売価格の各フィールドが表示されます。

次の LookML を使用して、marketing_analysis.lkml ファイル内の絞り込み済み sales ビューにこれらのフィールドを追加できます。


# marketing_analysis.lkml

view: +sales {
  measure: average_sale_price {
    type: average
    value_format_name: usd
    sql: ${sale_price} ;;
    drill_fields: [detail*]
  }

  measure: total_sale_price {
    type: sum
    value_format_name: usd
    sql: ${sale_price} ;;
    drill_fields: [detail*]
  }

  measure: average_spend_per_user {
    type: number
    value_format_name: usd
    sql: 1.0 * ${total_sale_price} / NULLIF(${users.count},0) ;;
    drill_fields: [detail*]
  }
}

作成したマーケティング Explore には、結合済み [ユーザー] ビューのフィールドに加えて、[販売] ビューで新しいフィールドが含まれます。[返却済み]、[配送済み]、[納品済み]、[作成済み] ディメンション グループと [ステータス] ディメンションは、マーケティング チームが必要としないため、非表示になっています。

同様に、ロジスティックス チーム向けに、配送時間バケット平均配送時間など、ロジスティクス チームの役に立つ新しいフィールドを作成できます。

ロジスティクス チーム Explore には、新しい配送時間バケットと平均配送時間フィールドのほか、その他の配送フィールドとユーザー ロケーション フィールドが表示されるようになりました。

次の LookML を使用して、logistics_analysis.lkml ファイル内の絞り込み済み sales ビューにこれらのフィールドを追加できます。


# logistics_analysis.lkml

view: +sales {
  dimension: shipping_time_buckets {
    case: {
      when: {
        sql: ${shipping_time} <= 7 ;;
        label: "One Week"
      }
      when: {
        sql: ${shipping_time} > 7 AND ${shipping_time} <= 14 ;;
        label: "Two Weeks"
      }
      when: {
        sql:  ${shipping_time} > 14 ;;
        label: "Over Two Weeks"
      }
      else: "Note Shipped"
    }
  }

  measure: average_shipping_time {
    type: average
    value_format_name: decimal_4
    sql: ${shipping_time} ;;
  }
}

作成したロジスティックス Explore には、結合済み [ユーザー] ビューのフィールドに加えて、[販売] ビューで新しいフィールドが含まれます。[販売] ビューの [利益]、[販売価格]、[平均販売価格] の各フィールド、および [ユーザー] Exploreの [年齢]、[メール]、[]、[]、[作成済み] の各フィールドが、ロジスティクス チームには必要ないため、非表示になっています。

各チームは、それぞれのニーズに合わせてカスタマイズされた Explore を利用できるようになりました。この方法は、事前の設定がある程度必要ですが、コアデータを 1 か所に保管することで、検索と使用が簡単になります。