在加载脚本中评估变量
Evaluating Variables in Load Script
是否有任何原因导致此语法在 Qlikview 加载脚本中不起作用??
Let v_myNumber = year(today());
Let v_myString = '2017-08';
If left($(v_myString),4) = text($(v_myNumber)) Then
'do something
Else
'do something else
End If;
我已经尝试了两种方法,将变量字符串转换为数字并直接对数字变量进行评估。他们不会在应该的时候评估为等价..
左函数需要一个字符串,因为它正在获取其他内容作为参数。正如您目前所做的那样,该函数将被称为 Left(2017-08, 4),QlikView 未处理它。
如果您使用 Left('$(v_myString)',4),它将按预期评估为 Left('2017-08', 4)。只需在变量周围添加引号即可。
虽然 QlikView 称它们为变量,但它们实际上应该被视为 "stuff to replaced (at sometimes evaluated) at runtime",这与标准 "variable" 行为略有不同。
美元符号扩展是个大课题,但简而言之:
- 如果您要设置变量 - 不需要 $()。
- 如果您正在使用变量 - 您可以使用 $()。取决于它的上下文。
- 如果您正在使用需要计算的变量 - 您必须使用 $()。
例如在加载脚本中:
let var1 = 'if(a=1,1,2)'
- 稍后在脚本中,您可能希望将此变量用作 $(var1)
,以便即时对其进行评估...
我希望它现在更清楚一点。变量可以有多种使用方式,甚至可以带参数!
例如:
var2 = *
然后你可以像这样使用:$(var2(2,3))
这将产生 6
为了进一步探索这一点,我建议阅读 this
是否有任何原因导致此语法在 Qlikview 加载脚本中不起作用??
Let v_myNumber = year(today());
Let v_myString = '2017-08';
If left($(v_myString),4) = text($(v_myNumber)) Then
'do something
Else
'do something else
End If;
我已经尝试了两种方法,将变量字符串转换为数字并直接对数字变量进行评估。他们不会在应该的时候评估为等价..
左函数需要一个字符串,因为它正在获取其他内容作为参数。正如您目前所做的那样,该函数将被称为 Left(2017-08, 4),QlikView 未处理它。
如果您使用 Left('$(v_myString)',4),它将按预期评估为 Left('2017-08', 4)。只需在变量周围添加引号即可。
虽然 QlikView 称它们为变量,但它们实际上应该被视为 "stuff to replaced (at sometimes evaluated) at runtime",这与标准 "variable" 行为略有不同。
美元符号扩展是个大课题,但简而言之:
- 如果您要设置变量 - 不需要 $()。
- 如果您正在使用变量 - 您可以使用 $()。取决于它的上下文。
- 如果您正在使用需要计算的变量 - 您必须使用 $()。
例如在加载脚本中:
let var1 = 'if(a=1,1,2)'
- 稍后在脚本中,您可能希望将此变量用作$(var1)
,以便即时对其进行评估...
我希望它现在更清楚一点。变量可以有多种使用方式,甚至可以带参数!
例如:
var2 = *
然后你可以像这样使用:$(var2(2,3))
这将产生 6
为了进一步探索这一点,我建议阅读 this