我已经获得了从 DB2LUW 到 Microsoft SQL Server 的 Infosphere CDC 环境。
因为我们有磁盘空间问题,我们需要过滤复制;选定的数据将按日期列复制。
源表插入方式为APPEND,很少更新。在创建订阅过滤选项卡期间,当我运行验证按钮时,它会返回如下所示的错误。
BUSINESS_DATE column data type is TIMESTAMP(0).
Error message details :
cannot parse expression : BUSINESS_DATE > '2017-12-18 00:00:00.0"
Cannot return as a date
我已经阅读了文档,但我无法理解它,并且没有满足我的场景的示例表达式。我不确定为什么 CDC 无法使用时间戳数据类型列执行过滤。
当我尝试将我的时间戳列转换为 char 格式时,CDC 发现它是有效的:
%TOCHARFORMAT(BUSINESS_DATE,'yyyy.MM.dd HH:mm:ss') > '2017.12.18 00:00:00'
%TOCHARFORMAT(BUSINESS_DATE,'yyyyMMdd') > '20171218'
由于我没有任何开发环境,因此我没有足够的信心运行它。
我预计会出现一些性能问题,因为 (business_date) 的每一行都需要首先转换,然后再与过滤条件进行比较。
最后,我的表映射被另一列(bigint 数据类型)过滤。我只是很好奇为什么刷新过程似乎没有使用任何索引来过滤行(CDC在源数据库中运行的查询没有使用任何过滤器),尽管它有助于加速刷新,因为不是每个数据都会需要插入到目标表中。
CDC 可以使用时间戳数据类型列执行过滤吗?有什么建议么?