У меня есть список столбцов priceColumns
, которые являются динамическими.
Я пытаюсь объединить эти столбцы в наборе данных,
public Dataset getAgg(RelationalGroupedDataset rlDataset){
Dataset selectedDS=null;
for(String priceCol :priceColumns){
selectedDS=rlDataset.agg(expr("sum(cast("+priceCol+" as BIGINT))"));
}
return selectedDS;
}
Приведенный выше код является неправильным, То, что я пытаюсь сделать здесь, - это на основе каждого присутствующего столбца агрегирование должно происходить для этого набора данных, Как я могу написать общий код? Я здесь совершенно застрял.
Я попытался использовать способ ниже, и он решил.
List<Column> columnExpr = priceColumns.stream()
.map(col->expr("sum(cast("+col+" as BIGINT))").as(col))
.collect(Collectors.toList());
Потом,
selectedDS= rlDataset
.agg(columnExpr.get(0),
JavaConverters.asScalaIteratorConverter(columnExpr.subList(1, columnExpr.size())
.iterator()).asScala().toSeq());