使用集合函数的集合修饰符
有时需要使用嵌套的集合定义定义一组字段值。例如,您可能希望选择购买了特定产品的所有客户,而不选择该产品。
在这种情况下,请使用元素集函数 P() 和 E()。它们分别返回字段的可能值和排除值的元素集。在括号内,可以指定相关字段和定义范围的集合表达式。例如:
P({1<Year = {2021}>} Customer)
这将返回 2021 年有交易的客户集。然后可以在集合修饰符中使用此选项。例如:
Sum({<Customer = P({1<Year = {2021}>} Customer)>} Amount)
此集合表达式将选择这些客户,但不会将选择限制在 2021 年。
这些函数不能用于其他表达式。
此外,在元素集函数中只能使用自然集合。即,可通过简单选择项定义的记录集合。
例如,通过 {1-$} 指定的集合无法始终通过选择项进行定义,因此该集合不是自然集合。在非自然集合中使用这些函数将返回意外结果。
示例:使用集合函数的集合修饰符的图表表达式
加载脚本
将以下数据作为数据加载编辑中的内联加载载入,以创建以下图表表达式示例。
MyTable: Load Year(Date) as Year, Date#(Date,'YYYY-MM-DD') as ISO_Date, Date(Date#(Date,'YYYY-MM-DD'),'M/D/YYYY') as US_Date, Country, Product, Amount Inline [Date, Country, Product, Amount 2018-02-20, Canada, Washer, 6 2018-07-08, Germany, Anchor bolt, 10 2018-07-14, Germany, Anchor bolt, 3 2018-08-31, France, Nut, 2 2018-09-02, Czech Republic, Bolt, 1 2019-02-11, Czech Republic, Bolt, 3 2019-07-31, Czech Republic, Washer, 6 2020-03-13, France, Anchor bolt, 1 2020-07-12, Canada, Anchor bolt, 8 2020-09-16, France, Washer, 1];
有关使用内联加载的详细信息,请参见内联加载。
图表表达式
使用以下图表表达式在 Qlik Sense 工作表中创建表。
国家 | Sum(Amount) | Sum({<Country=P({<Year={2019}>}Country)>} Amount) | Sum({<Product=P({<Year={2019}>}Product)>} Amount) | Sum({<Country=E({<Product={Washer}>}Country)>} Amount) |
---|---|---|---|---|
总计 | 41 | 10 | 17 | 13 |
加拿大 | 14 | 0 | 6 | 0 |
捷克共和国 | 10 | 10 | 10 | 0 |
法国 | 4 | 0 | 1 | 0 |
Germany | 13 | 0 | 0 | 13 |
解释
-
维度:
-
Country
-
-
度量:
-
Sum(Amount)
没有集合表达式的总和 Amount。
-
Sum({<Country=P({<Year={2019}>} Country)>} Amount)
总和 Amount,针对与年份 2019 相关的国家。但是,它不会将计算限制为 2019。
-
Sum({<Product=P({<Year={2019}>} Product)>} Amount)
总和 Amount,针对与年份 2019 相关的产品。但是,它不会将计算限制为 2019。
-
Sum({<Country=E({<Product={Washer}>} Country)>} Amount)
总和 Amount,针对与产品 Washer 不相关的国家。
-
有关表达式的更多信息,请参阅在可视化中使用表达式。