跳到主要內容 跳至補充內容

彙總函數

稱為彙總函數的函數系列,包含將多個欄位值作為其輸入值並傳回每個群組單一結果的函數,其中分組是由圖表維度或指令碼陳述式中的 group by 子句所定義。

彙總函數包括 Sum()Count()Min()Max() 等。

大多數彙總函數可以同時用在資料載入指令碼和圖表運算式中,但是語法有所不同。

限制:  

除非內部彙總包含 TOTAL 限定詞,否則彙總函數的參數不可包含其他彙總函數。 如需更進階的巢狀彙總,請結合使用進階函數 Aggr 與指定維度。

命名實體時,避免將相同名稱指派至多個欄位、變數或量值。解決名稱相同的實體之間的衝突時有嚴格的優先順序。此順序反映在使用這些實體的任何物件或內容中。此優先順序如下:

  • 在彙總內部,欄位優先於變數。量值標籤在彙總中不相關,沒有優先度。

  • 在彙總外部,量值標籤優先於變數,結果會優先於欄位名稱。

  • 此外,在彙總外部,可以參考其標籤以重新使用量值,除非該標籤實際上是計算出的標籤。在該情況下,量值的重要性會下降,以降低自行參考的風險,在此情況下,首先會一律將名稱解譯為量值標籤,第二會解譯為欄位名稱,第三會解譯為變數名稱。

在資料載入指令碼中使用彙總函數

彙總函數只能在 LOAD SELECT 陳述式內部使用。

在圖表運算式中使用彙總函數

除非內部彙總包含 TOTAL 限定詞,否則彙總函數的參數不可包含其他彙總函數。 如需更進階的巢狀彙總,請結合使用進階函數 Aggr 與指定維度。

彙總函數會將選項所定義之一組可能記錄加以彙總。然而,可以在集合分析中使用集合運算式,來定義替代的一組記錄。

請參閱: 集合分析

如何計算彙總

彙總會透過特定表格的記錄來循環,彙總其中的記錄。例如,Count(<Field>) 將會計算 <Field> 所在表格中的記錄數量。若您只想要彙總相異欄位值,您需要使用 distinct 子句,例如 Count(distinct <Field>)。

若彙總函數包含來自不同表格的欄位,彙總函數將會透過構成欄位的表格交叉乘積的記錄來循環。這對效能有負面影響,因此應避免這類彙總,尤其是在您有大量資料時應避免。

索引鍵欄位彙總

計算彙總的方式代表您無法彙總索引鍵欄位,因為不清楚哪個表格應用於彙總。例如,若欄位 <Key> 連結兩個表格,則不清楚 Count(<Key>) 應從第一個或第二個表格傳回記錄數量。

不過,若您使用 distinct 子句,可針對跨越兩個表格連結的索引鍵欄位,妥善定義並計算彙總。

若您在彙總函數內部使用索引鍵欄位,而沒有 distinct 子句,則 Qlik Sense 將會傳回可能無意義的數字。解決方案是使用 distinct 子句或使用索引鍵副本,亦即僅位於一個表格中的副本。

例如,在下列表格中,ProductId 是表格之間的金鑰。

ProductsDetails 表格之間的 ProductId 金鑰

資料模型顯示透過索引鍵欄位 'ProductId' 連結的兩個表格

Count(ProductId) 可以在 Products 表格 (每個產品只有一個記錄 – ProductId 是主要金鑰) 中計算,或者可以在 Details 表格 (每個產品很可能有數個記錄) 中計算。若您想要計算相異產品的數量,應使用 Count(distinct ProductId)。若您想要計算特定表格的列數,不應使用金鑰。

三個或更多表格包含的索引鍵欄位彙總

distinct 前置詞只能用於最多連結兩個表格的索引鍵欄位。透過存在於三個或更多表格的索引鍵欄位分組彙總時,任何需要欄位頻率資訊的操作將會傳回 NULL。若索引鍵欄位連結三個或更多表格,必須改用欄位的非金鑰副本。

瞭解更多資訊

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們可以如何改善!