彙總函數
稱為彙總函數的函數系列,包含將多個欄位值作為其輸入值並根據群組傳回單一結果的函數,其中分組是由圖表維度或指令碼陳述式中的 group by 子句所定義。
彙總函數包括 Sum()、Count()、Min()、Max() 等。
大多數彙總函數可以同時用在資料載入指令碼和圖表運算式中,但是語法有所不同。
在資料載入指令碼中使用彙總函數
彙總函數只能在 LOAD 和 SELECT 陳述式內部使用。
在圖表運算式中使用彙總函數
除非內部彙總包含 TOTAL 限定詞,否則彙總函數的參數不可包含其他彙總函數。 如需更進階的巢狀彙總,請使用進階函數 Aggr 結合指定的維度。
彙總函數會將選項所定義之一組可能記錄加以彙總。然而,可以在集合分析中使用集合運算式,來定義替代的一組記錄。
彙總計算方式
彙總透過特定表格的記錄循環,在其中彙總記錄。例如,Count(<Field>) 將會計算 <Field> 所在之表格中的記錄數量。若您只想要彙總相異欄位值,需要使用 distinct 子句,例如 Count(distinct <Field>)。
若彙總函數包含來自不同表格的欄位,該彙總函數將會透過構成欄位之各個表格的產品記錄循環。這有效能罰則,因此應避免這類彙總,特別是有大量資料時。
索引鍵欄位彙總
計算彙總的方式代表您無法彙總索引鍵欄位,因為不清楚哪個表格應用於彙總。例如,若欄位 <Key> 連結兩個表格,不清楚 Count(<Key>) 應從第一個或第二個表格傳回記錄數量。
不過,若您使用 distinct 子句,可以充分定義並計算彙總。
因此,若您在彙總函數內部使用索引鍵欄位並且沒有 distinct 子句,QlikView 將會傳回可能無意義的數字。解決方法是使用 distinct 子句,或使用索引鍵副本,這是僅位於一個表格中的副本。
例如,在下列表格中,ProductID 是表格之間的索引鍵。
Count(ProductID) 可以在 Products 表格 (這在每個產品只有一個記錄——ProductID 是主要索引鍵) 中計算,或可以在 Details 表格 (這大部分在每個產品有數個記錄) 中計算。若您想要計算相異產品的數量,應使用 Count(distinct ProductID)。若您想要計算特定表格中的列數,不應使用索引鍵。