全部產品
Search
文件中心

Quick BI:分析函數(LOD函數)

更新時間:Sep 04, 2025

LOD函數的全稱是詳細資訊層級運算式(Level Of Detail Expressions)。它主要是為了克服一些運算式之間計算粒度不一致的問題,本文將詳細為您介紹如何使用LOD函數。

使用限制

明細表不支援使用LOD函數。

背景介紹

目前Quick BI的分析主要以固定維度為主,比如使用者想要看地區、省份下的訂單數量,就需要在交叉表上的行上放置地區、省份(維度),在列上放置訂數量(度量),並且設定彙總方式為求和。

image.png

這時產生的查詢SQL如下:

SELECT
  ADR_T_1_.`area` AS T_AAC_2_,
  ADR_T_1_.`province` AS T_A9E_3_,
  SUM(ADR_T_1_.`order_amt`) AS T_AAD_4_
FROM
  `qbi4test`.`company_sales_record` AS ADR_T_1_
GROUP BY
  ADR_T_1_.`area`,
  ADR_T_1_.`province`
ORDER BY
  T_AAC_2_ ASC,
  T_A9E_3_ ASC

但是如果使用者想在同一張表格上看到地區、省份粒度下的資料,又想看到地區的資料應該怎麼辦呢?或者使用者想在同一張表格中看到地區、省份粒度下的資料,又想看到省份資料與對應地區資料的比值或者差值等資料呢?又或者使用者想看到每個省份下哪個產品類型的銷售金額最大應該怎麼辦?此時,我們需要用到LOD函數去解決以上情境。

使用情境

詳細資訊層級運算式,其中詳細資訊層級資料彙總粒度的層次,不同的層級代表著資料不同的彙總度和粒度,能夠處理在一個可視化視圖中包含多個資料詳細資訊層級的問題。

如果分析過程中需要添加一個維度,其明細程度高於或者低於已有視圖的可視化明細程度,但又不希望改變現有圖形展示內容,就可採用詳細資訊層級運算式功能。

文法說明

LOD,即Level Of Detail Expressions(詳細資訊層級運算式),是一種強大的計算功能,它允許我們在資料分析中建立更複雜的計算和彙總。LOD運算式可以在做資料分析時控制要計算的粒度,協助使用者在指定粒度層級(FIXED層級)、較高粒度層級(INCLUDE層級)、較低粒度層級(EXCLUDE層級)對資料進行分析。基本用法如下:

LOD_FIXED

文法

LOD_FIXED{<維度聲明> : <彙總運算式>}

參數說明

  • 維度聲明:指定彙總運算式要串連到的一個或多個維度。使用逗號分隔各個維度。

  • 彙總運算式:彙總運算式是所執行的計算,用於定義目標維度。

定義

用於在指定的維度上計算固定的彙總值,不受圖表中其他維度影響。

輸出

數值

樣本

LOD_FIXED{[地區]: BI_SUM([訂單金額])}

含義:單獨以地區為粒度彙總,求訂單金額的合計,與已有查詢中的維度無關。

更多應用樣本請參見FIXED函數應用

LOD_INCLUDE

文法

LOD_INCLUDE{<維度聲明> : <彙總運算式>}

參數說明

  • 維度聲明:指定彙總運算式要串連到的一個或多個維度。使用逗號分隔各個維度。

  • 彙總運算式:彙總運算式是所執行的計算,用於定義目標維度。

定義

用於在圖表中包含額外的維度進行彙總計算。

輸出

數值

樣本

LOD_INCLUDE{[地區]: BI_SUM([訂單金額])}

含義:以已有查詢中的維度為基礎,再加上地區為彙總粒度,求訂單金額的合計。

更多應用樣本請參見INCLUDE函數應用

LOD_EXCLUDE

文法

LOD_EXCLUDE{<維度聲明> : <彙總運算式>}

參數說明

  • 維度聲明:指定彙總運算式要串連到的一個或多個維度。使用逗號分隔各個維度。

  • 彙總運算式:彙總運算式是所執行的計算,用於定義目標維度。

定義

用於在圖表中排除特定的維度進行彙總計算。

輸出

數值

樣本

LOD_EXCLUDE{[地區]: BI_SUM([訂單金額])}

含義:以已有查詢中的維度為基礎,如果已有維度中有地區的話,則去除地區,再以剩下的維度為彙總粒度,求訂單金額的合計。

更多應用樣本請參見EXCLUDE函數應用

操作步驟

  1. 資料集編輯頁面單擊建立計算欄位,進入配置彈窗頁面。

    image

  2. 填寫欄位名稱(①),在欄位運算式中選擇需要引用的LOD函數欄位(②)。

    image

  3. 建立完成後,單擊確定按鈕。使用新增欄位建立儀表板圖表時,可以看到相同地區的訂單金額總額,不受產品類型影響而變化。

    image..png

運算式說明

基本公式

三種LOD運算式的使用結構和文法分別如下:

  • 使用結構

    • LOD_FIXED{<維度聲明> : <彙總運算式>}

    • LOD_INCLUDE{<維度聲明> : <彙總運算式>}

    • LOD_EXCLUDE{<維度聲明> : <彙總運算式>}

樣本:LOD_FIXED{ [訂單日期]:sum([訂單金額])}

  • 文法說明

    • FIXED |INCLUDE|EXCLUDE :定界關鍵字,制定了LOD的範圍。

    • <維度聲明>:指定彙總運算式要串連到的一個或多個維度。使用逗號分隔各個維度。

    • <彙總運算式>:彙總運算式是所執行的計算,用於定義目標維度。

過濾條件

在Quick BI中除了基本的公式外,還支援寫過濾條件,具體運算式如下,以冒號隔開維度聲明、彙總運算式和過濾條件。

  • LOD_FIXED{維度1,維度2...:彙總運算式:過濾條件}

  • LOD_INCLUDE{維度1,維度2...:彙總運算式:過濾條件}

  • LOD_EXCLUDE{維度1,維度2...:彙總運算式:過濾條件}

說明
  • 過濾條件非必填。

  • LOD_FIXED表示固定某個粒度計算彙總,不受外部配置影響;在計算LOD_FIXED欄位時,預設使用全量資料,只有運算式內的過濾條件可以生效,其他過濾條件(包括過濾器、查詢控制項)將不被考慮。

    LOD_INCLUD和LOD_EXCLUDE函數會受到圖表配置影響,因此外部過濾條件也將被考慮在內。

    具體細節請參見過濾條件規則說明

實現原理

在實際情境中,LOD運算式產生的彙總資料通常需要與未經處理資料或其他彙總層級的資料合併以提供豐富的資料檢視。這在SQL中通常需要使用子查詢和JOIN操作來實現。接下來本節會分別介紹FIXED層級、INCLUDE層級以及EXCLUDE層級LOD運算式的實現原理。

FIXED層級

回到背景介紹中提到的問題,如果使用者想在同一張表格上看到地區、省份粒度下的資料,又想看到地區的資料應該怎麼辦呢?

