來自 (適用於聯結)

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

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

用量


explore: view_name {
  join: join_name {
    from: view_name_2
  }
}
階層
from
預設值
名稱與聯結名稱相符的檢視區塊

接受
現有檢視畫面的名稱

定義

from 指定要在聯結中使用的 view。如果省略 from,Looker 會假設基礎檢視區塊名稱與聯結名稱相同。

通常只有在您希望聯結及其欄位與基礎檢視區塊的名稱不同時,才會使用 from。為清楚說明,請參考以下範例:在名為 underlying_view 的檢視區塊中,建立名為 order_value 的維度:

  • 這個欄位通常會以「基礎檢視表訂單價值」的形式顯示在「探索」使用者介面中,並以 ${underlying_view.order_value} 參照 LookML。
  • 如果「使用情形」部分的 LookML 已套用至這個範例,欄位會改為顯示「NEW ALIAS NAME Order Value」,並參照為 ${new_alias_name.order_value}

如果需要以多種不同方式將同一個檢視區塊加入「探索」,這個技巧就特別實用。

範例

將檢視區塊 person 加入探索 order,但改為呼叫 customer

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

將檢視區塊 person 彙整至探索 order 兩次,一次是 customer,另一次是 representative

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
  join: representative {
    from: person
    sql_on: ${order.representative_id} = ${representative.id} ;;
  }
}

注意事項

from 變更探索中參照欄位的方式

如先前所述,使用 from 會對欄位的參照方式造成重大影響。如果 view 用於許多不同位置,可能會造成一些問題。請參閱以下範例:

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

這裡的 person 會加入 order,但會稱為 customer。因此,如果需要參照 order 內的 customer 欄位,請使用 ${customer.field_name}。 如果在第二個探索中,您再次將 person 併入 order,但將其重新命名為 customer,則 ${customer.field_name} 參照在第二個探索中將無法運作。解決這個問題的一般方法是使用 fields,從第二個 Explore 中排除有問題的欄位。程式碼應如下所示:

explore: the_second_explore {
  fields: [ALL_FIELDS*, -person.problem_field]
  join: person {
    sql_on: ${the_second_explore.some_field} = ${person.some_field} ;;
  }
}

from 最常用於將同一個資料表多次彙整至探索

如果單一資料表包含不同類型的實體,檢視區塊可能會多次加入「探索」。假設您有一個 order 探索,需要將person檢視畫面加入其中兩次,一次是為客戶,一次是為客服代表。您可能會執行類似下列的操作:

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
  join: representative {
    from: person
    sql_on: ${order.representative_id} = ${representative.id} ;;
  }
}

Looker 會從這個 LookML 產生下列 SQL:

SELECT    ...
FROM      order
LEFT JOIN person AS customer
ON        customer.id = order.customer_id
LEFT JOIN person AS representative
ON        representative.id = order.representative_id