fields(結合用)

このページでは、結合の一部である fields パラメータについて説明します。

fields は、fields(Explore 用)パラメータのドキュメント ページで説明されているように、Explore の一部としても使用できます。

fields は、set パラメータのドキュメント ページで説明されているように、セットの一部としても使用できます。

用途

explore: view_name_1 {
  join: view_name_2 {
    fields: [
      field-or-set-specification,
      field-or-set-specification,
      ...
    ]
  }
}
階層
fields
デフォルト値
結合されたビューのすべてのフィールド

許可
フィールドまたはセットのカンマ区切りリストを含む角かっこ

特別なルール
  • セット名の末尾は常にアスタリスク(*)です。
  • 結合レベルでは、フィールドとセットは除外できません。含めることのみが可能です。ただし、fields パラメータで空のリストを使用すると、次のようにすべてのフィールドを除外できます。fields: []

定義

結合レベルの fields を使用すると、結合ビューのどのフィールドを Explore に取り込むかを指定できます。fields を使用しない場合、Looker はデフォルトでビューのすべてのフィールドを追加します。

[field_a, field_b] のように、フィールドのリストを使用できます。

[set_a*] など、フィールドのセット(set パラメータで作成)を参照することもできます。アスタリスクは、フィールド名ではなくセット名を参照していることを Looker に伝えます。

customer ビューの name フィールドのみを order Explore に追加します。

explore: order {
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
    fields: [name]
  }
}

customer ビューから order Explore に、nameaddressage というフィールドを追加します。

explore: order {
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
    fields: [name, address, age]
  }
}

customer ビューから order_fields というフィールドのセットを order Explore に追加します。

explore: order {
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
    fields: [order_fields* ]
  }
}

一般的な課題

fields は、独自の join のフィールドのみを参照できます

fields は、ビューを参照する join の子になります。fields で参照されるディメンションまたはメジャーは、そのビューの一部である必要があります。たとえば、次のような状況を考えます。

explore: order {
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
    fields: [name]
  }
}

正しく機能するには、customer ビューに name というディメンションまたはメジャーが存在する必要があります。

知っておくべきこと

fields: [] を空のリストとともに使用してすべてのフィールドを除外する

次のように、結合で空のリストを指定して fields パラメータを使用すると、結合されたビューからすべてのフィールドを除外できます。

explore: order {
  join: customer {
    fields: []
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

この例では、customer ビューのフィールドは order Explore に表示されません。

join レベルでフィールドを削除する唯一の方法は、fields: [] を使用して一度にすべて除外することです。ALL_FIELDS* を使用して、join レベルですべてのフィールドを除外することはできません。

ただし、explore レベルでは、このページのexplorefields を使用して個々のアイテムを除外するセクションで説明されているように、ALL_FIELDS* セットを使用して個々のアイテムを除外できます。

explorefields を使用すると、個々のアイテムを除外できます。

fieldsjoin パラメータの下にネストされている場合は、fields: [] を使用してすべてのフィールドを一度に除外するか、特定のフィールドを含めることができます。ただし、特定のフィールドを 1 つずつ除外することはできません。たとえば、100 個のフィールドがあり、そのうちの 1 つだけを除外したい場合は、除外したくない 99 個のフィールドをすべてリストする必要があります。

ただし、ALL_FIELDS* セットを利用してフィールドを除外するには、代わりに fieldsexplore パラメータの下にネストします。次に例を示します。

explore: order {
  fields: [
    ALL_FIELDS*,
    -customer.unwanted_field_a,
    -customer.unwanted_field_b
  ]
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

構文 view_name.field_name を使用して、Explore レベルの fields パラメータで結合されたビュー customer からフィールドを参照する方法に注目してください。

さまざまな種類の fields パラメータは、異なるタイミングで適用されます

このページでは、join パラメータの下にネストされている場合の fields について説明します。explore の下にネストされている同様の fields パラメータもあります。両方を同時に使用すると、特定の順序で適用され、結果の動作に影響します。

まず、join のすべての fields パラメータが適用されます。これにより、Explore で選択できるフィールドのセットが作成されます。次の例を考えてみましょう。

explore: orders {
  join: users {
    fields: [name]
    sql_on: ${orders.user_id} = ${users.id} ;;
  }
}

この場合、使用可能なフィールドは orders のすべてのフィールドと、usersname です。これは、ALL_FIELDS* セットに含まれるフィールドのグループです(個々のアイテムを除外するセクションで説明)。

explorefields パラメータを追加すると、そのセットに制限が追加されます。次のようにした場合を考えます。

explore: orders {
  fields: [orders.price, users.address]
  join: users {
    fields: [name]
    sql_on: ${orders.user_id} = ${users.id} ;;
  }
}

この例の場合は、次のようになります。

  • ordersprice は、作成した ALL_FIELDS* セットに含まれているため、想定どおりに表示されます。
  • usersaddress は、users が参加したときに含まれていなかったため(name のみ)、表示されません。
  • fields: [orders.price, users.address] 行の [探索] に追加していないため、usersname も表示されません。