集合修饰符和美元符号扩展
美元符号扩展是在解析和计算表达式之前计算的结构。然后将结果注入到表达式中,而不是注入 $(…)。然后使用美元符号扩展的结果计算表达式。
表达式编辑器显示美元符号扩展预览,以便您可以验证美元符号扩展的计算结果。
如果要在元素集中使用计算,请使用美元符号扩展。
例如,如果只想查看上一个可能的年份,可以使用以下构造:
<Year = {$(=Max(Year))}>
Max(Year) 首先被计算,结果将注入表达式中,而不是 $(…)。
货币符号扩展后的结果将是如下表达式:
<Year = {2021}>
美元符号扩展中的表达式是基于当前选择计算的。这意味着,如果在另一个字段中进行了选择,则表达式的结果将受到影响。
如果希望计算独立于选择,则在美元符号扩展中使用集合分析。例如:
<Year = {$(=Max({1} Year))}>
字符串
当您希望美元符号扩展生成字符串时,将应用正常的报价规则。例如:
<Country = {'$(=FirstSortedValue(Country,Date)'}>
货币符号扩展后的结果将是如下表达式:
<Country = {'New Zealand'}>
如果不使用引号,将出现语法错误。
数字
如果希望美元符号扩展生成数字,请确保扩展的格式与字段的格式相同。这意味着您有时需要将表达式包含到格式化函数中。
例如:
<Amount = {$(=Num(Max(Amount), '###0.00'))}>
货币符号扩展后的结果将是如下表达式:
<Amount = {12362.00}>
使用散列强制扩展始终使用小数点,并且不使用千位分隔符。例如:
<Amount = {$(#=Max(Amount))}>
日期
如果希望美元符号扩展生成日期,请确保扩展设定正确格式。这意味着您有时需要将表达式包含到格式化函数中。
例如:
<Date = {'$(=Date(Max(Date)))'}>
货币符号扩展后的结果将是如下表达式:
<Date = {'12/31/2015'}>
与字符串一样,您需要使用正确的引号。
一个常见的用例是,您希望将计算限制在最后一个月(或一年)。然后可以将数字搜索与 AddMonths() 函数结合使用。
例如:
<Date = {">=$(=AddMonths(Today(),-1))"}>
货币符号扩展后的结果将是如下表达式:
<Date = {">=9/31/2021"}>
这将选出上个月发生的所有事件。
示例:带美元符号扩展的集合修饰符的图表表达式
加载脚本
将以下数据作为数据加载编辑中的内联加载载入,以创建以下图表表达式示例。
Let vToday = Today(); 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 2021-10-15, France, Washer, 1];
有关使用内联加载的详细信息,请参见内联加载。
带美元符号扩展的图表表达式
使用以下图表表达式在 Qlik Sense 工作表中创建表。
表 - 集合修饰符和美元符号扩展
国家 |
Sum (Amount) |
Sum({<US_Date={'$(vToday)'}>} Amount) |
Sum({<ISO_Date={"$(=Date(Min(ISO_Date),'YYYY-MM-DD'))"}>} Amount) |
Sum({<US_Date={">=$(=AddYears(Max(US_Date),-1))"}>} Amount) |
总计 |
41 |
1 |
6 |
1 |
加拿大 |
14 |
0 |
6 |
0 |
捷克共和国 |
10 |
0 |
0 |
0 |
法国 |
4 |
1 |
0 |
1 |
Germany |
13 |
0 |
0 |
0 |
解释
-
维度:
-
度量:
-
Sum(Amount)
和没有集合表达式的 Amount。
-
Sum({<US_Date={'$(vToday)'}>}Amount)
总和 Amount,针对 US_Date 和变量 vToday 中的一样的所有记录。
-
Sum({<ISO_Date={"$(=Date(Min(ISO_Date),'YYYY-MM-DD'))"}>}Amount)
总和 Amount,针对 ISO_Date 和第一个(最小)可能的 ISO_Date 相同的所有记录。Date() 函数用于确保日期的格式与字段的格式匹配。
-
Sum({<US_Date={">=$(=AddYears(Max(US_Date),-1))"}>}Amount)
总和 Amount,针对 US_Date 在最新(最大)可能 US_Date 的之前的年份的日期之后或之时的所有记录。AddYears() 函数将返回日期,其格式由变量 DateFormat 指定,并且这需要匹配字段 US_Date 的格式。
有关表达式的更多信息,请参阅在可视化中使用表达式。