在我用于加载 ActivePivot 的 CSV 文件中,我有 2 个字段需要相乘以计算我的记录值:价格 * 数量。
我正在使用带有主题和频道的 CSV 源。我在哪里可以执行此计算?
在我用于加载 ActivePivot 的 CSV 文件中,我有 2 个字段需要相乘以计算我的记录值:价格 * 数量。
我正在使用带有主题和频道的 CSV 源。我在哪里可以执行此计算?
您应该覆盖 ColumnParser 的计算方法,见下文。在以下示例中,我们获取 QuantitySold 和 SellingPricePerUnit 并将结果添加到 Sales 列中,不要忘记在您的商店定义中添加 Sales 列:
@Bean
@DependsOn(value="csvSource")
public CSVMessageChannelFactory csvChannelFactory() {
CSVMessageChannelFactory channelFactory = new CSVMessageChannelFactory(csvSource(), datastore);
channelFactory.setCalculatedColumns(ORDERS_TOPIC, DatastoreConfig.ORDERS, Arrays.<IColumnCalculator>asList(
//derive new fields
new ColumnParser("Sales", "double"){
@Override
public Object compute(IColumnCalculationContext context) {
Long qty = (Long) context.getValue("QuantitySold");
Double price = (Double) context.getValue("SellingPricePerUnit");
return (qty == null || price == null) ? null: qty*price;
}
}
));
return channelFactory; }