このページでは、結合の一部である
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 を使用すると、結合ビューのどのフィールドを 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 に、name、address、age というフィールドを追加します。
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 レベルでは、このページのexplore で fields を使用して個々のアイテムを除外するセクションで説明されているように、ALL_FIELDS* セットを使用して個々のアイテムを除外できます。
explore で fields を使用すると、個々のアイテムを除外できます。
fields が join パラメータの下にネストされている場合は、fields: [] を使用してすべてのフィールドを一度に除外するか、特定のフィールドを含めることができます。ただし、特定のフィールドを 1 つずつ除外することはできません。たとえば、100 個のフィールドがあり、そのうちの 1 つだけを除外したい場合は、除外したくない 99 個のフィールドをすべてリストする必要があります。
ただし、ALL_FIELDS* セットを利用してフィールドを除外するには、代わりに fields を explore パラメータの下にネストします。次に例を示します。
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 のすべてのフィールドと、users の name です。これは、ALL_FIELDS* セットに含まれるフィールドのグループです(個々のアイテムを除外するセクションで説明)。
explore に fields パラメータを追加すると、そのセットに制限が追加されます。次のようにした場合を考えます。
explore: orders {
fields: [orders.price, users.address]
join: users {
fields: [name]
sql_on: ${orders.user_id} = ${users.id} ;;
}
}
この例の場合は、次のようになります。
ordersのpriceは、作成したALL_FIELDS*セットに含まれているため、想定どおりに表示されます。usersのaddressは、usersが参加したときに含まれていなかったため(nameのみ)、表示されません。fields: [orders.price, users.address]行の [探索] に追加していないため、usersのnameも表示されません。