过滤空白日期值

有时数据是不完整的或可选的,因此 Analytics 表中的域可能包含空值或空白值。当 Analytics 中的表达式遇到一个空白日期值时,该空白日期会被视为最小系统日期值 1900-01-01。每当您编写比较日期的表达式时,您都必须考虑该行为。

销售订单表

您正在处理下面的销售订单表,并且您想要过滤它以便您可以分析所有在 2011 年之前提交的订单。如果某个记录没有订单日期,则它表示一个被取消的订单,并且您不希望将其包括在您的过滤记录中:

类别 订单日期 订单 ID 数量
办公用品   3 6
办公用品   293 49
办公用品 07/23/2012 293 27
技术 10/15/2010 483 30
办公用品 08/28/2010 515 19
家具 08/28/2010 515 21
办公用品 06/17/2011 613 12
办公用品 06/17/2011 613 22
办公用品 03/24/2012 643 21
办公用品 02/26/2009 678 44

使用简单的过滤器

当您首次尝试过滤表时,您可以使用下面的简单表达式排除 2011 年及以后年份的任何订单:

提示

请注意围绕字面量日期值的反引号 `。您必须总是使用该限定符围绕字面量日期时间值。要了解更多信息,请参考数据类型

COMMENT 过滤掉其订单日期为 2011 年 1 月 1 日及以后的记录
SET FILTER TO Order_Date < `20110101`

第一个过滤器结果

因为 Analytics 将空白日期值视为 1900-01-01,而 1900 年 1 月 1 日早于 2011 年 1 月 1 日,所以您的结果包括具有您想要排除的空白 Order_Date 值的记录:

类别 订单日期 订单 ID 数量
办公用品   3 6
办公用品   293 49
技术 10/15/2010 483 30
办公用品 08/28/2010 515 19
家具 08/28/2010 515 21
办公用品 02/26/2009 678 44

在过滤期间检查是否存在空白域

使用函数,您可以在过滤掉 2011 年及以后年份的记录之前排除空白日期值。

如果文本值为空,则 ISBLANK( ) 函数返回真,因此,通过对 Order_Date 域进行某些操作,您可以排除空白值:

COMMENT 排除 2011 年及以后年度的空白日期和订单日期
SET FILTER TO NOT ISBLANK(DATETIME(Order_Date)) AND Order_Date < `20110101`

当该表达式求值时,函数由内而外运行,并且会发生几件事情:

  1. DATETIME( ) 函数将 Order_Date 日期值转换为文本值(`20100828` 变成 "20100828")。
  2. ISBLANK( ) 函数检查文本值是否为空,其求值结果为真或假。
  3. NOT 运算符翻转从 ISBLANK( ) 返回的逻辑值,以便:
    • 如果 Order_Date 为空(真),则该值被翻转为假,并且过滤器会排除记录
    • 如果 Order_Date 不为空(假),则该值被翻转为真,并且过滤器检查该日期是否早于 2011 年,并且包括所有其 Order_Date 值早于 2011 年 1 月 1 日的记录

提示

只有其子表达式在 AND 运算符的两侧的求值结果都为真的记录才会被包括在内。如果任一子表达式等于假,则该记录被排除。

第二个过滤器结果

第二个过滤器首先排除空白日期值,然后再测试订单是否是在 2011 年之前下的,因此结果不包括被第一个过滤器所包括的已取消订单。

类别 订单日期 订单 ID 数量
技术 10/15/2010 483 30
办公用品 08/28/2010 515 19
家具 08/28/2010 515 21
办公用品 02/26/2009 678 44