使用原生衍生資料表透過 LookML 回答複雜的問題

实验 20 分钟 universal_currency_alt 免费 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP935

Google Cloud 自學實驗室標誌

總覽

Looker 是 Google Cloud 的新型資料平台,提供互動式分析功能,並可用圖表呈現資料。您能使用 Looker 深入分析資料、整合各種資料來源的洞察資訊、設定可做為行動依據的資料導向工作流程,以及建立自訂資料應用程式。

在本實驗室中,您將瞭解如何運用原生衍生資料表回答複雜問題、處理進階用途,以及使用內建參數自訂原生衍生資料表。

課程內容

您將學習下列內容:

  • 建立原生衍生資料表,使用衍生資料欄回答複雜的問題。
  • 更新原生衍生資料表,使用內建篩選器參數產生動態值。
  • 瞭解企業使用者如何運用自訂原生衍生資料表,找出複雜問題的解答。

需求條件:

為獲得最大學習效益,您必須熟悉 LookML,並建議先完成「瞭解 Looker 中的 LookML」技能徽章課程,再開始學習本實驗室的內容。

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境中完成實作實驗室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。

如要完成這個研究室活動,請先確認:

  • 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意:請使用無痕模式或私密瀏覽視窗執行本實驗室,這可以防止個人帳戶和學生帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一開始將無法暫停。
注意:如果您擁有個人 Google Cloud 帳戶或專案,請勿用於本實驗室,以免產生額外費用。

如何開始實驗室及登入 Looker

  1. 準備就緒後,請點選「Start Lab」

    「Lab Details」窗格會顯示本實驗室中必須使用的暫時憑證。

    如果實驗室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。

    請在「Lab Details」窗格查看實驗室憑證,您之後會使用此憑證登入實驗室的 Looker 執行個體。

    注意:如果使用其他憑證,系統會顯示錯誤訊息或產生費用
  2. 點選「Open Looker」

  3. 分別在「Email」和「Password」欄位,輸入提供的使用者名稱和密碼。

    使用者名稱:

    {{{looker.developer_username | Username}}}

    密碼:

    {{{looker.developer_password | Password}}} 重要事項:請務必使用本頁面「Lab Details」窗格中提供的憑證,而非 Google Cloud Skills Boost 的憑證。請勿在本實驗室中使用個人的 Looker 帳戶。
  4. 點選「Log In」

    成功登入後,您就會在本實驗室看到 Looker 執行個體。

工作 1:使用衍生資料欄自訂原生衍生資料表

原生衍生資料表與手動編寫的 SQL 查詢功能相同,但以原生 LookML 語言表示。

為什麼要使用原生衍生資料表?想想您在上一個實驗室中建立的 user_facts SQL 衍生資料表。您已將訂單 ID 的 COUNT 設為 lifetime_order_count,並將 sale_price 的 SUM 設為 lifetime_revenue。如果您還沒發現,這些匯總資料已以測量指標的形式存在於模型中!order_items 檢視畫面已包含 order_counttotal_sales

原生衍生資料表之所以實用,是因為它體現了 LookML「可重複使用」這項核心原則,也就是說您可以沿用現有的維度、測量指標,甚至是探索和彙整邏輯。這能大幅減少使用「硬式編碼」參照資料庫;長期下來,模型會更容易維護。

在本節中,您將建立名為 brand_order_facts 的原生衍生資料表,其中包含可依總收益為品牌排序的衍生資料欄,並可使用動態日期範圍和/或使用者輸入內容進行篩選。您也會建立新的維度,將資料列標示為前 5 大品牌或非前 5 大品牌 (也就是將排名第 6 以上的所有品牌歸為「6) Other」這個品牌名稱)。

