使用空白日期域过滤
有时,数据是不完整的或可选的,因此 Analytics 表中的域可能是空的。当 Analytics 中的表达式比较空白日期域时,该空白日期被视为最小系统日期值 1900-01-01。每当您编写比较日期的表达式时,您都必须考虑该行为。
销售订单表
您正在处理下面的销售订单表,并且您想要过滤它以便您可以分析所有在 2011 年之前提交的订单。如果某个记录没有订单日期,则它表示一个被取消的订单,并且您不希望将其包括在您的过滤记录中:
当您首次尝试过滤表时,您可以使用下面的简单表达式排除 2011 年及以后年份的任何订单:
提示
请注意围绕字面量日期值的反引号 `。您必须总是使用该限定符围绕字面量日期时间值。要了解更多信息,请参考
数据类型
。
COMMENT 过滤掉其订单日期为 2011 年 1 月 1 日及以后的记录
SET FILTER TO Order_Date < `20110101`
第一个过滤器结果
因为 Analytics 将空白日期值视为 1900-01-01,而 1900 年 1 月 1 日早于 2011 年 1 月 1 日,所以您的结果包括具有您想要排除的空白
Order_Date
域的记录:
在过滤期间检查是否存在空白域
使用函数,您可以在过滤掉 2011 年及以后年份的记录之前排除空白数据域。
如果文本值为空,则
ISBLANK( )
函数返回真,因此,通过对
Order_Date
域进行某些操作,您可以排除空白值:
COMMENT 排除 2011 年及以后年度的空白域和订单日期
SET FILTER TO NOT ISBLANK(DATETIME(Order_Date)) AND Order_Date < `20110101`
当该表达式求值时,函数由内而外运行,并且会发生几件事情:
DATETIME( )
函数将
Order_Date
日期值转换为文本值(`20100828` 变成 "20100828")。
ISBLANK( )
函数检查文本值是否为空,其求值结果为真或假。
NOT
运算符翻转从
ISBLANK( )
返回的逻辑值,以便:
-
如果
Order_Date
为空(真),则该值被翻转为假,并且过滤器会排除记录
-
如果
Order_Date
不为空(假),则该值被翻转为真,并且过滤器检查该日期是否早于 2011 年,并且包括所有其
Order_Date
值早于 2011 年 1 月 1 日的记录
只有其子表达式在 AND 运算符的两侧的求值结果都为真的记录才会被包括在内。如果任一子表达式等于假,则该记录被排除。
第二个过滤器结果
因为您在测试订单是否是在 2011 年以前下的单之前排除了空白值,所以该过滤器的结果不会像第一个过滤器那样包括被取消的订单: