准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Customize native derived tables using derived columns
/ 50
Customize native derived tables using filters
/ 50
Looker 是 Google Cloud 的新型資料平台,提供互動式分析功能,並可用圖表呈現資料。您能使用 Looker 深入分析資料、整合各種資料來源的洞察資訊、設定可做為行動依據的資料導向工作流程,以及建立自訂資料應用程式。
在本實驗室中,您將瞭解如何運用原生衍生資料表回答複雜問題、處理進階用途,以及使用內建參數自訂原生衍生資料表。
您將學習下列內容:
為獲得最大學習效益,您必須熟悉 LookML,並建議先完成「瞭解 Looker 中的 LookML」技能徽章課程,再開始學習本實驗室的內容。
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境中完成實作實驗室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。
如要完成這個研究室活動,請先確認:
準備就緒後,請點選「Start Lab」。
「Lab Details」窗格會顯示本實驗室中必須使用的暫時憑證。
如果實驗室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。
請在「Lab Details」窗格查看實驗室憑證,您之後會使用此憑證登入實驗室的 Looker 執行個體。
點選「Open Looker」。
分別在「Email」和「Password」欄位,輸入提供的使用者名稱和密碼。
使用者名稱:
密碼:
點選「Log In」。
成功登入後,您就會在本實驗室看到 Looker 執行個體。
原生衍生資料表與手動編寫的 SQL 查詢功能相同,但以原生 LookML 語言表示。
為什麼要使用原生衍生資料表?想想您在上一個實驗室中建立的 user_facts SQL 衍生資料表。您已將訂單 ID 的 COUNT 設為 lifetime_order_count,並將 sale_price 的 SUM 設為 lifetime_revenue。如果您還沒發現,這些匯總資料已以測量指標的形式存在於模型中!order_items 檢視畫面已包含 order_count 和 total_sales。
原生衍生資料表之所以實用,是因為它體現了 LookML「可重複使用」這項核心原則,也就是說您可以沿用現有的維度、測量指標,甚至是探索和彙整邏輯。這能大幅減少使用「硬式編碼」參照資料庫;長期下來,模型會更容易維護。
在本節中,您將建立名為 brand_order_facts 的原生衍生資料表,其中包含可依總收益為品牌排序的衍生資料欄,並可使用動態日期範圍和/或使用者輸入內容進行篩選。您也會建立新的維度,將資料列標示為前 5 大品牌或非前 5 大品牌 (也就是將排名第 6 以上的所有品牌歸為「6) Other」這個品牌名稱)。
首先,在 Looker 使用者介面左下方,按一下切換鈕進入「開發模式」。
在 Looker 導覽選單中,按一下「探索」。
在「E-Commerce Training」底下,按一下「Order Items」。
在「Inventory Items」檢視畫面下方,按一下「Product Brand」維度。
在「Order Items」檢視畫面下方,按一下「Total Revenue」測量指標。
按一下「執行」。
按一下頁面右上角「執行」旁的設定齒輪圖示 (),然後選取「取得 LookML」。
切換至「衍生資料表」,按一下方塊中的 LookML 程式碼,然後複製到剪貼簿。
前往 Looker IDE (依序點選「開發」>「qwiklabs-ecommerce」),按一下檔案瀏覽器旁的加號 (+) 圖示,然後選擇「建立檢視表」。
將新的檢視表命名為 brand_order_facts,然後按一下「建立」。
按一下「brand_order_facts.view」,然後拖曳至「views」資料夾底下。
清除所有自動產生的範例程式碼,然後貼上從「探索」複製的程式碼。別忘了將自動產生的檢視表名稱修正為 brand_order_facts。您會看見類似下方的畫面:
現在您已具備原生衍生資料表的基礎概念,接下來的工作是為品牌排名,在大多數 SQL 方言中,這項作業可透過 ROW_NUMBER() 函式完成。
如要達成這個目標,您需要在原生衍生資料表的 explore_source 中加入 derived_column。在原生衍生資料表中,您可以使用 derived_column 指定「尚未存在」於 explore_source 參數所指定「探索」中的資料欄。在本例中,您會將其命名為 brand_rank。
column: total_revenue {} 定義下方,開始定義 brand_rank 衍生欄:每當您建立衍生資料欄時,也需要為該資料欄新增維度。這與一般資料庫資料表中的資料欄相同,資料欄必須以維度形式在 LookML 中呈現。您是否有發現,自動產生的維度沒有 SQL 參數?這是因為如果沒有為維度指定 SQL,Looker 會假設維度應指向基礎資料中名稱完全相同的資料欄。如果需要,這項捷徑可用於專案的其他區域,但一般來說,盡可能明確指定是較好的做法。在這種情況下,您至少應指定類型。否則 Looker 會預設為字串,這不是您要的結果。
product_brand 維度正上方,新增下列程式碼:新的檢視畫面應如下所示:
按一下「儲存變更」。
在同一頁面中,點按「model」資料夾內的 training_ecommerce.model 檔案修改內容。
找到 explore: order_items 定義。
在 explore: order_items 定義中,用下列指令新增 brand_order_facts 彙整:
按一下「儲存變更」。
模型檔案應如下所示:
現在您已將 brand_order_facts 檢視畫面加入「探索」,請前往「Order Items」的「探索」頁面。
在「Brand Order Facts」檢視畫面下方,選取「Brand Rank」、「Product Brand」和「Total Revenue」維度。
將「資料列限制」設為 10。
按一下「執行」。結果應大致如下:
到目前為止都很順利!但如果企業使用者希望品牌名稱顯示為「1) Example Brand」,而不只是「Example Brand」,該怎麼做?要如何達成這個目標?在這種情況下,您可以建立維度,串連其他兩個維度值。
返回 brand_order_facts 檢視畫面。
建立另一個名為 brand_rank_concat 的維度,串連品牌排名和產品品牌:
brand_rank,因為企業使用者可能只會在新的 brand_rank_concat 中尋找排名編號,而不想使用個別欄位:brand_rank_concat 新增標籤,讓使用者更容易使用。使用「Brand Name」標籤:最後一個步驟是將所有排名第 6 以上的品牌歸入「Other」分類。為此,您首先要建立「stepping-stone」維度,評估品牌的排名是否在前 5 名內。
brand_rank_top_5 的新維度,並採用下列參數:brand_rank_grouped 的新維度,並使用下列程式碼將 brand_rank_top_5 併入其中:您應該會看見類似下方的檢視畫面:
前往「Order Items」的「探索」頁面。
在「Brand Order Facts」檢視畫面下方,選取「Brand Name Grouped」維度。
在「Order Items」檢視畫面下方,選取「Total Revenue」測量指標。將「資料列限制」設為 10。
按一下「執行」。
確認「Brand Name Grouped」欄依序排列,然後在「圖表」分頁中,按一下「圓餅圖」。
確認圖表類似下圖:
按一下頁面右上角「執行」旁的設定齒輪圖示 (),然後依序選取「儲存」>「儲存為 Look 圖表」。
將 Look 圖表命名為:Ranked Brand Revenue。
按一下「儲存」。
返回 brand_order_facts 檢視畫面。
依序點按「驗證 LookML」>「修訂變更並推送」。
新增修訂版本訊息,然後點按「修訂」。
最後,點按「部署至正式環境」。
太好了!希望這有助於您瞭解,將用途或所需邏輯分解為個別基本維度,然後合併或建構這些維度,以回答特定業務問題,是多麼實用。在最佳做法 LookML 開發中,有許多類似的隱藏「stepping-stone」維度和測量指標非常常見。
點選「Check my progress」,確認上述工作已完成。
假設商家只關心最近 365 天內的訂單,也許這些前 5 大品牌在幾年前非常受歡迎,但由於趨勢不同,過去一年內的排名可能有所變動。
在本節中,您將瞭解如何在 LookML 中,為原生衍生資料表使用不同類型的篩選器。篩選器可用於對衍生資料表套用篩選條件,與篩選後的測量指標類似。系統會新增 WHERE 或 HAVING 子句。
首先,返回 brand_order_facts 檢視畫面。
在 derived_column 定義下方,新增篩選器,將原生衍生資料表限制為過去 365 天內建立的訂單:
返回「Order Items Explore」。
在「Brand Order Facts」檢視畫面下方,選取「Brand Name Grouped」。
在「Order Items」檢視畫面下方,選取「Total Revenue」測量指標。
按一下「執行」。
點按「資料」列的「SQL」分頁標籤,即可查看查詢中如何使用篩選器。
由於您已對「Ordered Items Created Date」新增篩選器,只查看過去 365 天內的訂單,因此 WHERE 條件只會在所謂的「外部查詢」中產生。這是任何維度篩選器的預設行為;您無法要求篩選器進入衍生資料表的通用資料表運算式,或讓外部 WHERE「向下滲透」至內部查詢。這時,在 NDT 本身中新增篩選器就派上用場了。
如果商家覺得只限制過去 365 天的訂單資料太過嚴格,該怎麼辦?有時使用者可能想分析過去兩年的排名。使用 filters: [order_items.created_date: "365 days"],您會將時間範圍硬式編碼。
這時,bind_filters 參數就比單純的篩選器更有用。您可以指出要從外部探索「向下流動」至原生衍生資料表內部查詢的欄位 (from_field),以及應對應至哪個原生衍生資料表欄位 (to_field)。在絕大多數情況下,這兩者應該相同。
explore_source 的 bind_filters 子參數會將探索查詢中的特定篩選器傳遞至原生衍生資料表子查詢:
to_field 是原生衍生資料表中的欄位,篩選器會套用至該欄位。to_field 必須是基礎 explore_source 的欄位。from_field 會指定要從哪個探索欄位取得篩選器。返回 brand_order_facts 檢視畫面。
如要使用繫結篩選器,請先移除您在前一節建立的衍生資料表定義中的靜態日期篩選器。
接著,在 derived_column 定義下方新增下列 bind_filters 範本:
在這種情況下,您會想抓取 from_field: order_items.created_date 篩選器,並讓它影響或套用至 to_field: order_items.created_date。
返回「Order Items Explore」。
在「Brand Order Facts」檢視畫面下方,選取「Brand Name Grouped」。
在「Order Items」檢視畫面下方,選取「Total Revenue」測量指標。
同樣在「Order Items」檢視畫面中,選取「Created Date」維度,然後選取「Date」欄位,並點選「Date」旁的篩選按鈕。
在篩選器定義中,將篩選器指定為:is in the past 1000 days。為方便示範,您使用 1000 天,確保篩選條件不會過於嚴格,且會擷取過去 3 年的資料。
按一下「執行」。
如您所見,這種做法有彈性多了!如果篩選過去 3 季建立的訂單,原生衍生資料表就會相應計算過去 3 季的排名。如果依特定日期範圍內建立的訂單進行篩選,原生衍生資料表也會在 WHERE 條件中使用相同的日期範圍。
現在,在「Users」欄位下方,選取「Country」和「Age」,然後為這些項目新增篩選器;將篩選器設為 Country is equal to USA 和 Age is greater than 21。
按一下「執行」。
請注意,衍生資料表的 WHERE 條件不受影響。如果企業使用者除了「Ordered Items Created Date」以外,還有其他條件,該怎麼辦?如果他們只想查看美國或男性顧客的訂單排名,該怎麼辦?
您當然可以繼續新增 bind_filters,但請看看「Order Items Explore」中有多少欄位。為所有項目新增 bind_filters 需耗費大量時間。這時,另一個參數 bind_all_filters 就非常實用。
點選「Check my progress」,確認上述工作已完成。
如要將篩選器從「探索」傳遞至原生衍生資料表子查詢,最簡單的方法是在原生衍生資料表的 explore_source 參數中指定 bind_all_filters: yes。這會將「探索」的所有執行階段篩選器傳遞至原生衍生資料表子查詢。
如要在其他探索中使用原生衍生資料表,請改用 bind_filters 參數,如上一節所述。
首先,請移除您在前一節建立的衍生資料表定義中的 bind_filter。
在 derived_column 定義下方新增 bind_all_filters: yes 定義,即可將每個篩選器繫結至自身,而不只是將 order_created_date 繫結至自身:
返回「Order Items Explore」。
在「Brand Order Facts」檢視畫面下方,選取「Brand Name Grouped」。
在「Order Items」檢視畫面下方,選取「Total Revenue」測量指標。
同樣在「Order Items」檢視畫面下方,找到「Created Date」維度,然後點按「Date」旁的篩選按鈕。
在篩選器定義中,將篩選器指定為:is in the past 365 days。
在「Users」檢視畫面中,針對「Country」和「Age」新增篩選器,並將其設為 Country is equal to USA 和 Age is greater than 21。
按一下「執行」。
按一下「SQL」分頁標籤。請注意,衍生資料表的 WHERE 條件現在會動態更新!
雖然 bind_all_filters 很實用,但只有在您將原生衍生資料表加入 explore_source 時,這個參數才會生效。換句話說,您只能在這裡使用這個檢視區塊,因為您已將 brand_order_facts 彙整回與 explore_source order_items 相同的探索。
原因為何?因為 bind_all_filters 表示 Looker 必須知道如何為整個探索中的任何欄位產生 WHERE 條件。如果原生衍生資料表使用 order_items 的 explore_source,但您將其彙整至其他探索,該探索可能會彙整任意數量的檢視區塊和欄位,而這些檢視區塊和欄位在 order_items 中不存在,因此在 order_items 中沒有任何意義。Looker 無法使用這些其他欄位篩選衍生資料表。
您已瞭解 bind_all_filters 的運作方式,現在請試用幾個不同的探索篩選器,看看這些篩選器如何影響原生衍生資料表的編譯方式。
依序點按「驗證 LookML」>「修訂變更並推送」。
新增修訂版本訊息,然後點按「修訂」。
最後,點按「部署至正式環境」。
在本實驗室中,您使用原生衍生資料表回答複雜問題,並使用衍生資料欄解決進階用途案例,然後更新這些資料表,使用內建篩選器參數產生動態值。您也瞭解了企業使用者如何運用自訂原生衍生資料表,解答複雜的問題。
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 3 月 4 日
實驗室上次測試日期:2024 年 3 月 4 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验