彙總函數
稱為彙總函數的函數系列,包含將多個欄位值作為其輸入值並傳回每個群組單一結果的函數,其中分組是由圖表維度或指令碼陳述式中的 group by 子句所定義。
彙總函數包括 Sum()、Count()、Min()、Max() 等。
大多數彙總函數可以同時用在資料載入指令碼和圖表運算式中,但是語法有所不同。
在資料載入指令碼中使用彙總函數
彙總函數只能在 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)。若您想要計算特定表格的列數,不應使用金鑰。