建立原生衍生資料表,依銷售總額列出前 5 大品牌

  1. 首先,在 Looker 使用者介面左下方,按一下切換鈕進入「開發模式」

  2. Looker 導覽選單中,按一下「探索」。‎

  3. 在「E-Commerce Training」底下,按一下「Order Items」

  4. 在「Inventory Items」檢視畫面下方,按一下「Product Brand」維度。

  5. 在「Order Items」檢視畫面下方,按一下「Total Revenue」測量指標。

  6. 按一下「執行」

  7. 按一下頁面右上角「執行」旁的設定齒輪圖示 (settings-gear-icon.png),然後選取「取得 LookML」

  8. 切換至「衍生資料表」,按一下方塊中的 LookML 程式碼,然後複製到剪貼簿。

  9. 前往 Looker IDE (依序點選「開發」>「qwiklabs-ecommerce」),按一下檔案瀏覽器旁的加號 (+) 圖示,然後選擇「建立檢視表」

  10. 將新的檢視表命名為 brand_order_facts,然後按一下「建立」

  11. 按一下「brand_order_facts.view」,然後拖曳至「views」資料夾底下。

  12. 清除所有自動產生的範例程式碼,然後貼上從「探索」複製的程式碼。別忘了將自動產生的檢視表名稱修正為 brand_order_facts。您會看見類似下方的畫面:

顯示 brand_order_facts.view 程式碼的檔案瀏覽器頁面

  1. 按一下「儲存變更」。

新增品牌等級衍生欄

現在您已具備原生衍生資料表的基礎概念,接下來的工作是為品牌排名,在大多數 SQL 方言中,這項作業可透過 ROW_NUMBER() 函式完成。

如要達成這個目標,您需要在原生衍生資料表的 explore_source 中加入 derived_column。在原生衍生資料表中,您可以使用 derived_column 指定「尚未存在」explore_source 參數所指定「探索」中的資料欄。在本例中,您會將其命名為 brand_rank

  1. column: total_revenue {} 定義下方,開始定義 brand_rank 衍生欄:
derived_column: brand_rank {}
  1. 接著,在半形大括號中新增下列 SQL 參數:
derived_column: brand_rank { sql: row_number() over (order by total_revenue desc) ;; }

每當您建立衍生資料欄時,也需要為該資料欄新增維度。這與一般資料庫資料表中的資料欄相同,資料欄必須以維度形式在 LookML 中呈現。您是否有發現,自動產生的維度沒有 SQL 參數?這是因為如果沒有為維度指定 SQL,Looker 會假設維度應指向基礎資料中名稱完全相同的資料欄。如果需要,這項捷徑可用於專案的其他區域,但一般來說,盡可能明確指定是較好的做法。在這種情況下,您至少應指定類型。否則 Looker 會預設為字串,這不是您要的結果。

  1. derived_table 定義之外,於 product_brand 維度正上方,新增下列程式碼:
dimension: brand_rank { type: number }

新的檢視畫面應如下所示:

顯示 brand_order_facts.view 程式碼的檔案瀏覽器頁面

  1. 按一下「儲存變更」。

  2. 在同一頁面中,點按「model」資料夾內的 training_ecommerce.model 檔案修改內容。

  3. 找到 explore: order_items 定義。

  4. explore: order_items 定義中,用下列指令新增 brand_order_facts 彙整:

join: brand_order_facts { type: left_outer sql_on: ${inventory_items.product_brand} = ${brand_order_facts.product_brand} ;; relationship: many_to_one }
  1. 按一下「儲存變更」。

  2. 模型檔案應如下所示:

顯示 training_ecommerce.model 程式碼的檔案瀏覽器頁面

  1. 現在您已將 brand_order_facts 檢視畫面加入「探索」,請前往「Order Items」的「探索」頁面。

  2. 在「Brand Order Facts」檢視畫面下方,選取「Brand Rank」、「Product Brand」和「Total Revenue」維度。

  3. 將「資料列限制」設為 10

  4. 按一下「執行」。結果應大致如下:

輸出結果資料表,在「Brand Order Facts Brand Rank,」、「Brand Order Facts Product Brand」和「Brand Order Facts Total Revenue」欄標題下方有 10 列資料

