集合分析與集合運算式

集合分析提供定義資料值集合 (或群組) 的方法,與由目前選項定義的一般集合不同。

通常進行選取時,SumMaxMinAvgCount 等彙總函數會彙總您已選取的選項:目前選項。您的選項會自動定義要加以彙總的資料集。使用集合分析,您可定義獨立於目前選項的群組。若想要顯示特定值,這項功能會非常實用,例如,某項產品跨所有地區的市占率,不考慮目前選項。

進行不同比較時 (例如與滯銷產品相較下哪些是暢銷產品,或是今年與去年相比),集合分析的功能也很強大。

試想以下範例:您在列表框中選取了 2010 年並開始使用一份文件。彙總接著就會以該選項為依據,而圖表只會顯示那一年的值。選取新選項時,圖表會隨之更新。系統會將目前選項所定義之一組可能記錄加以彙總。使用集合分析,您可定義一個您感興趣的集合,且不會取決於選項。

建立集合運算式

探討集合分析範例的不同部分之前,必須先定出集合運算式和集合分析之間的一項差異:

定義欄位值集合亦即定義集合運算式;而使用集合運算式分析資料即為集合分析。因此,本節其餘內容將集中說明集合運算式和其元件。

此為集合分析範例:sum( {$<Year={2009}>} Sales ),其中 {$<Year={2009}>} 為集合運算式。

集合運算式有兩個一般語法規則:

  • 集合運算式必須用於彙總函數。在本範例中,彙總函數是 sum(Sales)
  • 集合運算式必須以括弧 {} 括住。在該範例中,集合運算式是:{$<Year={2009}>}

集合運算式包含以下部分的組合:

  • 識別碼。一或多個識別碼可定義集合運算式與所評估運算式其餘內容之間的關係。簡單的集合運算式中包含單一識別碼,例如貨幣符號 {$},表示目前選項中的所有記錄。
  • 運算子。例如,如果有一個以上的識別碼,系統會指定以識別碼代表的資料集結合以建立子集合或超集合的方式,藉此使用一個運算子或一個運算子來縮小資料集。
  • 修飾詞。修飾詞或修飾詞可新增到集合運算式以變更選項。修飾詞可單獨使用,或用來修改識別碼以篩選資料集。

Examples:  

Example 1:  

{$<Year={2009}>}

此集合運算式包含一個識別碼 $ 和一個修飾詞 <Year={2009>}。此範例不包含運算子。該集合運算式解譯為︰「目前選項中的所有記錄都屬於 2009 年」。

Example 2:  

Sum({$<Year={2009}>+1<Country={'Sweden'}>} Sales)

此集合運算式包含一個識別碼 $1,運算子 + 和修飾詞 <Year={2009}><Country={'Sweden'}>

此集合運算式設計用於加總與當前選擇相關的 2009 年銷售額,並新增與國家 Sweden 所有年份相關的全套資料。

備註: 集合運算式只能用於圖表的運算式,不能用於指令碼運算式。

以下小`節將更詳細說明識別碼、運算子和修飾詞。

識別碼

識別碼會定義集合運算式與所評估欄位值或運算式之間的關係。

在範例 sum( {$<Year={2009}>} Sales ) 中,識別碼是貨幣符號 $,代表要評估的記錄集合包含目前選項的所有記錄。接著會用集合運算式部分修飾詞進一步篩選此集合。在更複雜的集合運算式中,可使用運算子結合兩個識別碼。

此表格顯示一些常見識別碼。

識別碼 描述
1 代表應用程式中所有記錄的完整集合,不考慮任何已選取的選項。
$ 代表目前選項的記錄。因此,集合運算式 {$} 等同於未指明集合運算式。
$1 代表前一個選項。$2 代表前面一個選項,以此類推。
$_1 代表下一個 (前進) 選項。$_2 代表下面一個選項,以此類推。
BM01 您可使用任何書籤識別碼或書籤名稱。
MyAltState 您可以按其狀態名稱引用在輪替狀態機進行的選擇。

此表格顯示一些使用不同識別碼的範例。

範例 結果
sum ({1} Sales) 會忽略選項,但不會忽略維度,傳回文件的總銷售。

sum ({$} Sales)

會傳回目前選項的銷售,亦即與 sum(Sales) 相同。

sum ({$1} Sales)

會傳回前一個選項的銷售。

sum ({BM01} Sales)

會傳回書籤 BM01 的銷售。

運算子

運算子可用來包含、排除或交集部分或全部資料集。所有運算子都將集合作為運算元使用,並傳回一個集合作為結果。

此表格顯示可在集合運算式中使用的運算子。

運算子 描述
+ 聯集。此二元運算會傳回一個集合,其中包含的記錄屬於兩個集合運算元中的任一個集合。
- 差集。此二元運算會傳回一組記錄,這些記錄屬於兩個集合算元中的第一個集合,但不屬於第二個集合。此外,當作為一元運算子時,會傳回補集。
* 交集。此二元運算會傳回一個集合,其中包含的記錄同時屬於兩個集合運算元。
/ 對稱差 (XOR)。此二元運算會傳回一個集合,其中包含的記錄屬於兩個集合運算元中的任一個集合,但不同時屬於這兩個集合。

此表格顯示使用運算子的範例。

範例 結果
sum( {1-$} Sales ) 會傳回選項所排除之一切記錄的銷售。
sum( {$*BM01} Sales ) 會傳回選項和書籤 BM01 之交集的銷售。
sum( {-($+BM01)} Sales )

會傳回選項和書籤 BM01 所共同排除的銷售。

Sum({$<Year={2009}>+1<Country={'Sweden'}>} Sales) 會傳回與當前選擇相關的 2009 年銷售,並新增與國家 Sweden 所有年份相關的全套資料。

修飾詞

修飾詞可用來新增或變更選項。這類修改可編寫於集合運算式中。修飾詞包含一個或多個欄位名稱,每一項後面都接著一個或多個可在欄位中選取的選項。修飾詞的開頭與結尾是角括弧 <> 。

集合修飾詞可修改前面的集合識別碼選擇。如果沒有引用集合識別碼,則目前選項狀態是隱含的。

此表格顯示使用修飾詞的範例。

範例 結果
sum({$<OrderDate = DeliveryDate>} Sales) 會傳回目前選項的銷售,其中 OrderDate = DeliveryDate

sum({1<Region = {US}>} Sales)

會傳回 US 區域的銷售額,忽略目前選項。

sum({$<Region = >} Sales)

會傳回目前選項的銷售額,但移除 Region 選項。

sum({<Region = >} Sales)

會傳回與上例相同的結果。省略要修改的組識別碼時,會假定為已繼承狀態。

sum({$<Year={2000}, Region={“U*”}>} Sales) 會傳回目前選項的銷售額,但為 YearRegion 兩者中的新選項。

集合修飾詞 瞭解修飾詞的更多詳細說明,以及如何在更複雜的集合分析中使用它們。