image.png

這個時候我們可以建立一個FIXED運算式:

LOD_FIXED{[area]:sum([order_amt])}

在SQL中,可以通過以下查詢實現,其中我們建立一個子查詢來計算每個地區下的訂單數量,然後將這個子查詢的結果與原始查詢JOIN在一起:

-- 簡化結構
-- lod_fixed{[area]:sum([order_amt])}
SELECT
    LOD_TM.`LOD_07AEF3F2F99A95` AS LOD_0,			-- area
    LOD_TM.`LOD_55512959145CF3` AS LOD_1,			-- province
    LOD_TM.`LOD_8BE7507A47AD81` AS LOD_2,			-- order_amt
    LOD_TP_0.`LOD_measure_result` AS LOD_3		-- lod_fixed{[area]:sum([order_amt])}
FROM
    (
        SELECT		-- 主查詢:area、province、sum(order_amt)
            ADR_T_1_.`area` AS LOD_07AEF3F2F99A95,
            ADR_T_1_.`province` AS LOD_55512959145CF3,
            SUM(ADR_T_1_.`order_amt`) AS LOD_8BE7507A47AD81
        FROM
            `qbi4test`.`company_sales_record` AS ADR_T_1_
        GROUP BY
            ADR_T_1_.`area`,
            ADR_T_1_.`province`
        ORDER BY
            LOD_07AEF3F2F99A95 ASC,
            LOD_55512959145CF3 ASC
        LIMIT
            0, 20
    ) AS LOD_TM
    INNER JOIN (
        SELECT			-- lod子查詢:area、sum(order_amt)
            ADR_T_1_.`area` AS LOD_07AEF3F2F99A95,
            sum(ADR_T_1_.`order_amt`) AS LOD_measure_result
        FROM
            `qbi4test`.`company_sales_record` AS ADR_T_1_
        GROUP BY
            ADR_T_1_.`area`
    ) AS LOD_TP_0 ON LOD_TM.`LOD_07AEF3F2F99A95` = LOD_TP_0.`LOD_07AEF3F2F99A95`


-- 標準結構
-- lod_fixed{[area]:sum([order_amt])}
SELECT
    LOD_TM.`LOD_07AEF3F2F99A95` AS LOD_0,
    LOD_TM.`LOD_55512959145CF3` AS LOD_1,
    LOD_TM.`LOD_8BE7507A47AD81` AS LOD_2,
    LOD_TP_0.`LOD_9D09E63F2E93FA` AS LOD_3
FROM
    (
        SELECT
            SUM(ADR_T_1_.`order_amt`) AS LOD_8BE7507A47AD81,
            ADR_T_1_.`province` AS LOD_55512959145CF3,
            ADR_T_1_.`area` AS LOD_07AEF3F2F99A95
        FROM
            `qbi4test`.`company_sales_record` AS ADR_T_1_
        GROUP BY
            ADR_T_1_.`province`,
            ADR_T_1_.`area`
        ORDER BY
            LOD_07AEF3F2F99A95 ASC,
            LOD_55512959145CF3 ASC
        LIMIT
            0, 20
    ) AS LOD_TM
    INNER JOIN (
        SELECT
            LOD_TL.`LOD_07AEF3F2F99A95` AS LOD_07AEF3F2F99A95,
            LOD_TL.`LOD_55512959145CF3` AS LOD_55512959145CF3,
            SUM(LOD_TR.`LOD_measure_result`) AS LOD_9D09E63F2E93FA
        FROM
            (
                SELECT
                    ADR_T_1_.`province` AS LOD_55512959145CF3,
                    ADR_T_1_.`area` AS LOD_07AEF3F2F99A95
                FROM
                    `qbi4test`.`company_sales_record` AS ADR_T_1_
                GROUP BY
                    ADR_T_1_.`province`,
                    ADR_T_1_.`area`
            ) AS LOD_TL
            INNER JOIN (
                SELECT
                    sum(ADR_T_1_.`order_amt`) AS LOD_measure_result,
                    ADR_T_1_.`area` AS LOD_07AEF3F2F99A95
                FROM
                    `qbi4test`.`company_sales_record` AS ADR_T_1_
                GROUP BY
                    ADR_T_1_.`area`
            ) AS LOD_TR ON LOD_TL.`LOD_07AEF3F2F99A95` = LOD_TR.`LOD_07AEF3F2F99A95`
        GROUP BY
            LOD_TL.`LOD_07AEF3F2F99A95`,
            LOD_TL.`LOD_55512959145CF3`
    ) AS LOD_TP_0 ON LOD_TM.`LOD_07AEF3F2F99A95` = LOD_TP_0.`LOD_07AEF3F2F99A95`
    AND LOD_TM.`LOD_55512959145CF3` = LOD_TP_0.`LOD_55512959145CF3`

INCLUDE層級

如果使用者想在同一張表格上看到地區粒度下的資料,又想看到地區下訂單量最大的省份佔比該怎麼實現呢?

image.png

這個時候我們可以建立一個INCLUDE運算式:

MAX(LOD_INCLUDE{[province]:SUM([order_amt])}) / SUM([order_amt])

在SQL中,可以通過以下查詢實現,其中我們建立一個子查詢來計算每個地區-省份下的訂單數量,然後將這個子查詢的結果與原始查詢JOIN在一起:

-- 簡化結構
-- MAX(lod_include{[province]:SUM([order_amt])}) / SUM([order_amt])
SELECT
    LOD_TM.`LOD_07AEF3F2F99A95` AS LOD_0,		-- area
    LOD_TP_0.`LOD_EC796C51A8ABAB` / LOD_TM.`temp_calculation_0` AS LOD_1  -- MAX(lod_include{[province]:SUM([order_amt])}) / SUM([order_amt])
