在 Netezza 中,我正在尝试检查日期值是否有效;类似于 SQL Server 中的 ISDATE 函数。
我收到了无效的日期,例如 2013 年 11 月 31 日,我如何在 Netezza 中检查该日期是否有效,以便将它们排除在我的流程之外。
谢谢
Netezza Analytics Package 3.0(免费下载)带有几个验证日期值的 LUA 函数:isdate() 和 todate()。安装/编译非常简单。
我不相信有内置的 Netezza 函数来检查日期是否有效。您可以编写一个 LUA 函数来执行此操作,或者您可以尝试加入“日期”查找表,如下所示:
创建一个包含两列的表:
DATE_VALUE date
DATE_STRING varchar(10)
将数据加载到此表中以获取有效日期(在您最喜欢的工具、excel、unix 等中生成一个文件)。如果您只使用此检查,则每个 DATE_VALUE 甚至可以有不止一行(不同的“有效”格式)。如果您从 1900 到 2100 填写,只要您的数据在该范围内,就可以了。它也是一张小桌子,大约 200 年只有大约 7300 行。如果需要,添加更多。哎呀,由于 NZ 日期数据类型从 AD1 到 AD 9999,您可以只用 340 万行(对于 NZ 来说很小)来完全填充它。
然后,要隔离具有无效日期的行,只需在 DATE_STRING 上对该表使用 aJOIN
或EXISTS
/ 。NOT EXISTS
由于表非常小,netezza 可能会将其广播到所有 SPU,从而使性能影响微不足道。