Spotfire® 用户指南

逻辑函数

下面的列表显示了可在表达式中使用的逻辑函数。

函数说明
Case条件语句具有两种不同的形式。

简单:

case Arg1 when Arg2 then Arg3 else Arg4 end

将对 Arg1 表达式求值,当 Arg1 等于 Arg2 时,将返回 Arg3。可以输入多个 when/then 表达式,并以从左到右的顺序进行输入及求值。

已搜索:

case when Arg1 then Arg2 else Arg3 end

Arg1=true 时将返回 Arg2,当 Arg1=false 将返回 Arg3。可以

输入多个 when/then 表达式,并以从左到右的顺序进行输入及求值。

有关详细信息,请参见下文。

示例:

case when 1 < 2 then "a" when 1 < 3 then "b" else "c" end

case [Column] when 3 then "a" when 2 then "b" else "c" end

有关更多示例,请见下文和基于条件的计算列

If(Arg1,Arg2,Arg3) Arg1=true 时将返回 Arg2,当 Arg1=false 将返回 Arg3Arg1 是布尔类型,通常是比较的结果。Arg2Arg3 可以为任何类型,但这两者都必须属于同一类型或同为空。

第二个和第三个参数仅处理行的子集,会影响所有基于列的和累计的方法。有关详细信息,请参见下文。

示例:

If([Count] > 3, "many", "few")

If(true, null, null) -> (Empty)

If(true, 1, null) -> 1

If(false, null, 2) -> 2

If(null, 1, 2) -> (Empty)

If(1 < 2, "Small", "Big")-> Small

If([Column] Is Null,"0","has value")

有关更多示例,请见下文和基于条件的计算列

Is Not Null If- 或 Case- 语句中使用,以确定表达式是否生成空值(null 值)。

示例:

If([Column] Is Not Null, "value was not null", "value was null")

如果表达式包含空值(null 值),您可以使用 SN 函数(请参见转换函数),用指定值替换空值。

Is Null

If- 或 Case- 语句中使用,以确定表达式是否生成空值(null 值)。

示例:

If([Column] Is Null, "value was null", "value was not null")

如果表达式包含空值(null 值),您可以使用 SN 函数(请参见转换函数),用指定值替换空值。

更多有关在表达式中使用 if 的信息:

在表达式中使用 if 语句时,第一个参数中的情况会限制第三个参数中要评估的值。要了解其工作原理,首先以简单的整数列为例:

Col1
1
2
3

使用以下表达式插入计算的列:

if(Col1 < 2, Max(Col1), Max(Col1))

这会导致新列带有两个不同的值:一个是所有小于 2 的值的最大值,一个是其他值的最大值(同时也是整个列中的最大值):

Col1if(Col1 < 2, Max(Col1), Max(Col1))
11
23
33

If- 函数旨在将列分为两组,然后继续评估新组上的表达式。

如果您正在使用 Percentile 表达式,则根据第一种情况中拆分列的方式,相同的 Percentile 表达式会生成不同的结果:

Col2
1
2
3
4
5
6
7
8
9
10

使用以下两个表达式插入两个列:

if (Col2 < 4, 0, Percentile(Col2, 70))

if (Col2 < 6, 0, Percentile(Col2, 70))

则会获得以下结果:

Col2if (Col2 < 4, 0, Percentile(Col2, 70)) if (Col2 < 6, 0, Percentile(Col2, 70))
100
200
300
48.20
58.20
68.28.8
78.28.8
88.28.8
98.28.8
108.28.8
正如您的发现,Percentile 的值会随“If”对数据的分组方式而更改。

更多有关在表达式中使用 case 的信息:

使用 case 表达式时,“when”后面的条件会对整个列进行计算。“then”后面的参数对“when”条件定义的行进行计算。如果表达式中包含多个“when- then”对,那么“then”受到前面所有条件的限制(包括最后一个)。

下面以简单的整数列为例:

Col1
1
2
3
4
5
6
7
8

使用以下表达式插入两个计算的列,命名为 Case Min 和 Case Max:

Case Min:

case 
		when [Col1]<Avg([Col1]) then Min([Col1]) 
		when [Col1]<(Avg([Col1]) + 1) then Min([Col1]) 
		else Min([Col1]) 
end

Case Max:

case
		when [Col1] < Avg([Col1]) then Max([Col1])
		when [Col1] < (Avg([Col1]) + 1) then Max([Col1])
		else Max([Col1]) 
end

会生成如下结果:

Col1Case MinCase Max
114
214
314
414
555
668
768
868
另请参见函数