DataConnect 中的自定义过滤器
Posted
技术标签:
【中文标题】DataConnect 中的自定义过滤器【英文标题】:Custom filter in DataConnect 【发布时间】:2017-10-10 21:12:57 【问题描述】:您可能已经意识到,我经常使用这个 IBM Bluemix DataConnect 服务。创建活动时,您可以使用自定义过滤器优化要导出的数据(它启用 WHERE 子句以向查询添加逻辑)
我正在尝试过滤 TIMESTAMP 字段,尝试获取 1 个月前的数据,但该语句不起作用。
DATE(SHIPMENT_TMS) >= CURRENT DATE - 2 MONTH - (DAY(CURRENT DATE)-1)DAYS
我收到以下错误消息
自定义过滤器失败。重试刚刚执行的整形操作。 • 使用 SQL WHERE 子句表达式过滤行 'DATE(SHIPMENT_TMS) >= 当前日期 - 2 个月 - (DAY(CURRENT DATE)-1)DAYS' java.lang.RuntimeException: [1.36] failure: end of input 预计 DATE(SHIPMENT_TMS) >= 当前日期 - 2 个月 - (DAY(CURRENT 日期)-1)天
可能是服务无法识别 DATE() 或 DAY()。有没有人尝试做这样的过滤器?
谢谢
【问题讨论】:
旁注:您的日期数学有缺陷。如果当前日期比上个月支持的日期更大,you're going to end up in the wrong month。您需要首先获取月初,因为所有月份都以 1 开头。此外,在时间戳列上使用DATE
将使系统忽略任何索引:您应该改用 shipment_tms >= TIMESTAMP(<date math>, '00:00:00')
。跨度>
嗨,这是一个有效的场景。但是,这是在每月的同一天(13 日)执行的,因此它始终具有相同的值和模式。谢谢
However, this is executed on the same date of the month (the 13th) so it will always have the same values and pattern.
- 当然。 暂时。无论当前环境的(某些)变化如何,始终尝试使您的代码能够工作。在不同的日期运行是一个简单的环境变化。请注意,您正在使用的当前代码无法在某些月份的最后一天进行可靠测试!这可能是您关心的问题。
【参考方案1】:
Data Connect 不支持上述 SQL。数据连接仅支持 Spark SQL。
这是 spark 的一般页面: https://spark.apache.org/docs/1.6.0/sql-programming-guide.html
这是 spark 支持的功能列表: https://spark.apache.org/docs/1.6.0/api/scala/index.html#org.apache.spark.sql.functions$
【讨论】:
感谢您的提示!这些函数将有助于调整代码。以上是关于DataConnect 中的自定义过滤器的主要内容,如果未能解决你的问题,请参考以下文章