FROM
    (
        SELECT	-- 主查詢:area、sum(order_amt)
            ADR_T_1_.`area` AS LOD_07AEF3F2F99A95,
            sum(ADR_T_1_.`order_amt`) AS temp_calculation_0
        FROM
            `qbi4test`.`company_sales_record` AS ADR_T_1_
        GROUP BY
            ADR_T_1_.`area`
        ORDER BY
            LOD_07AEF3F2F99A95 ASC
        LIMIT
            0, 20
    ) AS LOD_TM
    INNER JOIN (		
        SELECT		-- lod子查詢:area、max(order_amt)
            LOD_TP_0.`LOD_07AEF3F2F99A95` AS LOD_07AEF3F2F99A95,
            MAX(LOD_TP_0.`LOD_measure_result`) AS LOD_EC796C51A8ABAB
        FROM
            (
                SELECT		-- area、province、sum(order_amt)
                    ADR_T_1_.`area` AS LOD_07AEF3F2F99A95,
                    ADR_T_1_.`province` AS LOD_55512959145CF3,
                    SUM(ADR_T_1_.`order_amt`) AS LOD_measure_result
                FROM
                    `qbi4test`.`company_sales_record` AS ADR_T_1_
                GROUP BY
                    ADR_T_1_.`area`
                    ADR_T_1_.`province`
    ) AS LOD_TP_0 ON LOD_TM.`LOD_07AEF3F2F99A95` = LOD_TP_0.`LOD_07AEF3F2F99A95`

      
-- 標準結構
-- MAX(lod_include{[province]:SUM([order_amt])}) / SUM([order_amt])
SELECT
    LOD_TM.`LOD_07AEF3F2F99A95` AS LOD_0,
    LOD_TP_0.`LOD_EC796C51A8ABAB` / LOD_TM.`temp_calculation_0` AS LOD_1
FROM
    (
        SELECT
            ADR_T_1_.`area` AS LOD_07AEF3F2F99A95,
            sum(ADR_T_1_.`order_amt`) AS temp_calculation_0
        FROM
            `qbi4test`.`company_sales_record` AS ADR_T_1_
        GROUP BY
            ADR_T_1_.`area`
        ORDER BY
            LOD_07AEF3F2F99A95 ASC
        LIMIT
            0, 20
    ) AS LOD_TM
    INNER JOIN (
        SELECT
            LOD_TL.`LOD_07AEF3F2F99A95` AS LOD_07AEF3F2F99A95,
            MAX(LOD_TR.`LOD_measure_result`) AS LOD_EC796C51A8ABAB
        FROM
            (
                SELECT
                    ADR_T_1_.`province` AS LOD_55512959145CF3,
                    ADR_T_1_.`area` AS LOD_07AEF3F2F99A95
                FROM
                    `qbi4test`.`company_sales_record` AS ADR_T_1_
                GROUP BY
                    ADR_T_1_.`province`,
                    ADR_T_1_.`area`
            ) AS LOD_TL
            INNER JOIN (
                SELECT
                    SUM(ADR_T_1_.`order_amt`) AS LOD_measure_result,
                    ADR_T_1_.`province` AS LOD_55512959145CF3,
                    ADR_T_1_.`area` AS LOD_07AEF3F2F99A95
                FROM
                    `qbi4test`.`company_sales_record` AS ADR_T_1_
                GROUP BY
                    ADR_T_1_.`province`,
                    ADR_T_1_.`area`
            ) AS LOD_TR ON LOD_TL.`LOD_07AEF3F2F99A95` = LOD_TR.`LOD_07AEF3F2F99A95`
        GROUP BY
            LOD_TL.`LOD_07AEF3F2F99A95`
    ) AS LOD_TP_0 ON LOD_TM.`LOD_07AEF3F2F99A95` = LOD_TP_0.`LOD_07AEF3F2F99A95`

EXCLUDE層級

對於上面「如果使用者想在同一張表格上看到地區、省份粒度下的資料,又想看到地區的資料應該怎麼辦呢?」這個問題,FIXED層級的LOD運算式能讓我們直接指定某個具體的維度「area」進行彙總來得到我們想要的一列分析資料。那我們換個思路,圖表上已經拖進來了地區和省份兩個維度,這個時候我們想要彙總的維度「area」已經出現了,是不是可以排除掉其他的維度「province」再彙總,這樣是不是同樣也能得到我們想要的資料呢,答案是肯定的,這也是EXCLUDE層級的LOD運算式的思路。

image.png

這個時候我們可以建立一個EXCLUDE運算式:

LOD_EXCLUDE{[province]:SUM([order_number])}

在SQL中,可以通過以下查詢實現,其中我們建立一個子查詢來計算每個地區下的訂單數量,然後將這個子查詢的結果與原始查詢JOIN在一起:

-- 簡化結構
-- lod_EXCLUDE{[province]:SUM([order_number])}
SELECT
    LOD_TM.`LOD_07AEF3F2F99A95` AS LOD_0,       -- area
    LOD_TM.`LOD_55512959145CF3` AS LOD_1,       -- province
    LOD_TM.`LOD_140423A9870F07` AS LOD_2,       -- order_number
    LOD_TP_0.`LOD_measure_result` AS LOD_3      -- lod_EXCLUDE{[province]:SUM([order_number])}
FROM
    (
        SELECT      -- 主查詢: area、province、sum(order_number)
            ADR_T_1_.`area` AS LOD_07AEF3F2F99A95,
            ADR_T_1_.`province` AS LOD_55512959145CF3,
            SUM(ADR_T_1_.`order_number`) AS LOD_140423A9870F07
        FROM
            `qbi4test`.`company_sales_record` AS ADR_T_1_
        GROUP BY
            ADR_T_1_.`area`,
            ADR_T_1_.`province`
        ORDER BY
            LOD_07AEF3F2F99A95 ASC,
            LOD_55512959145CF3 ASC
        LIMIT
            0, 20
    ) AS LOD_TM
    INNER JOIN (
        SELECT      -- lod子查詢:area、sum(order_number)
            ADR_T_1_.`area` AS LOD_07AEF3F2F99A95,
            SUM(ADR_T_1_.`order_number`) AS LOD_measure_result
        FROM
            `qbi4test`.`company_sales_record` AS ADR_T_1_
        GROUP BY
            ADR_T_1_.`area`
    ) AS LOD_TP_0 ON LOD_TM.`LOD_07AEF3F2F99A95` = LOD_TP_0.`LOD_07AEF3F2F99A95`
    AND LOD_TM.`LOD_55512959145CF3` = LOD_TP_0.`LOD_55512959145CF3`



-- 標準結構
-- lod_EXCLUDE{[province]:SUM([order_number])}
SELECT
    LOD_TM.`LOD_07AEF3F2F99A95` AS LOD_0,
    LOD_TM.`LOD_55512959145CF3` AS LOD_1,
    LOD_TM.`LOD_140423A9870F07` AS LOD_2,
    LOD_TP_0.`LOD_90EDFE3F5B628A` AS LOD_3
FROM
    (
        SELECT
            SUM(ADR_T_1_.`order_number`) AS LOD_140423A9870F07,
            ADR_T_1_.`province` AS LOD_55512959145CF3,
            ADR_T_1_.`area` AS LOD_07AEF3F2F99A95
        FROM
            `qbi4test`.`company_sales_record` AS ADR_T_1_
        GROUP BY
            ADR_T_1_.`province`,
            ADR_T_1_.`area`
        ORDER BY
            LOD_07AEF3F2F99A95 ASC,
            LOD_55512959145CF3 ASC
        LIMIT
            0, 20
    ) AS LOD_TM
    INNER JOIN (
        SELECT
            LOD_TL.`LOD_07AEF3F2F99A95` AS LOD_07AEF3F2F99A95,
            LOD_TL.`LOD_55512959145CF3` AS LOD_55512959145CF3,
            SUM(LOD_TR.`LOD_measure_result`) AS LOD_90EDFE3F5B628A
        FROM
            (
                SELECT
                    ADR_T_1_.`province` AS LOD_55512959145CF3,
                    ADR_T_1_.`area` AS LOD_07AEF3F2F99A95
                FROM
                    `qbi4test`.`company_sales_record` AS ADR_T_1_
                GROUP BY
                    ADR_T_1_.`province`,
                    ADR_T_1_.`area`
            ) AS LOD_TL
            INNER JOIN (
                SELECT
                    SUM(ADR_T_1_.`order_number`) AS LOD_measure_result,
                    ADR_T_1_.`area` AS LOD_07AEF3F2F99A95
                FROM
                    `qbi4test`.`company_sales_record` AS ADR_T_1_
                GROUP BY
                    ADR_T_1_.`area`
            ) AS LOD_TR ON LOD_TL.`LOD_07AEF3F2F99A95` = LOD_TR.`LOD_07AEF3F2F99A95`
        GROUP BY
            LOD_TL.`LOD_07AEF3F2F99A95`,
            LOD_TL.`LOD_55512959145CF3`
    ) AS LOD_TP_0 ON LOD_TM.`LOD_07AEF3F2F99A95` = LOD_TP_0.`LOD_07AEF3F2F99A95`
    AND LOD_TM.`LOD_55512959145CF3` = LOD_TP_0.`LOD_55512959145CF3`

FIXED函數應用

FIXED詳細資訊層級運算式使用指定維度進行計算,而不引用其他任何維度。

應用情境一:計算每個地區的銷售金額總和

情境描述

當您在分析地區分布下銷售訂單情況時,資料表中存在維度地區省份,需要用FIXED計算地區對應的金額總和,因為FIXED詳細資訊層級運算式不考慮其他維度層級,只計算運算式中引用的維度,故可以計算出對應地區的銷售金額和。

操作步驟

  1. 建立計算欄位

    欄位運算式:LOD_FIXED{[地區]:BI_SUM([訂單金額])}

    含義:按照地區求出訂單金額的和。

    image

  2. 建立圖表。

    本例中,我們建立一個交叉表。

    將上一步建立的各地區金額和欄位拖入欄區域,將地區省份欄位拖入列區域,單擊更新後系統自動更新圖表。

    image.png

    此時,我們可以同個地區的金額和是一樣的,不受省份的影響。

應用情境二:客戶訂單頻率

情境描述

某公司銷售經理想瞭解訂購過一個訂單、兩個訂單、三個訂單(依次類推)的客戶數目,通過查看客戶購買次數的數量和分布,來分析客戶的複購黏性。該情境下,我們可以使用詳細資訊層級運算式(LOD函數)實現按照某一度量劃分另一度量的目的。

本例中,我們使用LOD_FIXED函數,將訂單數轉變為按客戶數劃分的維度,求出客戶訂單頻率

操作步驟

  1. 建立計算欄位。

    欄位運算式:LOD_FIXED{[customer_name]:COUNT([order_id])}

    含義:根據使用者名稱稱求出每個使用者的購買的次數。image

  2. 建立圖表

    本例中,我們建立一個柱圖。

    將上一步建立的購買次數欄位拖入類別軸/維度軸地區,將customer_name欄位拖入軸值/度量地區並設定去重計數,單擊更新後系統自動更新圖表。

    image.png

此時,我們可以看到購買7次的客戶數量最多,最多的一個客戶購買了58次。

應用情境三:各地區利潤百分比熱門排行榜

情境描述

某公司地區銷售總監想知道每個地區對總利潤的佔比,並一目瞭然地看出哪些地區的貢獻度最大。該情境下,我們可以使用進階計算 -> 佔比來實現,也可以使用詳細資訊層級運算式(LOD函數)來更靈活的實現。

本例中,我們使用LOD_FIXED函數求出各地區利潤百分比熱門排行榜

操作步驟

  1. 建立計算欄位。

    1. 欄位運算式:LOD_FIXED{:SUM([profit_amt])}

      含義:在本例中,FIXED的寫法更特殊一些,該運算式並沒有指定維度,因此它的含義是不根據任何粒度進行彙總,直接求出利潤額的總和。

    2. 再用SUM([profit_amt])來除以之前的LOD函數,如運算式所示:SUM([profit_amt]) / SUM(LOD_FIXED{:SUM([profit_amt])}),得到的就是各個地區的利潤佔比。

      image

  2. 建立圖表。

    本例中,我們建立一個熱門排行榜。

    將上一步建立的利潤總額百分比欄位拖入指標/度量地區,將area欄位拖入類別/維度地區,單擊更新,系統自動更新圖表。

    image.png

此時,我們可以看到,華南和華北的貢獻度排名前二,而華東?和西南的貢獻度最低,而且利潤額甚至是負數,當然華東?這個資料看起來更像是髒資料。

應用情境四:年度新增使用者統計

情境描述

在一個產品中,如何判斷我們的產品是否在正向增長?除了日常使用的PV和UV之外,我們還可以統計使用者的忠誠率,比如使用了很久的使用者,依然在使用我們的產品並做出下單等貢獻時,我們就可以認為我們的產品是有粘性的。為了實現這種效果,我們可以使用詳細資訊層級運算式(LOD函數)。

本例中,我們使用LOD_FIXED函數實現年度新增使用者統計

操作步驟

  1. 建立計算欄位。

    欄位運算式:LOD_FIXED{[customer_name]:MIN(DATE_FORMAT([buy_date], '%Y'))}

    含義:求出每個使用者最早的下單時間,粒度為年,粒度可以隨意調整,只要使用符合您的資料庫的文法的日期函數就可以。image

  2. 建立圖表。

    本例中,我們建立一個線圖。

    將上一步建立的客戶最早購買年份欄位拖入類別軸/維度地區,將銷售額拖入軸值/度量地區,單擊更新,系統自動更新圖表。

    image.png

此時,我們可以看到,2013年開始使用的使用者,在整個的貢獻度當中依然是非常高的,看來我們的產品粘性還是很高的。

應用情境五:基於訂單明細統計各年的新客戶數趨勢

情境描述

按客戶粒度統計單客最早購買年份,再基於其統計客戶數分布。

操作步驟

  1. 建立計算欄位

    1. 欄位一:LOD_FIXED{[客戶ID]: min(BI_YEAR([訂單日期]))}

      將該欄位命名為客戶首購年份,資料類型為維度,欄位類型為文本。

    2. 欄位二:客戶數=count(distinct [客戶ID])

  2. 建立圖表

    本例中,我們建立一個柱圖用於展示資料,將客戶首購年份欄位拖入類別軸/維度地區,將客戶數欄位拖入值軸/度量地區,單擊更新,系統自動更新圖表。

    image

此時,我們可以看到各個年份的年度新增客戶數,2021年最多,此後下降明顯。

應用情境六:基於訂單明細統計不同購買頻次的客戶數分布

情境描述

按客戶粒度統計單客的購買頻次,再基於其統計客戶數分布。

操作步驟

  1. 建立計算欄位

    1. 欄位一:LOD_FIXED{[客戶ID]: count(distinct [訂單ID])}

      將該欄位命名為客戶購買頻次,資料類型為維度,欄位類型為文本。

    2. 欄位二:客戶數=count(distinct [客戶ID])

  2. 建立圖表

    本例中,我們建立一個柱圖用於展示資料,將客戶購買頻次欄位拖入類別軸/維度地區,將客戶數欄位拖入值軸/度量地區,單擊更新,系統自動更新圖表。

    image

此時,我們可以看到,購買頻次為3次的客戶數最多。

應用情境七:統計各年的訂單金額並與重點年2023年對比

情境描述

統計固定範圍資料及對比,例如統計各年的訂單資料與重點年2023年的對比。

操作步驟

  1. 建立計算欄位

    sum([訂單金額])/
    LOD_FIXED{:
    sum(
    case when BI_YEAR([訂單日期]) ='2023' 
    then [訂單金額] else 
    0 end)} 
    -1

    欄位拆分說明:

    1. 計算2023年的訂單金額,公式:LOD_FIXED{:sum(case when BI_YEAR([訂單日期]) ='2023' then [訂單金額] else 0 end)}

    2. 求出各年的訂單金額並與2023年的訂單金額對比,公式:sum([訂單金額])/[2023年的訂單金額]-1,欄位命名為與2023年比

  2. 建立圖表

    本例中,我們建立一個交叉表,將訂單日期(year)欄位拖入列區域,將訂單金額欄位和與23年比欄位拖入欄區域,單擊更新,系統自動更新圖表。

    image

此時,我們可以看到各個訂單年的訂單金額以及與2023年的對比資料。

應用情境八:各年各月的盈虧天數統計分析

情境描述

基於每天的利潤統計,對每天進行盈虧打標,再根據盈虧標記、訂單的年份及月份,進行天數統計。

操作步驟

  1. 建立計算欄位

    1. 欄位一:

      case when 
      LOD_FIXED{[訂單日期]:sum([利潤])}>0 
      then '盈利' 
      else '虧損' 
      end

      將該欄位命名為天盈虧打標,資料類型為維度,欄位類型為文本。

      欄位拆分說明:

      1. 按照訂單日期計算利潤總額,公式:LOD_FIXED{[訂單日期]:sum([利潤])}

      2. 利潤總額大於0時,返回“盈利”,否則返回“虧損”,公式:case when [利潤總額]>0 then '盈利' else '虧損' end

    2. 欄位二:天數=count(distinct [訂單日期])

    3. 欄位三:月份=BI_MONTH([訂單日期])

  2. 建立圖表

    我們可以用線柱圖的拆分維度製作小型圖,基於堆積趨勢或分類趨勢兩種方式進行可視化呈現,能清楚地看到資料的對比和趨勢。

    本例中,我們建立一個堆積柱狀圖,用於展示盈虧天數分布-堆積趨勢;以及兩個面積圖,用於展示盈虧天數分布。

    1. 我們先建立一個堆積柱狀圖,將月份欄位拖入類別軸/維度地區,將天數欄位拖入值軸/度量地區,將天盈虧打標欄位拖入顏色圖例/維度地區,將訂單日期(year)欄位拖入拆分/維度。單擊更新後系統自動更新圖表。

      image

    2. 我們再建立兩個面積圖,一個展示虧損天數,另一個展示盈利天數。

      在兩個面積圖中,分別將月份欄位拖入類別軸/維度地區,將天數欄位拖入值軸/度量地區,將訂單日期(year)欄位拖入拆分/維度。

      在過濾器中拖入天盈虧打標欄位,並設定展示虧損天數的過濾條件精確匹配“虧損”;展示盈利天數的過濾條件精確匹配“盈利”。

      image

      單擊更新後系統自動更新圖表。

      image

此時,我們可以直觀地看到各年各月盈虧天數的對比和趨勢。

image

INCLUDE函數應用

INCLUDE詳細資訊層級運算式將指定的維度作為分組依據進行計算。INCLUDE的作用是在已有的彙總粒度基礎上,再深入一層進行分析。

應用情境一:計算平均客戶銷售額

情境描述

當您在分析各種產品的銷售情況時,需要查看平均客戶銷售額,可以通過INCLUDE先計算每個客戶的總訂單銷售金額,再通過平均值的彙總方式計算展示。

操作步驟

  1. 建立計算欄位

    欄位運算式:LOD_INCLUDE{[使用者id]:SUM([訂單金額])}

    含義:按照使用者id計算每個客戶的總訂單金額。

    image

  2. 建立圖表

    本例中,我們建立一個交叉表。

    訂單金額客戶訂單總額欄位拖入欄區域,將產品類型欄位拖入列區域。並將客戶訂單總額的彙總方式設定為平均值,單擊更新後系統自動更新圖表。image.png

此時,我們可以看到不同產品類型對應的平均客戶銷售額。

應用情境二:各個銷售代表的平均最大額交易數額

情境描述

某公司銷售總監需要瞭解每個銷售代表達成的最大額交易數額按地區計算的平均值,並且在地圖上進行展示。該情境下,我們可以利用詳細資訊層級運算式(LOD運算式),使資料按照地區層級直觀顯示,我們也可以向下查看銷售代表詳細資訊層級,直觀地看到哪個戰區的銷售資料較好,哪些較差,從而對各地區的銷售代表進行不同的目標規劃。

本例中,我們使用LOD_INCLUDE函數求出各個銷售代表的平均最大額交易數額

操作步驟

  1. 建立計算欄位。

    欄位運算式:AVG(LOD_INCLUDE{[sales_name]:MAX([price])})

    含義:在原有的基礎上,額外增加銷售代表名字為分析粒度,並求出銷售額的最大值的平均值。

    image

  2. 建立圖表

    本例中,我們建立一個色彩地圖。

    1. 將上一步建立的各地銷售代表平均最大銷售金額欄位拖入色彩飽和度/度量中,將area欄位拖入地理地區軸/維度軸中。

    2. 在樣式->區塊裡,將該欄位最大值的地區標紅。

      image.png

      單擊更新,系統自動更新圖表。

      image.png

此時,我們可以看到,華東地區的銷售最大額較大,西北/西南地區的則較小。

應用情境三:計算地區訂單金額大於50萬的地區對應的利潤總額

情境描述

按地區統計訂單金額,計算大於50萬的地區的利潤總額。

操作步驟

  1. 建立計算欄位

    CASE WHEN LOD_INCLUDE{[地區]:BI_SUM([訂單金額])}>500000 
    then [利潤金額] 
    else 0 
    end

    欄位拆分說明:

    1. 按地區計算出訂單金額,欄位命名為地區訂單金額,公式:LOD_INCLUDE{[地區]:BI_SUM([訂單金額])}

    2. 找出地區訂單金額超過50萬的地區並計算利潤金額,公式:CASE WHEN 【地區訂單金額】>500000 then [利潤金額] else 0 end

    3. 最後求和(用SUM或者設定圖表裡欄位的彙總方式為求和),即可求出訂單金額大於50萬的地區的利潤總額。

  2. 建立圖表

    本例中,我們建立一個指標看板用於展示資料,您也可以再建立一個交叉表用於驗證資料的準確性。在指標看板中,將建立的欄位拖入看板指標/度量地區,欄位彙總方式為求和;在交叉表中,將地區拖入列區域,將訂單金額利潤金額建立的欄位拖入欄區域,欄位彙總方式為求和,單擊更新後系統自動更新圖表。

    image

    此時,我們可以看到,地區訂單金額大於50萬的地區為東北、華東、華北、華南這四個地區,它們的利潤總額為45.9萬。

應用情境四:計算各產品類型運輸方式為火車的訂單金額超過10萬的地區的利潤總額

情境描述

此情境為應用情境三的升級版,在此基礎上篩選了運輸方式為火車,並添加了產品類型作為分組,計算各產品類型運輸方式為火車的訂單金額超過10萬的地區的利潤總額。該情境涉及到多個函數的嵌套,為了便於理解,我們可以進行拆分使用。

操作步驟

  1. 建立計算欄位:

    SUM(
    CASE WHEN LOD_INCLUDE{[產品類型],[地區]:sum(if([運輸方式]='火車',[訂單金額],0))}>100000
    then [利潤金額]
    else 0
    end)

    欄位拆分說明:

    1. 計算各產品類型運輸方式為火車的訂單金額按照地區匯總,欄位命名為產品類型-地區訂單金額,公式:LOD_INCLUDE{[產品類型],[地區]:sum(if([運輸方式]='火車',[訂單金額],0))}

    2. 找出訂單金額超過10萬的地區並求利潤總額,公式:CASE WHEN [產品類型-地區訂單金額]>100000 then [利潤金額] else 0 end

    3. 最後用SUM求和。

  2. 建立圖表

    1. 我們建立兩個指標看板用於展示資料,在指標看板1中,將建立的欄位拖入看板指標/度量地區;在指標看板2中,將建立的欄位拖入看板指標/度量地區,並將產品類型拖入看板標籤/維度地區,單擊更新後系統自動更新圖表。

      image

      此時,我們可以看到,產品類型運輸方式為火車的訂單金額超過10萬的地區的利潤總額為42.6萬,辦公用品為14.72萬、傢具用品為0,技術用品為27.88萬。

    2. 您也可以再建立一個交叉表用於驗證資料的準確性,將產品類型運輸方式地區拖入列區域,將訂單金額利潤金額建立的欄位拖入欄區域,單擊更新後系統自動更新圖表。

      image

      以辦公用品為例,可以看到運輸方式為火車的訂單金額大於10萬的地區為東北、華東、華北和華南,對應的利潤金額總和為14.72萬,跟指標看板的資料一致。同樣的,您也可以繼續驗證其他產品類型的資料以及利潤總額是否正確。

應用情境五:計算各產品類型運輸方式為火車的訂單金額超過10萬的地區的客戶數

情境描述

此情境與應用情境四類似,不同的是,把計算利潤總額改成計算客戶數。

操作步驟

  1. 建立計算欄位:

    COUNT(DISTINCT(
    CASE WHEN LOD_INCLUDE{[產品類型],[地區]:sum(if([運輸方式]='火車',[訂單金額],0))}>100000
    then [使用者id]
    else null
    end))

    欄位拆分說明:

    1. 計算各產品類型運輸方式為火車的訂單金額按照地區匯總,欄位命名為產品類型-地區訂單金額,公式:LOD_INCLUDE{[產品類型],[地區]:sum(if([運輸方式]='火車',[訂單金額],0))}

    2. 找出訂單金額超過10萬的地區並求找到對應的客戶,公式:CASE WHEN [產品類型-地區訂單金額]>100000 then [使用者id] else null end

    3. 最後用COUNT(DISTINCT())去重計數。

  2. 建立圖表

    本例中,我們建立一個指標看板,將上一步建立的欄位拖入看板指標/度量地區,單擊更新後系統自動更新圖表。image此時,我們可以看到,產品類型運輸方式為火車的訂單金額超過10萬的地區的客戶數為1026。

應用情境六:計算地區訂單金額大於50萬的地區數量

情境描述

該情境與應用情境三類似,不同的是,把計算利潤總額改成計算地區數量。

操作步驟

  1. 建立欄位計算:

    COUNT(DISTINCT(
    CASE WHEN LOD_INCLUDE{[地區]:sum([訂單金額])}>500000
    then [地區]
    else null
    end))

    欄位拆分說明:

    1. 按地區計算出訂單金額,欄位命名為地區訂單金額,公式:LOD_INCLUDE{[地區]:sum([訂單金額])

    2. 找出地區訂單金額超過50萬的地區,公式:CASE WHEN [地區訂單金額]>500000 then [地區] else null end

    3. 最後用COUNT(DISTINCT())去重計數。

  2. 建立圖表

    本例中,我們建立一個指標看板用於展示資料,您也可以再建立一個交叉表用於驗證資料的準確性。在指標看板中,將建立的欄位拖入看板指標/度量地區;在交叉表中,將地區拖入列區域,將訂單金額拖入欄區域,單擊更新後系統自動更新圖表。

    image

    此時,我們可以看到,地區訂單金額大於50萬的地區為東北、華東、華北、華南這4個地區。

應用情境七:計算2024年各產品類型的省份平均銷售額

情境描述

計算2024年各產品類型的省份平均銷售額。

操作步驟

  1. 建立計算欄位

    AVG(
    LOD_INCLUDE{[產品類型],[省份]:
    SUM(IF(YEAR([訂單日期])='2024',[訂單金額],0))
    }
    )

    欄位拆分說明:

    1. 當訂單日期為2024年時,計算訂單金額,欄位命名為2024年訂單金額,公式:IF(YEAR([訂單日期])='2024',[訂單金額],0)

    2. 按照產品類型和省份計算銷售額,公式:LOD_INCLUDE{[產品類型],[省份],SUM[2024年訂單金額]}

    3. 用AVG求出平均值。

  2. 建立圖表

    本例中,我們建立一個指標看板用於展示資料,您也可以再建立一個交叉表用於驗證資料的準確性。在指標看板中,將建立的欄位拖入看板指標/度量地區,將產品類型拖入看板標籤/維度地區;在交叉表中,將產品類型拖入列區域,將訂單金額拖入欄區域,並過濾2024年的資料。單擊更新後系統自動更新圖表。

    image

    此時,我們可以看到,2024年辦公用品的訂單金額為23.56萬,省份平均銷售額為23.56萬/31個省份,即7600元,其他產品類型計算方式相同。

應用情境八:計算2024年各產品類型的省份平均客戶數

情境描述

該情境與應用情境七類似,不同的是,把平均銷售額改成平均客戶數。

操作步驟

  1. 建立計算欄位

    AVG(
    LOD_INCLUDE{[產品類型],[省份]:
    COUNT(DISTINCT(IF(YEAR([訂單日期])='2024',[使用者id],null)))
    }
    )

    欄位拆分說明:

    1. 當訂單日期為2024年時,計算客戶數,欄位命名為2024年客戶數,公式:IF(YEAR([訂單日期])='2024',[使用者id],null)

    2. 按照產品類型和省份計算客戶數,公式:LOD_INCLUDE{[產品類型],[省份],SUM[2024年客戶數]}

    3. 用AVG求出平均值。

  2. 建立圖表

    本例中,我們建立一個指標看板用於展示資料,您也可以再建立一個交叉表用於驗證資料的準確性。在指標看板中,將建立的欄位拖入看板指標/度量地區,將產品類型拖入看板標籤/維度地區;在交叉表中,將產品類型拖入列區域,將各產品類型省份客戶數拖入欄區域,並過濾2024年的資料。單擊更新後系統自動更新圖表。

    各產品類型省份客戶數=LOD_INCLUDE{[產品類型],[省份]:COUNT(DISTINCT([使用者id]))}

    image

    此時,我們可以看到,2024年辦公用品的省份客戶數為212,省份平均客戶數為212/31個省份,即6.839,其他產品類型計算方式相同。

應用情境九:計算省份達成目標產品數佔比及對應產品的利潤目標差距

情境描述

在各省份利潤目標完成比較確定的情況下,進一步分析細分到產品有多少達成、沒達成的具體是哪些產品。

即在省份維度下計算各產品的利潤目標差距,並統計達成目標的產品數、總產品數並進一步計算佔比。

本情境需要搭建兩個圖表並進行聯動,可以通過點擊左側的產品統計資料聯動查看右側的具體產品情況。

操作步驟

  1. 建立計算欄位

    1. 欄位一:產品的利潤目標差距

      LOD_INCLUDE{[產品] : sum([利潤]-[利潤目標])}。

      含義:按照產品類型計算各產品的利潤目標差距。

    2. 欄位二:達成目標產品數佔比

      count(distinct 
      case when [產品的利潤目標差距]>0 
      then [產品] 
      else null end)
      /count(distinct [產品])

      欄位拆分說明:

      1. 當產品的利潤目標差距大於0時,去重計算產品數量,求出達成目標產品數,公式:count(distinct case when [產品的利潤目標差距]>0 then [產品] else null end)

      2. 去重計算所有產品數,公式:count(distinct [產品])

      3. 將上面兩個欄位相除,即[達成目標產品數]/[所有產品數],求出達成目標產品數佔比

  2. 建立圖表

    本例中,我們需要建立兩個圖表,並進行聯動。

    1. 我們先建立一個橫條圖,用來展示產品的利潤目標差距。將產品欄位拖入類別軸/維度域,將產品的利潤目標差距欄位拖入值軸/度量地區。單擊更新後系統自動更新圖表。

      image

    2. 我們再建立一個橫條圖,用來展示達成目標產品數佔比。將省份欄位拖入類別軸/維度域,將達成目標產品數佔比欄位拖入值軸/度量地區。單擊更新後系統自動更新圖表。

      image

    3. 設定兩個橫條圖的聯動。

      說明

      本例中,兩個橫條圖使用的資料集為同個資料集,若儀表板開啟了自動聯動,則圖表之間將自動關聯,無需手動設定;若未開啟自動聯動,您可以配置手動聯動。

      具體操作請參見聯動

      聯動效果展示。3.gif

此時,我們可以看到省份利潤目標的完成情況,並查看各個省份對應的達成和沒達成目標的具體產品。

應用情境十:對各地區的門店進行經營情況的評估對比

情境描述

根據門店銷售和毛利的詳細資料,在各地區經營的大區及小區下,計算總的銷售額和毛利,同時計算對應地區內單個店鋪的平均銷售額和毛利,並且可以通過篩選維度,查看大區及小區,或大區層級的門店表現,對各地區的門店進行經營情況的評估對比。

操作步驟

  1. 建立計算欄位

    1. 欄位一:店鋪毛利=LOD_INCLUDE{[店名]:sum([毛利])}

    2. 欄位二:店鋪銷售額=LOD_INCLUDE{[店名]:sum([銷售額])}

  2. 建立圖表

    本例中,我們建立一個交叉表,並進行條件式格式設定配置。

    1. 在交叉表中,將所屬大區、所屬小區拖入列區域,在欄區域中,拖入兩個店鋪毛利欄位,一個設定為平均值,另一個設定為求和;拖入兩個店鋪銷售額欄位,一個設定為平均值,另一個設定為求和。

      image

    2. 店鋪毛利(平均值)店鋪銷售額(平均值)的欄位內容顯示為店均,將店鋪毛利(求和)、店鋪銷售額(求和)的欄位內容顯示為總額

    3. 在樣式->儲存格->指標展示分組裡,設定指標分組

      image

    4. 為了展示更美觀,您可以配置條件式格式設定,本例中四個欄欄位的條件式格式設定配置如下:image

    5. 單擊更新後系統自動更新圖表。image

此時,我們可以直觀地看到各地區對應的銷售額、毛利的總額及店均資料。

應用情境十一:基於地區的省份表現對各地區進行評估

情境描述

在各個地區下,按照省份匯總計算銷售額,計算其中銷售額大於閾值(基於篩選條件輸入)的省份數量,以及這些省份對應的客戶數和平均每個省的客戶數量,並可以通過輸入不同的閾值查看資料結果。

說明

本例中的閾值引用了值預留位置,具體使用方法請參見值預留位置

操作步驟

  1. 建立計算欄位

    1. 欄位一:滿足條件的省份數

      count(distinct 
      case when LOD_INCLUDE{[省份]:sum([訂單金額])} > $val{ord_amt_level} 
      then [省份] 
      else null
      end)

      欄位拆分說明:

      1. 根據省份計算訂單金額,公式:LOD_INCLUDE{[省份]:sum([訂單金額]),欄位命名為省份訂單金額

      2. 省份訂單金額大於值預留位置ord_amt_level時,返回省份,否則為空白,公式:case when [省份訂單金額 ]> $val{ord_amt_level} then [省份] else null end,欄位命名為滿足條件的省份

      3. 對滿足條件的省份進行去重計數,公式:count(distinct [滿足條件的省份])

    2. 欄位二:省份下總客戶數

      count(distinct 
      case when lod_include{[省份]:sum([訂單金額])} > $val{ord_amt_level} 
      then [客戶ID] 
      else null 
      end)

      欄位拆分說明:

      1. 根據省份計算訂單金額,公式:LOD_INCLUDE{[省份]:sum([訂單金額]),欄位命名為省份訂單金額

      2. 省份訂單金額大於值預留位置ord_amt_level時,返回客戶ID,否則為空白,公式:case when [省份訂單金額 ]> $val{ord_amt_level} then [客戶ID] else null end,欄位命名為省份下的客戶

      3. 省份下的客戶進行去重計數,公式:count(distinct [省份下的客戶])

    3. 欄位三:省份平均客戶數=[省份下總客戶數]/[滿足條件的省份數],即上述的欄位二除以欄位一。

  2. 建立圖表

    1. 建立一個交叉表,將地區拖入列區域,將省份數省份客戶數省份平均客戶數拖入欄區域。

    2. 插入圖表內查詢條件,設定查詢條件為省份銷售金額,關聯值預留位置ord_amt_level並設定預設值為100000。image

    3. 單擊更新,系統自動更新圖表。

      image

此時,您可以通過輸入不同的省份銷售金額,篩選查看資料變化。4.gif

EXCLUDE函數應用

EXCLUDE詳細資訊層級運算式去除運算式中指定的維度後進行計算。

應用情境一:計算地區下各省份銷售額佔比

情境描述

當您在分析地區下各省份銷售額資料情況時,同時還需要查看該地區總銷售資料、以及省份與其的銷售額佔比時,可以通過EXCLUDE函數先計算出除去當前省份該地區的銷售額,再通過彙總方式求和計算出該地區總額

操作步驟

  1. 建立計算欄位

    欄位運算式:LOD_EXCLUDE{[省份]:SUM([訂單金額])}

    含義:計算除去當前省份後該地區的銷售額。

    image

  2. 建立圖表

    本例中,我們建立一個交叉表。將訂單金額地區總銷售額欄位拖入欄區域,將地區省份欄位拖入列區域,單擊更新後系統自動更新圖表。

    image.png

此時,我們既可以看到各省份的訂單金額,也可以看到對應地區的總銷售額。

應用情境二:各個銷售領域和戰區平均值之間的差額

情境描述

某銷售公司目前根據全國的行政區塊下轄了7個大戰區,每個戰區下面又根據省份設立了若干個銷售領域,現在到了年終盤點的時候,我們需要快速知道各個省份的限售地區在今年的平均銷售利潤額和戰區整體平均之間的差距,並看出哪些是優秀戰區,哪些仍需要提升。對於這種情境,我們可以利用詳細資訊層級運算式(LOD運算式)和條件式格式設定快速完成這樣的一個報表。

本例中,我們使用LOD_EXCLUDE函數求出各個銷售領域和戰區平均值之間的差額

操作步驟

  1. 建立計算欄位。

    1. 欄位運算式:AVG(LOD_EXCLUDE{[province]:AVG([price])})

      含義:在原有的基礎上,去掉銷售戰區作為彙總粒度,並求出其他彙總粒度的銷售額的平均值。這個運算式中,我們將會求出各戰區(華東等)的銷售額的平均值。

    2. 再用AVG([price])來減去之前的LOD函數,如運算式所示:AVG([price]) - AVG(LOD_EXCLUDE{[province]:AVG([price])}),得到的就是各個銷售領域和戰區平均值之間的差額。

      image

  2. 建立圖表

    本例中,我們建立一個交叉表。

    1. 將上一步建立省份平均差額欄位拖入列,將area和province欄位拖入行。

    2. 在樣式->條件式格式設定裡,對該欄位設定條件式格式設定:大於0的為紅色,小於0的為綠色。

      image.png

    3. 單擊更新,系統自定更新圖表。

      image.png

此時,我們可以快速看到,在華東戰區,上海、安徽、江蘇和福建的銷售額是正向的,其中上海的表現最出色,而山東、江西和浙江的營業額未達到平均,還需努力。

過濾條件規則說明

LOD_FIXED函數 + 外部的過濾條件

  • 計算結果不受過濾條件影響的情境

    LOD_FIXED_1欄位運算式:LOD_FIXED{[地區]: SUM([訂單金額])}

    過濾條件:運輸方式 = “大卡”

    計算結果說明:在下圖中可以看到,以東北地區為例,東北地區的訂單金額合計是52.74萬,外部無過濾條件或外部過濾條件為運輸方式是“大卡”時,東北地區的訂單金額始終是52.74萬,不受過濾條件的影響。

    結論:過濾條件與LOD函數的彙總維度不同,最終的計算結果不受過濾條件影響

    image

  • 計算結果受到過濾條件影響的情境

    LOD_FIXED_2欄位運算式:LOD_FIXED{[地區], [產品類型], [運輸方式]: SUM([訂單金額])}

    過濾條件:運輸方式 = “大卡”

    計算結果說明:在下圖中可以看到,以東北地區為例,東北地區-辦公用品的訂單金額合計是15.08萬,是大卡(3.554萬)、火車(10.31萬)、空運(1.211萬)三種運輸方式的金額合計。當外部過濾條件為運輸方式是“大卡”時,東北地區-辦公用品的訂單金額是3.554萬,該金額為東北地區-辦公用品-大卡的訂單金額。

    結論:過濾條件與LOD函數的彙總維度相同,因二次彙總,最終的計算結果會受到過濾條件影響。

    image

LOD函數 + 內部的過濾條件

結論:當內部過濾條件與LOD的彙總粒度一致時,相關資料會被同步過濾;否則將只對LOD欄位進行過濾

  • LOD_FIXED函數

    • LOD_FIXED_3欄位運算式:LOD_FIXED{[地區], [產品類型], [運輸方式]: SUM([訂單金額]): [訂單等級]='中級'}

      計算結果:在下圖中可以看到,以東北地區為例,東北地區-辦公用品-大卡的訂單金額為3.507萬,該金額是過濾了訂單等級為中級後的資料,即為東北地區-辦公用品-大卡-中級的訂單金額。

      image

    • LOD_FIXED_4欄位運算式:LOD_FIXED{[地區], [產品類型], [運輸方式]: SUM([訂單金額]): [運輸方式]='大卡'}

      計算結果:在下圖中可以看到,以東北地區為例,東北地區-辦公用品-大卡的訂單金額為3.554萬,即內部過濾條件與LOD的彙總粒度一致時,LOD_FIXED函數過濾了運輸方式為大卡的資料。

      image

  • LOD_INCLUDE函數

    LOD_EXCLUDE和LOD_INCLUDE也有同樣的邏輯,此處以LOD_INCLUDE舉例。

    image

    • LOD_INCLUDE_1欄位運算式:LOD_INCLUDE{: SUM([訂單金額]): [訂單等級]='中級'}

      計算結果:在下圖中可以看到,以東北地區為例,東北地區-辦公用品-大卡的訂單金額為3.507萬,該金額是過濾了訂單等級為中級後的資料,即為東北地區-辦公用品-大卡-中級的訂單金額。

    • LOD_INCLUDE_2欄位運算式:LOD_INCLUDE{: SUM([訂單金額]): [運輸方式]='大卡'}

      在下圖中可以看到,以東北地區為例,東北地區-辦公用品-大卡的訂單金額為3.554萬,即內部過濾條件與LOD的彙總粒度一致時,LOD_INCLUDE函數過濾了運輸方式為大卡的資料。