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 中的自定义过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Android中的自定义相机过滤器

Angularjs中的自定义过滤器不起作用

数据表中的自定义过滤器不会加载所有数据

元数据库中的 SQL 自定义过滤器不显示使用 [[ ]] 的自定义字段

为啥我在 vue.js 中的自定义搜索过滤器不起作用?

Django 1.3 或更低版本的 Django Admin 中的自定义过滤器