我们正在使用IBM AS400作为源表。我想做的是:
column_name
(例如“收盘价”)代替system_column_name
(“ CPHKD001”)我想我应该处理文件KcopLiveAuditSingleRowIntegrated.java
。对于时间戳,可能在那里有解决方案,但是我认为我找不到在那里的答案。
[请注意,审核KCOP包含执行此操作的代码,单行Avro审核KCOP是一个很好的示例。您可以在产品安装的samples.jar文件中找到我们所有集成KCOP的代码。
单行Avro审计KCOP记录了Avro之前和之后的通用记录,并生成了新的Avro通用记录,这些记录是它们的组合。如果在复制值时检查了列的类型,则可以标识时间戳记的列并更改要放入新的复合Avro通用记录中的值。
但是,根据以下链接,我们确实提供了一些预格式化的灵活性
注意,要使用此可选的预格式化程序,您需要“要启用此参数,必须将mirror_write_format参数设置为DYNAMIC。”
您将注意,可以设置一个数据存储区参数,该参数通常允许对您的KCOP接收到的时间戳数据进行自定义。
“ AVRO(默认)
将TIMESTAMP列值格式化为距1970年1月1日UNIX纪元(ISO日历)的微秒数。为了进行此计算,假定时间戳为UTC。
对于精度大于微秒的TIMESTAMP列,值格式化为字符串。您可以使用timestamp_format数据存储区参数指定字符串格式。 timestamp_format的默认值为yyyy-MM-dd HH:mm:ss.SSSNNNnnnppp。
TIMESTAMP WITH TIMEZONE列值被格式化为字符串。您可以使用timestamp_tz_format数据存储区参数指定字符串格式。 timestamp_tz_format的默认值为yyyy-MM-dd HH:mm:ss.SSSNNNnnnppp T。“
如果没有提供所需的确切格式,则可以选择最接近的格式并修改KCOP中的timestamp列的值。
修改KCOP的步骤如下...
关于列名的问题是相同的。如果使用的KCOP使用的是Avro架构注册表,则可以以编程方式更改在架构注册表中注册的架构。如果它是JSON,则可以在创建后更改JSON字符串,也可以在调用Avro to JSON方法之前进行更改。
或者,如果您的源支持派生的列,我相信您可以在管理控制台中使用新名称定义派生的列,该新名称只是原始列的值。我的回忆是,您可以取消选择原始列,因此您的名称将被更改。