欄位 (用於聯結)

本頁面是指 加入程序中的 fields 參數。

fields 也可做為「探索」的一部分,詳情請參閱「fields (適用於探索)」參數說明文件頁面。

fields 也可以做為集合的一部分,詳情請參閱 set 參數說明文件頁面。

用量

explore: view_name_1 {
  join: view_name_2 {
    fields: [
      field-or-set-specification,
      field-or-set-specification,
      ...
    ]
  }
}
階層
fields
預設值
彙整檢視畫面中的所有欄位

接受
方括號,內含以半形逗號分隔的欄位或集合清單

特別規則
  • 設定名稱一律以星號 (*) 結尾
  • 在聯結層級,只能納入欄位和集合,無法排除。不過,您可以使用 fields 參數搭配空白清單,排除「所有」欄位,如下所示:fields: []

定義

fields,您可以在彙整層級指定要將彙整檢視區塊中的哪些欄位帶入「探索」。如果您未使用 fields,Looker 預設會新增檢視區塊中的所有欄位。

可以使用欄位清單,例如 [field_a, field_b]

您也可以參照一組欄位 (由 set 參數建立),例如 [set_a*]。星號會告訴 Looker,您參照的是集合名稱,而非欄位名稱。

範例

只將 name 欄位從 customer 檢視畫面新增至 order 探索:

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

customer 檢視畫面中的 nameaddressage 欄位新增至 order 探索:

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

customer 檢視畫面中的 order_fields 欄位集新增至 order 探索:

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 探索中。

如要移除 join 層級的欄位,唯一方法是使用 fields: [] 一次排除所有欄位。您無法使用 ALL_FIELDS* 排除 join 層級的所有欄位。

不過,在 explore 層級,您可以使用 ALL_FIELDS* 集合排除個別項目,如本頁「您可以使用 fieldsexplore 排除個別項目」一節所述。

你可以使用 fieldsexplore 排除個別項目

fields 巢狀結構位於 join 參數下方時,您可以使用 fields: [] 一次排除所有欄位,也可以納入特定欄位。但無法逐一排除特定欄位。舉例來說,如果您有 100 個欄位,但只想排除其中一個,就必須列出您保留的 99 個欄位。

不過,您可以改為將 fields 巢狀結構化至 explore 參數下方,藉此運用 ALL_FIELDS* 集合並排除欄位。例如:

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 語法,在「探索」層級的 fields 參數中,參照已彙整檢視區塊 customer 的欄位。

不同類型的 fields 參數會在不同時間套用

本頁面說明 fields 巢狀結構位於 join 參數下方時的情況。此外,explore 底下也有類似的 fields 參數。如果同時使用這兩項設定,系統會依特定順序套用,進而影響最終行為:

首先,系統會套用 join 下的所有 fields 參數。這樣一來,探索檢視表就能從中選擇欄位。請參閱以下範例:

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} ;;
  }
}

在這種情況下:

  • price 會如預期顯示,因為它位於我們建立的 ALL_FIELDS* 集中。orders
  • usersaddress「不會」顯示,因為加入 users 時未包含該使用者 (只有 name)。
  • name 中的 users 也不會顯示,因為我們未將其新增至 fields: [orders.price, users.address] 列的「探索」。