到目前為止都很順利!但如果企業使用者希望品牌名稱顯示為「1) Example Brand」,而不只是「Example Brand」,該怎麼做?要如何達成這個目標?在這種情況下,您可以建立維度,串連其他兩個維度值。

  1. 返回 brand_order_facts 檢視畫面。

  2. 建立另一個名為 brand_rank_concat 的維度,串連品牌排名和產品品牌:

dimension: brand_rank_concat { type: string sql: ${brand_rank} || ') ' || ${product_brand} ;; }
  1. 隱藏 brand_rank,因為企業使用者可能只會在新的 brand_rank_concat 中尋找排名編號,而不想使用個別欄位:
dimension: brand_rank { hidden: yes type: number }
  1. brand_rank_concat 新增標籤,讓使用者更容易使用。使用「Brand Name」標籤:
dimension: brand_rank_concat { label: "Brand Name" type: string sql: ${brand_rank} || ') ' || ${product_brand} ;; }

最後一個步驟是將所有排名第 6 以上的品牌歸入「Other」分類。為此,您首先要建立「stepping-stone」維度,評估品牌的排名是否在前 5 名內。

  1. 在同一個 brand_order_facts 檢視畫面中,建立名為 brand_rank_top_5 的新維度,並採用下列參數:
dimension: brand_rank_top_5 { hidden: yes type: yesno sql: ${brand_rank} <= 5 ;; }
  1. 接著,建立名為 brand_rank_grouped 的新維度,並使用下列程式碼將 brand_rank_top_5 併入其中:
dimension: brand_rank_grouped { label: "Brand Name Grouped" type: string sql: case when ${brand_rank_top_5} then ${brand_rank_concat} else '6) Other' end ;; }
  1. 按一下「儲存變更」。

您應該會看見類似下方的檢視畫面:

顯示 brand_order_facts.view 程式碼的檔案瀏覽器頁面

  1. 前往「Order Items」的「探索」頁面。

  2. 在「Brand Order Facts」檢視畫面下方,選取「Brand Name Grouped」維度。

在「Order Items」檢視畫面下方,選取「Total Revenue」測量指標。將「資料列限制」設為 10。

  1. 按一下「執行」

  2. 確認「Brand Name Grouped」欄依序排列,然後在「圖表」分頁中,按一下「圓餅圖」

  3. 確認圖表類似下圖:

輸出結果圓餅圖,顯示「Example Brand」分組

  1. 按一下頁面右上角「執行」旁的設定齒輪圖示 (settings-gear-icon.png),然後依序選取「儲存」>「儲存為 Look 圖表」

  2. 將 Look 圖表命名為:Ranked Brand Revenue

  3. 按一下「儲存」

  4. 返回 brand_order_facts 檢視畫面。

修訂變更並部署至正式環境

  1. 依序點按「驗證 LookML」>「修訂變更並推送」

  2. 新增修訂版本訊息,然後點按「修訂」

  3. 最後,點按「部署至正式環境」

太好了!希望這有助於您瞭解,將用途或所需邏輯分解為個別基本維度,然後合併或建構這些維度,以回答特定業務問題,是多麼實用。在最佳做法 LookML 開發中,有許多類似的隱藏「stepping-stone」維度和測量指標非常常見。

點選「Check my progress」,確認上述工作已完成。使用衍生資料欄自訂原生衍生資料表

工作 2:使用篩選器自訂原生衍生資料表

假設商家只關心最近 365 天內的訂單,也許這些前 5 大品牌在幾年前非常受歡迎,但由於趨勢不同,過去一年內的排名可能有所變動。

在本節中,您將瞭解如何在 LookML 中,為原生衍生資料表使用不同類型的篩選器。篩選器可用於對衍生資料表套用篩選條件,與篩選後的測量指標類似。系統會新增 WHEREHAVING 子句。

新增靜態日期篩選器

  1. 首先,返回 brand_order_facts 檢視畫面。

  2. derived_column 定義下方,新增篩選器,將原生衍生資料表限制為過去 365 天內建立的訂單:

filters: [order_items.created_date: "365 days"]
  1. 按一下「儲存變更」。檔案應如下所示:

