0

在我用于加载 ActivePivot 的 CSV 文件中,我有 2 个字段需要相乘以计算我的记录值:价格 * 数量。

我正在使用带有主题和频道的 CSV 源。我在哪里可以执行此计算?

4

1 回答 1

0

您应该覆盖 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;  }
于 2014-08-21T14:00:44.453 回答