0

ActivePivot の読み込みに使用する CSV ファイルには、レコードの値を計算するために乗算する必要がある 2 つのフィールド (価格 * 数量) があります。

トピックとチャネルで CSV ソースを使用しています。この計算はどこで実行できますか?

4

1 に答える 1

0

ColumnParser の compute メソッドをオーバーライドする必要があります。以下を参照してください。次の例では、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 に答える