彙總函數
稱為彙總函數的函數系列,包含將多個欄位值作為其輸入值並傳回每個群組單一結果的函數,其中分組是由圖表維度或指令碼陳述式中的 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 是表格之間的金鑰。
Count(ProductID) 可以在 Products 表格 (每個產品只有一個記錄 – ProductID 是主要金鑰) 中計算,或者可以在 Details 表格 (每個產品很可能有數個記錄) 中計算。若您想要計算相異產品的數量,應使用 Count(distinct ProductID)。若您想要計算特定表格的列數,不應使用金鑰。