使用表达式的两个常见错误
使用 Analytics 表达式的新用户常常会犯两种常见的错误:
-
创建一个无效的数据类型和操作组合,导致出现“表达式类型不匹配”错误消息。
-
仅允许使用逻辑表达式的环境中,创建一个字符、数值或日期时间表达式,会导致出现“表达式类型无效”或“要求逻辑表达式”的错误消息。
“表达式类型不匹配”
为了使一个表达式有效,表达式中的数值数据类型必须满足执行的计算或操作。 例如,不能将两个字符域相乘,或将两个日期域相除。 如果进行了上述乘法或除法,会显示“表达式类型不匹配”错误消息,不会进行处理。
如下任意方法可以避免这种错误,尽管并不是所有方法都是所在的场景的适当解决方案。
-
值保持不变,但是修改操作
例如,不能将两个时间域相加,因此结束时间 + 开始时间无效。 但是,可以用一个时间域与另一个时间域相减,因此结束时间 - 开始时间有效。
-
操作保持不变,但是修改一个或多个值
例如,不能将一个数与另一个字符值相减,因此 DATE( ) - 2无效,因为 DATE( ) 函数没有任何参数会返回当前操作系统的日期作为字符值。 但是,可以从日期值减去一个数值,如 TODAY( ) - 2 是有效的,因为 TODAY( ) 函数会返回当前的操作系统日期作为日期值。
-
保持操作不变,但是修改一个或多个值的数据类型
例如,不能将日期与数值相比,因此结束日期 > 20141231 无效。 但是,可以将日期与日期比较,因此结束日期 > `20141231` 有效。 添加反引号 (`) 可以将数值文字转换为日期文字。
在一些情况下,可以使用函数将表达式中的值或域转换为适合于表达式的数据类型。 要了解转换函数相关的更多信息,请参阅 调整域。
“表达式类型无效”或“需要逻辑表达式”。
必须确保表达式的返回值是适合该场景的正确数据类型。 在要求表达式的许多应用领域,返回值必须是特定的数据类型。 如果返回值不是要求的数据类型,会显示“表达式类型无效”或“需要逻辑表达式”错误消息,不进行处理。 即使一个表达式有效,如果表达式返回不适合该场景的错误数据类型,Analytics 仍会显示错误消息。
例如,如果使用表达式 Quantity_on_Hand * Unit_Cost 创建一个计算域,该表达式一般是有效的,会正常运行,提供数值汇总结果。 但是,如果在创建要求表达式返回逻辑真或假(T 或 F)的视图过滤器或 IF 语句时使用,相同的表达式会返回错误。 如果将表达式替换为 Quantity_on_Hand * Unit_Cost > 5000,则表达式可以正常用于过滤器或 IF 语句。
要注意的关键点是打开表达式生成器的位置。 单击“过滤器”文本框旁的编辑视图过滤器
,或单击各种位置的如果按钮,要求在表达式生成器中创建逻辑表达式。