根據 SQL 的一般規則 (以及 Looker 的擴充功能),您無法依匯總函式 (在 Looker 中以「度量」表示) 的結果分組查詢。您只能依未匯總的欄位 (在 Looker 中以「維度」表示) 進行分組。如果您嘗試在 Looker 中匯總評估資料,會看到以下錯誤:
Measures with Looker aggregations (sum, average, min, max, list types) may not reference other measures.
如果您需要將評量 (COUNT、SUM、AVG、MAX 等) 變更為維度,以便依據該維度分組匯總 (例如 COUNT 的 SUM 或 SUM 的 AVG)、篩選 (在 WHERE 子句中,而非 HAVING 子句),或在探索中樞紐,該怎麼辦?
使用衍生表來將評估指標轉換為維度
在 Looker 內部,這個解決方案稱為「將測量指標轉換為維度」。這是因為您將測量指標重新定義為 維度。方法是建立衍生資料表,其中包含您想在 SQL 定義中加入維度的評估資料。
程序
以下範例是根據電子商務資料集範例而來。本例的目標是建立以現有「總收益」type: sum
指標為基礎的 type: average
指標。
以下步驟概述如何產生以 SQL 為基礎的衍生資料表。您可以選擇建立以 LookML 為基礎的衍生資料表 (也稱為原生衍生資料表 (NDT)),做為 SQL 的替代方案。
-
首先,請設定探索查詢。
選擇適當的欄位,包括要轉換為維度的評量指標。
在這個範例用途中,「探索」資料表格會顯示「總收益」,並按照「使用者狀態」和「使用者 ID」分組:
-
在「資料」表格的「SQL」分頁中,選擇「在 SQL Runner 中開啟」,即可在 SQL Runner 中開啟查詢:
-
在 SQL Runner 中執行查詢 (按一下「Run」按鈕) 並確認結果後,請從 SQL Runner 齒輪選單中選擇「Add to Project」選項,開啟「Add to Project」彈出式視窗。此時,您需要在衍生資料表 SQL 中移除任何資料列限制子句,確保查詢中包含所有所需結果。
您也可以從選單中選擇「Get Derived Table LookML」,然後手動將產生的 LookML 複製並貼到專案中。
- 在「Add to Project」彈出式視窗中,從「Project」下拉式選單中選取專案名稱,然後輸入衍生資料表檢視畫面檔案的名稱,並選取「Add」。
-
派生表格現在位於檢視畫面檔案中,您可以建立匯總維度化指標的指標。舉例來說,您現在可以為新的總收益維度
order_items_total_revenue
建立type: average
評估資料:dimension: order_items_total_revenue { type: number sql: ${TABLE}.order_items.total_revenue ;; value_format_name: usd } measure: average_revenue { type: average sql: ${order_items_total_revenue} ;; value_format_name: usd }
- 請仔細檢查衍生表格中是否定義了主鍵。
- 彙整新檢視畫面至原始探索 (或建立新的探索),以便使用新欄位建立查詢和內容。
結論
使用 Looker 衍生資料表將測量指標轉換為維度,即可發揮新功能,並進一步運用資料進行深入分析。您可以依維度化指標分組 、在 WHERE 子句中篩選 (而非 HAVING)、樞紐分析,並根據維度化指標建立其他維度,進而將探索查詢和內容帶往下一個維度。
如要進一步瞭解如何建立及使用衍生表格,以及相關考量和效能最佳化訣竅,請參閱「衍生表格」說明文件。