DataConnect中的自定义过滤器
正如您可能已经意识到的那样,我正在使用很多此IBM Bluemix DataConnect服务。创建活动时,可以使用自定义过滤器(它使WHERE子句可以将逻辑添加到查询中)细化要导出的数据DataConnect中的自定义过滤器
我试图过滤TIMESTAMP字段,试图获得1一个月的数据,但这句话不起作用。
DATE(SHIPMENT_TMS) >= CURRENT DATE - 2 MONTH - (DAY(CURRENT DATE)-1)DAYS
我收到以下错误消息
自定义过滤器失败。重试刚执行的整形操作。 •使用SQL WHERE子句表达式筛选行 'DATE(SHIPMENT_TMS)> = CURRENT DATE - 2 MONTH - (DAY(当前的 DATE)-1)DAYS的java.lang.RuntimeException:[1.36] failure:end of输入 预期DATE(SHIPMENT_TMS)> = CURRENT DATE - 2个月 - (DAY(CURRENT DATE)-1)DAYS
这可能是DATE()或DAY()不被服务的认可。有没有人试图做这样的过滤器?
谢谢
Data Connect不支持上述SQL。 Data Connect仅支持Spark SQL。
这是火花一般的网页: https://spark.apache.org/docs/1.6.0/sql-programming-guide.html
这是由火花支持的功能列表: https://spark.apache.org/docs/1.6.0/api/scala/index.html#org.apache.spark.sql.functions $
感谢您的提示!这些函数将有助于调整代码。 –
旁注:你的约会数学是有缺陷的。如果当前日期比前一个月支持的月份更大,[您将在错误的月份结束](https://gist.github.com/Clockwork-Muse/ee76389b511c8ce25b847ab0fe3db9f0)。因为所有月份都以1开始,所以您需要首先获得月初。此外,使用时间戳列上的'DATE'将使系统忽略任何索引:您应该使用'shipment_tms> = TIMESTAMP( ,'00:00:00')'。 –
嗨,这是一个有效的场景。但是,这是在该月(13日)的同一日期执行的,因此它始终具有相同的值和模式。谢谢 –
'但是,这是在月份(13日)的同一天执行的,所以它将始终具有相同的值和模式。“ - 当然。 _目前_。无论对当前环境进行何种(某些)更改,始终尝试使代码能够工作。在不同的日期运行是一个简单的环境变化。请注意,您正在使用的当前代码无法在特定月份的最后一天进行可靠测试!这可能是你的一个担忧。 –