顯示 brand_order_facts.view 程式碼的檔案瀏覽器頁面

  1. 返回「Order Items Explore」

  2. 在「Brand Order Facts」檢視畫面下方,選取「Brand Name Grouped」

  3. 在「Order Items」檢視畫面下方,選取「Total Revenue」測量指標。

  4. 按一下「執行」

  5. 點按「資料」列的「SQL」分頁標籤,即可查看查詢中如何使用篩選器。

由於您已對「Ordered Items Created Date」新增篩選器,只查看過去 365 天內的訂單,因此 WHERE 條件只會在所謂的「外部查詢」中產生。這是任何維度篩選器的預設行為;您無法要求篩選器進入衍生資料表的通用資料表運算式,或讓外部 WHERE「向下滲透」至內部查詢。這時,在 NDT 本身中新增篩選器就派上用場了。

新增繫結篩選器

如果商家覺得只限制過去 365 天的訂單資料太過嚴格,該怎麼辦?有時使用者可能想分析過去兩年的排名。使用 filters: [order_items.created_date: "365 days"],您會將時間範圍硬式編碼。

這時,bind_filters 參數就比單純的篩選器更有用。您可以指出要從外部探索「向下流動」至原生衍生資料表內部查詢的欄位 (from_field),以及應對應至哪個原生衍生資料表欄位 (to_field)。在絕大多數情況下,這兩者應該相同。

explore_sourcebind_filters 子參數會將探索查詢中的特定篩選器傳遞至原生衍生資料表子查詢:

  • to_field 是原生衍生資料表中的欄位,篩選器會套用至該欄位。to_field 必須是基礎 explore_source 的欄位。
  • 如果使用者在執行階段指定篩選器,from_field 會指定要從哪個探索欄位取得篩選器。
  1. 返回 brand_order_facts 檢視畫面

  2. 如要使用繫結篩選器,請先移除您在前一節建立的衍生資料表定義中的靜態日期篩選器。

  3. 接著,在 derived_column 定義下方新增下列 bind_filters 範本:

