自定義計算可讓您定義動態計量和轉換,而不需要修改數據集查詢。 本文說明如何在 AI/BI 儀錶板中使用自定義計算。
為什麼要使用自定義計算?
自訂計算可讓您從現有儀表板資料集建立和視覺化新欄位,而無需變更來源 SQL。 每個資料集最多可以定義 200 個自訂計算。
自訂計算是下列其中一種類型:
-
匯出量值:匯總值,例如總銷售額或平均成本。 計算量值可以使用命令
AGGREGATE OVER來計算跨時間範圍的值。 - 匯出維度:未匯總的值或轉換,例如分類年齡範圍或格式化字串。
自定義計算的行為與計量檢視類似,但範圍局限於其所屬的數據集和儀錶板。 若要定義可與其他數據資產搭配使用的自定義計量,請參閱 Unity 目錄計量檢視。
使用匯出量值建立動態計量
假設您有下列資料集:
| 項目 | 區域 | 價格 | 費用 | Date |
|---|---|---|---|---|
| Apples | 美國 | 30 | 15 | 2024-01-01 |
| Apples | Canada | 20 | 10 | 2024-01-01 |
| Oranges | 美國 | 20 | 15 | 2024-01-02 |
| Oranges | Canada | 15 | 10 | 2024-01-02 |
您想要依區域將獲利率可視化。 如果沒有自訂計算,您必須使用 margin 資料列建立新的資料集:
| 區域 | Margin |
|---|---|
| 美國 | 0.40 |
| Canada | 0.43 |
雖然此方法可運作,但新數據集是靜態的,而且可能只支援單一視覺效果。 套用至原始數據集的篩選條件不會影響新數據集,而不需要額外的手動調整。
使用自訂計算,您可以使用下列公式,將獲利率表示為匯總:
(SUM(Price) - SUM(Cost)) / SUM(Price)
此量值是動態的。 在視覺效果中使用時,會自動更新以反映套用至數據集的篩選條件。
定義範圍中計算的量值
儀錶板視覺化中的常見任務是計算某項量度,例如在某個範圍內計算SUM(sales),例如過去 7 天。 針對儀錶板數據集,使用 AGGREGATE OVER 命令來定義這些以範圍為基礎的量值計算類型。
此 AGGREGATE OVER 指令可以併入現行群組或分割區外部的資料。 例如,如果視覺效果每天將數據分組,則尾端 7 天範圍可讓每天的數據點包含前 6 天的數據。 如果在依月份分組的視覺效果中使用相同的量值,則 7 天範圍只會在每個月使用過去 7 天。
使用與上一個範例相同的數據集,下列表達式會計算後置的 7 天平均獲利率。
(
(SUM(Price) - SUM(Cost)) / SUM(Price)
) AGGREGATE OVER (
ORDER BY Date
TRAILING 7 DAY
)
建立之後,此量值可以在任何視覺效果中套用。
AGGREGATE OVER 語法
命令 AGGREGATE OVER 需要下列語法:
{expr} AGGREGATE OVER (ORDER BY {field} {frame})
Arguments
expr
要評估的有效計算量值表達式
欄位 (必要)
有效的欄名稱
frame (必要) 可以是下列其中一項:
CURRENTCUMULATIVEALL-
(TRAILING|LEADING)數字單位- number 是整數
- 單位為
DAY、MONTH、 或YEAR - 範例:
TRAILING 7 DAY或LEADING 1 MONTH
下表會識別匯總的框架規格與對等 的 SQL 視窗框架 子句的比較。
| 框架規格 | 對等的 SQL 視窗框架子句 |
|---|---|
| CURRENT | 當前行與當前行之間的範圍 |
| ALL | 未系結的前面與未系結的下列範圍 |
| 累積 | 無界限的前行列至目前列之間的範圍 |
尾隨 <NUMBER><UNIT> |
在 <NUMBER><UNIT> 之前到 1 <UNIT> 之前的範圍 |
主導 <NUMBER><UNIT> |
範圍介於 1 <UNIT> 之後和 <NUMBER><UNIT> 之後之間 |
AGGREGATE OVER 與視窗函式比較
AGGREGATE OVER此命令類似於 SQL 中的視窗函式,通常用來計算計量。 不過,不同於視窗函式,您可以在表示式中使用 AGGREGATE OVER 而不需要指定資料分割欄位。 相反地,它會從視覺效果查詢的群組繼承分割區。 這表示您可以更動態地使用這些量值。 例如,您可以將量值新增至視覺效果的 y 軸,並將產品線新增至 x 軸,以依產品線計算 7 天移動平均線。
ORDER BY如果欄位未在視覺效果中分組,AGGREGATE OVER請採用最後一個數據列的匯總值作為每個群組所要顯示的值。 如果您熟悉半加法量值,您可能會將此辨識為相當於 last 半加法行為。
使用自定義維度定義未匯總的值
匯出維度可讓您定義未匯總的值或輕量型轉換,而不需要變更來源數據集。 這在您想要為數據進行視覺化組織或重新格式化時會很有幫助。
例如,若要依年齡群組而不是個別年齡來分析年齡趨勢,您可以使用下列表達式來定義自定義 age_group 維度:
CASE
WHEN age < 18 THEN '<18'
WHEN age >= 18 AND age < 25 THEN '18–24'
WHEN age >= 25 AND age < 35 THEN '25–34'
WHEN age >= 35 AND age < 45 THEN '35–44'
WHEN age >= 45 AND age < 55 THEN '45–54'
WHEN age >= 55 AND age < 65 THEN '55–64'
WHEN age >= 65 THEN '65+'
END
效能優點
自訂計算已針對效能進行優化。 針對小型數據集(≤100,000個數據列和≤100MB),計算會在瀏覽器中執行,以加快回應速度。 SQL 倉儲會處理較大的數據集。 如需詳細資訊,請參閱數據集優化和快取。
建立自定義計算
此範例會根據 samples.nyctaxi.trips 數據集建立導出量值。 它假設使用者具備操作 AI/BI 儀錶板的一般知識。 如果您不熟悉撰寫 AI/BI 儀錶板,請參閱 建立儀錶板 以開始使用。
開啟現有的數據集或建立新的數據集。
按兩下 [自定義計算]。
[ 建立計算] 面板隨即在畫面右側開啟。 在 [名稱] 欄位 [] 中,輸入 [每英里的成本] []。
(選擇性)在 [ 描述 ] 文字欄位中,輸入「使用票價金額和車程距離來計算每英里的成本」。
在 表達式 欄位中,輸入下列:
try_divide(SUM(fare_amount), SUM(trip_distance))點擊 建立。
將自訂計算新增至計量檢視
這很重要
這項功能目前處於 公開預覽版。
您可以在計量檢視所建立的數據集之上定義自訂計算。 當您開啟數據集時,只會顯示 結果數據表 和 架構 。 按兩下 [自訂計算 ] 以定義新的自訂計算。 若要定義其他數據資產可以使用的其他自定義計量,請變更檢視定義。 請參閱 Unity 目錄計量檢視。
若要從儀表板資料集編輯器定義新的度量檢視,請參閱 匯出為度量檢視。
檢視架構
按兩下結果面板中的 [ 架構] 索引標籤,以檢視自定義計算及其相關聯的批註。
計算量值列在 [量值] 區段中,並以
fx 標示。 當您在視覺化中設定 GROUP BY 時,計算量度所關聯的值會被動態計算。 您無法在結果資料表中看到值。 匯出維度會出現在 [維度] 區 段中。
在視覺效果中使用自定義計算
您可以在視覺效果中使用之前建立的每英里成本計算量值。
計算量值會根據圖表中設定的維度自動彙總。 此行為與維度和量值在度量檢視中的運作方式相同,其中彙總會動態適應您在視覺化中定義的群組。
- 點擊畫布。 然後,將新的視覺效果小工具放在畫布上。
- 使用視覺效果組態面板來編輯設定,如下所示:
- 數據集: 計程車數據
- 可視化: 長條圖
-
X 軸:
- 欄位: dropoff_zip
- 縮放類型: 分類
- 轉換: 無
-
Y 軸:
- 每英里的成本
備註
數據表視覺效果支持導出維度,但不支持導出量值。
下圖顯示圖表。
套用篩選條件時,具有自定義計算的視覺效果會自動更新。 例如,新增 pickup_zip 篩選會更新視覺效果,只顯示符合所選值的數據。
編輯自定義計算
若要編輯計算:
- 按一下 資料 索引標籤,然後按一下與您要編輯之計算相關聯的資料集。
- 按兩下結果面板中的 [架構] 索引標籤。
-
量值 和 維度 會出現在數據集欄位清單中。 點擊
您要編輯的計算右邊的 Kebab 功能表。 然後按兩下 [ 編輯]。
- 在 [編輯自定義計算 ] 面板中,更新您要編輯的文字欄位。 然後按兩下 [ 更新]。
刪除自訂計算
若要刪除計算:
- 按一下 [資料 ] 索引標籤,然後按一下與您要編輯之量值相關聯的資料集。
- 按兩下結果面板中的 [架構] 索引標籤。
- [ 量值] 區段會出現在欄位清單中。 點擊
然後在您要編輯的計算右邊找到 kebab 選單。 然後按下 [刪除]。
- 在出現的 [刪除] 對話框中,按一下 [刪除]。
局限性
若要使用自訂計算,下列條件必須滿足:
- 表達式中使用的數據行必須屬於相同的數據集。
- 不支持參考外部數據表或數據源的表達式,而且可能會失敗或傳回非預期的結果。
支援的功能
如需自訂計算所有支援函數的完整參考,請參閱 自訂計算函數參考。 嘗試使用不支援的函式會導致錯誤。
範例
下列範例示範自定義計算的常見用法。 每個自定義計算都會出現在數據索引標籤上的資料集架構中。在畫布上,您可以選擇自定義計算作為欄位。
有條件地篩選和匯總數據
使用CASE語句來有條件地匯總數據。 下列範例使用 samples.nyctaxi.trips 數據集,並計算從 10103 郵遞區編碼發車的所有車程費用總和。
SUM(CASE
WHEN pickup_zip=10103 THEN fare_amount
WHEN pickup_zip!=10103 THEN 0
END)
建構字串
使用函式 CONCAT 來建構新的字串值。 請參閱 concat 函式 和 concat_ws 函式。
CONCAT(first_name, ' ', last_name)
格式化日期
使用 DATE_FORMAT 來格式化出現在視覺效果中的日期字串。
DATE_FORMAT(tpep_pickup_datetime, 'YYYY-MM-dd')