使用集合函數的集合修飾詞
有時候您需要使用巢狀集合定義來定義欄位值集合。例如,您可能希望選取已購買特定產品的所有客戶,而不選取該產品。
在這類情況下,使用元素集函數 P() 和 E()。這會分別傳回欄位可能值和排除值的元素集。在括弧內,可以在問題中指定欄位,以及定義範圍的集合運算式。例如︰
P({1<Year = {2021}>} Customer)
這將會傳回在 2021 年曾有交易的客戶集合。然後您可以在集合修飾詞中使用此。例如︰
Sum({<Customer = P({1<Year = {2021}>} Customer)>} Amount)
此集合運算式將會選取這些客戶,但不會將選項限制為 2021。
這些函數無法用於其他運算式。
此外,在元素集函數內部只能使用自然集合。即可由單一選項定義的一組記錄。
例如,{1-$} 指定的集合無法一直透過選取來定義,因此不是自然集合。將這些函數用於非自然集合會傳回非預期的結果。
範例:使用集合函數的集合修飾詞的圖表運算式
範例 | 結果 |
---|---|
sum( {$<Customer = P({1<Product={'Shoe'}>} Customer)>} Sales ) |
會傳回目前選項的銷售額,但僅針對曾經買過「Shoe」產品的客戶。元素函數 P( ) 在此會傳回可能客戶的清單,亦即以欄位 Product 中選項為「Shoe」所表示的客戶。 |
sum( {$<Customer = P({1<Product={'Shoe'}>})>} Sales ) |
同上。如果省略元素函數中的欄位,則函數會傳回外部指派中所指定之欄位的可能值。 |
sum( {$<Customer = P({1<Product={'Shoe'}>} Supplier)>} Sales ) |
會傳回目前選項的銷售額,但僅針對曾經供應過產「Shoe」品的客戶,亦即客戶也是供應商。元素函數 P( ) 在此會傳回可能客戶的清單,亦即以欄位 Product 中選項為「Shoe」所表示的供應商。應商的清單接著會做為欄位 Customer 中的選項。 |
sum( {$<Customer = E({1<Product={'Shoe'}>})>} Sales ) |
會傳回目前選項的銷售額,但僅針對不曾買過「Shoe」產品的客戶。元素函數 P( ) 在此會傳回已排除客戶的清單,亦即以欄位 Product 中選項為「Shoe」所排除的客戶。 |