Early Access: The content on this website is provided for informational purposes only in connection with pre-General Availability Qlik Products.
All content is subject to change and is provided without warranty.
跳到主要內容 跳至補充內容

Aggr

Aggr() 為在指定維度上計算的運算式傳回一個值陣列。例如,銷售額的值上限、按客戶、按地區。

Aggr 函數用於巢狀彙總,其中第一個參數 (內部彙總) 會根據維度值計算一次。會在第二個參數 (和後續參數) 中指定維度。

此外,Aggr 函數使用來自 Aggr 函數的結果陣列,作為巢狀彙總的輸入,應括在外部彙總函數內

語法:  

Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

傳回的資料類型: 雙值

引數:  

  • expr:運算式包含一個彙總函數。依照預設,彙總函數將彙總選項所定義的一組可能記錄。
  • StructuredParameter:StructuredParameter 包含一個維度和可選的排序準則,格式如下:(Dimension(Sort-type, Ordering))。維度是單一欄位,不可為運算式。維度用於判定 Aggr 運算式所計算得出之值的陣列。

    如果包含排序準則,則將對使用 Aggr 函數所建立、針對維度計算的值陣列進行排序。這在排序順序影響其中所含 Aggr 函數之運算式的結果時非常重要。如需如何使用排序準則的詳細資料,請參閱 將排序準則新增至結構化參數中的維度

  • SetExpression: 依照預設,彙總函數將彙總選項所定義的一組可能記錄。集合分析運算式可定義一組替代的記錄。
  • DISTINCT:如果 expression 引數前面有 distinct 限定詞,或者完全不使用任何限定詞,則維度值的各個相異組合只會產生一個傳回值。這是製作彙總的一般方式;每個維度值的相異組合都會呈現在圖表中的一條線上。
  • NODISTINCT:如果 expression 引數前面有 nodistinct 限定詞,則視基礎資料結構而定,維度值的各個組合可能會產生多個傳回值。如果只有一個維度,aggr 函數會傳回與來源資料中的列具有相同元素數的陣列。
 

諸如 SumMin 以及 Avg) 等基本彙總函數會傳回單一數值,其中 Aggr() 函數可與建立暫存的結果集 (虛擬表) 進行比較,透過此結果集可進行其他彙總。例如,在 Aggr() 陳述式中按客戶加總銷售額來計算平均銷售值,然後計算加總結果的平均值:Avg(TOTAL Aggr(Sum(Sales), Customer)).

提示備註如果想要建立多個層級的巢狀圖彙總,請使用計算維度中的 Aggr() 函數。

限制:  

Aggr() 函數中的每個維度必須為單一欄位,且不得為運算式 (計算維度)。

將排序準則新增至結構化參數中的維度

在其基本格式中,引數 StructuredParameter (位於 Aggr 函數語法中) 是單一維度。運算式: Aggr(Sum(Sales, Month)) 會尋找每個月的銷售總值。但是,當包含在其他彙總函數中時,除非使用排序準則,否則可能會存在非預期的結果。這是因為某些維度可以按照數字或字母等方式進行排序。

StructuredParameter 引數 (位於 Aggr 函數之內) 中,您可在運算式中的維度上指定排序準則。這樣,您可在由 Aggr 函數產生的虛擬表上強制排序順序。

引數 StructuredParameter 擁有以下語法:

(FieldName, (Sort-type, Ordering))

可以內嵌結構化參數:

(FieldName, (FieldName2, (Sort-type, Ordering)))

排序類型可以是:NUMERICTEXTFREQUENCYLOAD_ORDER

與每個排序類型相關聯的順序類型所示如下:

排序順序類型
排序類型可用順序類型
NUMERICASCENDINGDESCENDINGREVERSE
TEXTASCENDINGA2ZDESCENDINGREVERSEZ2A
FREQUENCYDESCENDINGREVERSEASCENDING
LOAD_ORDERASCENDINGORIGINALDESCENDINGREVERSE

順序類型 REVERSEDESCENDING 是對等項。

對於排序類型 TEXT,順序類型 ASCENDINGA2Z 是對等項,DESCENDINGREVERSEZ2A 是對等項。

對於排序類型 LOAD_ORDER,順序類型 ASCENDINGORIGINAL 是對等項。

範例

範例 1:  

Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))

運算式 Aggr(Sum(UnitSales*UnitPrice), Customer) 會得到依 Customer 的銷售額總計值,並傳回一個值陣列:295、715 與 120,為三個 Customer 值。

實際上,我們已建立臨時值清單,且不需要建立明確表格或包含這些值的資料行。這些值作為 Avg() 函數的輸入使用,進而得到銷售額平均值 376.6667。(您必須已在屬性面板中選取 Presentation 下的總計)。

範例 2:  

Aggr(NODISTINCT Max(UnitPrice), Customer)

值陣列:16、16、16、25、25、25、19 與 19。nodistinct 限定詞表示,陣列包含來源資料中每一列的元素:每個都是最大 UnitPrice (針對每個 Customer Product)。

範例 3:  

max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

使用以下運算式中的 StructuredParameter 引數中的排序準則: max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

如果沒有排序準則,運算式 max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear))) 的結果將取決於維度 MonthYear 的排序方式。我們可能不會獲得所期望的結果。透過將排序類型與順序類型的值新增到維度中,我們將排序準則指定到結構化參數中:(MonthYear, (NUMERIC, ASCENDING)),其中排序類型 NUMERIC 和順序 ASCENDING 可判定 MonthYear 以遞增數字順序來排序。

在這裡,我們希望客戶數量逐月最大限度地增加。例如,這可能會用在 KPI 視覺化效果中。

運算式的 Aggr 部分會將一個月中的客戶總數 (由 MonthYear 指定) 與上個月的總數進行比較。因為我們將排序準則與維度搭配使用:(MonthYear,(NUMERIC, ASCENDING)),我們確定 Aggr 透過以遞增數字順序,而不是遞增字母順序排序月份,由此比較虛擬表格中連續月份的客戶數量。

範例中使用的資料:

建立具有 CustomerProductUnitPriceUnitSales 作為維度的表格。將運算式作為一個量值新增到表格中。

ProductData:

LOAD * inline [

Customer|Product|UnitSales|UnitPrice

Astrida|AA|4|16

Astrida|AA|10|15

Astrida|BB|9|9

Betacab|BB|5|10

Betacab|CC|2|20

Betacab|DD|25|25

Canutility|AA|8|15

Canutility|CC||19

] (delimiter is '|');

此頁面是否對您有幫助?

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

加入分析現代化計畫

Remove banner from view

透過分析現代化程式進行現代化而不犧牲寶貴的 QlikView 應用程式。 按一下這裡 取得更多資訊或聯繫: ampquestions@qlik.com