bind_filters: { from_field: # The field the end user interacts with via the filters area to_field: # The field which should be filtered inside the NDT }

在這種情況下,您會想抓取 from_field: order_items.created_date 篩選器,並讓它影響或套用至 to_field: order_items.created_date

  1. 在繫結篩選器欄位新增下列程式碼:
bind_filters: { from_field: order_items.created_date to_field: order_items.created_date } 注意:這等同於在 SQL 衍生資料表中加入範本化篩選器。如您在先前的實驗室中所見,系統已將範本篩選器新增至 SQL 衍生資料表,因此使用者可以選擇日期,並查看根據該日期更新的值。
  1. 按一下「儲存變更」。檔案應如下所示:

顯示 brand_order_facts.view 程式碼的檔案瀏覽器頁面

  1. 返回「Order Items Explore」

  2. 在「Brand Order Facts」檢視畫面下方,選取「Brand Name Grouped」

  3. 在「Order Items」檢視畫面下方,選取「Total Revenue」測量指標。

  4. 同樣在「Order Items」檢視畫面中,選取「Created Date」維度,然後選取「Date」欄位,並點選「Date」旁的篩選按鈕。

  5. 在篩選器定義中,將篩選器指定為:is in the past 1000 days。為方便示範,您使用 1000 天,確保篩選條件不會過於嚴格,且會擷取過去 3 年的資料。

  6. 按一下「執行」

篩選器 (1) 區段

  1. 按一下「資料」列的「SQL」分頁標籤,即可查看查詢中如何使用篩選器。請注意,產生的 SQL 現在會「動態更新」衍生資料表一般資料表運算式中的 WHERE 條件,以及「外部」的 WHERE 條件。

如您所見,這種做法有彈性多了!如果篩選過去 3 季建立的訂單,原生衍生資料表就會相應計算過去 3 季的排名。如果依特定日期範圍內建立的訂單進行篩選,原生衍生資料表也會在 WHERE 條件中使用相同的日期範圍。

  1. 現在,在「Users」欄位下方,選取「Country」和「Age」,然後為這些項目新增篩選器;將篩選器設為 Country is equal to USAAge is greater than 21

  2. 按一下「執行」

多篩選器區段

  1. 最後,點選「SQL」分頁標籤。

請注意,衍生資料表的 WHERE 條件不受影響。如果企業使用者除了「Ordered Items Created Date」以外,還有其他條件,該怎麼辦?如果他們只想查看美國或男性顧客的訂單排名,該怎麼辦?

您當然可以繼續新增 bind_filters,但請看看「Order Items Explore」中有多少欄位。為所有項目新增 bind_filters 需耗費大量時間。這時,另一個參數 bind_all_filters 就非常實用。

點選「Check my progress」,確認上述工作已完成。使用篩選器自訂原生衍生資料表

使用 bind_all_filters

如要將篩選器從「探索」傳遞至原生衍生資料表子查詢,最簡單的方法是在原生衍生資料表的 explore_source 參數中指定 bind_all_filters: yes。這會將「探索」的所有執行階段篩選器傳遞至原生衍生資料表子查詢。

如要在其他探索中使用原生衍生資料表,請改用 bind_filters 參數,如上一節所述。

  1. 首先,請移除您在前一節建立的衍生資料表定義中的 bind_filter

  2. derived_column 定義下方新增 bind_all_filters: yes 定義,即可將每個篩選器繫結至自身,而不只是將 order_created_date 繫結至自身:

bind_all_filters: yes
  1. 按一下「儲存變更」。檔案應如下所示:

顯示 brand_order_facts.view 程式碼的檔案瀏覽器頁面

  1. 返回「Order Items Explore」

  2. 在「Brand Order Facts」檢視畫面下方,選取「Brand Name Grouped」

  3. 在「Order Items」檢視畫面下方,選取「Total Revenue」測量指標。

  4. 同樣在「Order Items」檢視畫面下方,找到「Created Date」維度,然後點按「Date」旁的篩選按鈕。

  5. 在篩選器定義中,將篩選器指定為:is in the past 365 days

  6. 在「Users」檢視畫面中,針對「Country」和「Age」新增篩選器,並將其設為 Country is equal to USAAge is greater than 21

  7. 按一下「執行」

  8. 按一下「SQL」分頁標籤。請注意,衍生資料表的 WHERE 條件現在會動態更新!

雖然 bind_all_filters 很實用,但只有在您將原生衍生資料表加入 explore_source 時,這個參數才會生效。換句話說,您只能在這裡使用這個檢視區塊,因為您已將 brand_order_facts 彙整回與 explore_source order_items 相同的探索。

原因為何?因為 bind_all_filters 表示 Looker 必須知道如何為整個探索中的任何欄位產生 WHERE 條件。如果原生衍生資料表使用 order_itemsexplore_source,但您將其彙整至其他探索,該探索可能會彙整任意數量的檢視區塊和欄位,而這些檢視區塊和欄位在 order_items 中不存在,因此在 order_items 中沒有任何意義。Looker 無法使用這些其他欄位篩選衍生資料表。

您已瞭解 bind_all_filters 的運作方式,現在請試用幾個不同的探索篩選器,看看這些篩選器如何影響原生衍生資料表的編譯方式。

  1. 返回 brand_order_facts 檢視畫面。

修訂變更並部署至正式環境

  1. 依序點按「驗證 LookML」>「修訂變更並推送」

  2. 新增修訂版本訊息,然後點按「修訂」

  3. 最後,點按「部署至正式環境」

恭喜!

在本實驗室中,您使用原生衍生資料表回答複雜問題,並使用衍生資料欄解決進階用途案例,然後更新這些資料表,使用內建篩選器參數產生動態值。您也瞭解了企業使用者如何運用自訂原生衍生資料表,解答複雜的問題。

後續步驟/瞭解詳情

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2024 年 3 月 4 日

實驗室上次測試日期:2024 年 3 月 4 日

Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。