集合分析
在應用程式中進行選取時,您會定義資料中的記錄子集。會根據此子集計算彙總函數,例如 Sum()、Max()、Min()、Avg() 和 Count()。
換言之,您的選項定義彙總範圍;這定義進行計算的記錄集合。
集合分析提供定義範圍的方法,與由目前選項定義的記錄集合不同。此新範圍也可被視為替代選項。
若您想要比較目前選項與特殊值,例如去年的值或全球市場占比,則這會很實用。
集合運算式
集合運算式可用於彙總函數內部和外部,並以大括弧括住。
範例: 內部集合運算式
Sum( {$<Year={2021}>} Sales )
範例: 外部集合運算式
{<Year={2021}>} Sum(Sales) / Count(distinct Customer)
如需關於內部和外部集合運算式的詳細資訊,請參閱內部和外部集合運算式。
集合運算式包含以下元素的組合:
-
識別碼。集合識別碼代表其他地方定義的選項。這也代表資料中的特定記錄集合。這可以是目前選項、來自書籤的選項或來自替代狀態的選項。簡單的集合運算式中包含單一識別碼,例如貨幣符號 {$},表示目前選項中的所有記錄。
範例:$、1、BookMark1、State2
請參閱: 集合識別碼
-
運算子。集合運算式可用來建立不同集合識別碼之間的聯集、差異或交集。以此方式,您可以建立由集合識別碼定義的選項子集或超集。
範例:+、-、*、/
請參閱: 集合運算子
-
修飾詞。集合修飾詞可新增至集合識別碼以變更其選項。修飾詞也能單獨使用,這將會修改預設識別碼。修飾詞必須以角括弧 <…> 括起。
範例:<Year={2020}>、<Supplier={ACME}>
請參閱: 集合修飾詞
合併元素以形成集合運算式。
例如,以上集合運算式從彙總 Sum(Sales) 建置。
第一個運算元傳回目前選項的 2021 年銷售額,這由 $ 集合識別碼和包含 2021 年選項的修飾詞指示。第二個運算元傳回 Sweden 的 Sales,並忽略目前選項,這由 1 集合識別碼指示。
最終,運算式傳回包含記錄的集合,這些記錄屬於兩個集合運算元的任一個,由 + 集合運算子指示。
有關完整語法描述,請參閱 集合運算式的語法。
範例
合併以上集合運算式元素的範例在下列主題中提供:
若要嘗試一些其他運算式,請參閱 教學課程 - 建立集合運算式。
自然集合
通常,集合運算式代表資料模型中的記錄集合,以及定義此資料子集的選項。在此情況下,集合稱為自然集合。
含有或不含集合修飾詞的集合識別碼一律代表自然集合。
不過,使用集合運算子的集合運算式也代表記錄子集,但通常仍無法使用欄位值的選項來描述。這樣的運算式是非自然集合。
例如,{1-$} 提供的集合不可永遠由選項定義。因此這不是自然集合。可以載入下列資料、新增至表格然後使用篩選窗格進行選取,以顯示此。
Load * Inline
[Dim1, Dim2, Number
A, X, 1
A, Y, 1
B, X, 1
B, Y, 1];
為 Dim1 和 Dim2 進行選取後,就會取得顯示在下列表格中的檢視畫面。
第一個量值中的集合運算式使用自然集合:這對應至進行 {$} 的選項。
第二個量值則不同。這使用 {1-$}。無法選取對應至此集合的選項,因此這不是自然集合。
此差異會造成一些後果:
-
集合修飾詞只能套用至集合識別碼。這些無法套用至任意集合運算式。例如,無法使用如下的集合運算式:
{ (BM01 * BM02) <Field={x,y}> }
在此,一般 (圓) 括弧暗示應在套用集合修飾詞之前評估 BM01 和 BM02 之間的交集。因為沒有可以修改的元素集。
-
您無法在 P() 和 E() 元素函數內部使用非自然集合。這些函數傳回元素集,但無法從非自然集合推算元素集。
-
若資料模型有許多表格,使用非自然集合的量值無法一律歸類到合適的維度值。例如,在下列圖表中,一些排除的銷售數字歸類到正確的 Country,而其他則有 NULL 作為 Country。
是否正確進行指派取決於資料模型。在此情況下,若這涉及選項排除的國家,則無法指派數字。
識別碼 | 描述 |
---|---|
1 | 代表應用程式中所有記錄的完整集合,不考慮任何已選取的選項。 |
$ | 代表目前選項的記錄。因此,集合運算式 {$} 等同於未指明集合運算式。 |
$1 | 代表前一個選項。$2 代表前面一個選項,以此類推。 |
$_1 | 代表下一個 (前進) 選項。$_2 代表下面一個選項,以此類推。 |
BM01 | 您可使用任何書籤識別碼或書籤名稱。 |
MyAltState | 您可以按其狀態名稱引用在輪替狀態機進行的選擇。 |
範例 | 結果 |
---|---|
sum ({1} Sales) | 傳回應用程式的總銷售額,會忽略選項,但不會忽略維度。 |
sum ({$} Sales) |
會傳回目前選項的銷售額,亦即與 sum(Sales) 相同。 |
sum ({$1} Sales) |
會傳回前一個選項的銷售。 |
sum ({BM01} Sales) |
會傳回書籤 BM01 的銷售。 |
範例 | 結果 |
---|---|
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) | 會傳回目前選項的銷售額,但為Year 和 Region 兩者中的新選項。 |