共用方式為


什麼是自定義計算?

自定義計算可讓您定義動態計量和轉換,而不需要修改數據集查詢。 本文說明如何在 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 (必要) 可以是下列其中一項:

    • CURRENT
    • CUMULATIVE
    • ALL
    • (TRAILING|LEADING) 數字單位
      • number 是整數
      • 單位為 DAYMONTH、 或 YEAR
      • 範例: TRAILING 7 DAYLEADING 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 儀錶板,請參閱 建立儀錶板 以開始使用。

  1. 開啟現有的數據集或建立新的數據集。

  2. 按兩下 [自定義計算]。

    自訂計算按鈕會在結果面板右上角被反白。

  3. [ 建立計算] 面板隨即在畫面右側開啟。 在 [名稱] 欄位 [] 中,輸入 [每英里的成本] []。

  4. (選擇性)在 [ 描述 ] 文字欄位中,輸入「使用票價金額和車程距離來計算每英里的成本」。

  5. 表達式 欄位中,輸入下列:

    try_divide(SUM(fare_amount), SUM(trip_distance))
    
  6. 點擊 建立

自定義計算編輯器,其中包含已填入指令中的值。

將自訂計算新增至計量檢視

這很重要

這項功能目前處於 公開預覽版

您可以在計量檢視所建立的數據集之上定義自訂計算。 當您開啟數據集時,只會顯示 結果數據表架構 。 按兩下 [自訂計算 ] 以定義新的自訂計算。 若要定義其他數據資產可以使用的其他自定義計量,請變更檢視定義。 請參閱 Unity 目錄計量檢視

若要從儀表板資料集編輯器定義新的度量檢視,請參閱 匯出為度量檢視

檢視架構

按兩下結果面板中的 [ 架構] 索引標籤,以檢視自定義計算及其相關聯的批註。

計算量值列在 [量值] 區段中,並以 計算量值圖示 fx 標示。 當您在視覺化中設定 GROUP BY 時,計算量度所關聯的值會被動態計算。 您無法在結果資料表中看到值。 匯出維度會出現在 [維度] 區 段中。

計算量值會出現在架構索引標籤中。

在視覺效果中使用自定義計算

您可以在視覺效果中使用之前建立的每英里成本計算量值。

計算量值會根據圖表中設定的維度自動彙總。 此行為與維度和量值在度量檢視中的運作方式相同,其中彙總會動態適應您在視覺化中定義的群組。

  1. 點擊畫布。 然後,將新的視覺效果小工具放在畫布上。
  2. 使用視覺效果組態面板來編輯設定,如下所示:
    • 數據集: 計程車數據
    • 可視化: 長條圖
    • X 軸:
      • 欄位: dropoff_zip
      • 縮放類型: 分類
      • 轉換:
    • Y 軸:
      • 每英里的成本

備註

數據表視覺效果支持導出維度,但不支持導出量值。

下圖顯示圖表。

條形圖,顯示每英里的成本與下拉式郵遞區號。

套用篩選條件時,具有自定義計算的視覺效果會自動更新。 例如,新增 pickup_zip 篩選會更新視覺效果,只顯示符合所選值的數據。

編輯自定義計算

若要編輯計算:

  1. 按一下 資料 索引標籤,然後按一下與您要編輯之計算相關聯的資料集。
  2. 按兩下結果面板中的 [架構] 索引標籤。
  3. 量值維度 會出現在數據集欄位清單中。 點擊 Kebab 功能表圖示。 您要編輯的計算右邊的 Kebab 功能表。 然後按兩下 [ 編輯]。
  4. [編輯自定義計算 ] 面板中,更新您要編輯的文字欄位。 然後按兩下 [ 更新]。

刪除自訂計算

若要刪除計算:

  1. 按一下 [資料 ] 索引標籤,然後按一下與您要編輯之量值相關聯的資料集。
  2. 按兩下結果面板中的 [架構] 索引標籤。
  3. [ 量值] 區段會出現在欄位清單中。 點擊kebab 選單圖示。 然後在您要編輯的計算右邊找到 kebab 選單。 然後按下 [刪除]
  4. 在出現的 [刪除] 對話框中,按一下 [刪除]。

局限性

若要使用自訂計算,下列條件必須滿足:

  • 表達式中使用的數據行必須屬於相同的數據集。
  • 不支持參考外部數據表或數據源的表達式,而且可能會失敗或傳回非預期的結果。

支援的功能

如需自訂計算所有支援函數的完整參考,請參閱 自訂計算函數參考。 嘗試使用不支援的函式會導致錯誤。

範例

下列範例示範自定義計算的常見用法。 每個自定義計算都會出現在數據索引標籤上的資料集架構中。在畫布上,您可以選擇自定義計算作為欄位。

有條件地篩選和匯總數據

使用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')