com.datastax.data.exploration.biz.stat.Pie Maven / Gradle / Ivy
package com.datastax.data.exploration.biz.stat;
import com.alibaba.fastjson.JSONObject;
import com.datastax.data.exploration.biz.datatable.DataTable;
import com.datastax.data.exploration.biz.datatable.column.NumberColumn;
import com.datastax.data.exploration.biz.datatable.column.math.Function;
import com.datastax.data.exploration.biz.datatable.column.math.MathStat;
import com.datastax.data.exploration.common.File2DataTable;
import com.datastax.data.exploration.util.Consts;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 饼图
*/
public class Pie {
/**
* 获取饼图展示的数据
*
* @param id 数据集id
* @param group 聚合属性
* @param val 取值属性
* @param func 聚合函数
* @return 返回的是饼图的展示数据
*/
public static List operator(String id, String group, String val, String func) {
List listValue = new ArrayList<>();
DataTable table = File2DataTable.exactTable(id);
Function function = Function.getFunction(func);
aggMath(table, group, val).forEach((k, v) -> {
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", k);
if (v.typeIsNumber()) {
jsonObject.put("value", v.calculate(function));
} else if (Function.COUNT.equals(function)) {
jsonObject.put("value", v.calculate(function));
}
listValue.add(jsonObject);
});
return listValue;
}
/**
* 获取聚合属性
*
* @param table shuju表
* @param group 聚合属性
* @param val 取值属性
* @return
*/
private static Map aggMath(DataTable table, String group, String val) {
Map map = new HashMap<>();
table.getRows().aggList(group).forEach((k, v) -> {
if (!Consts.NONE.equals(val) && table.getColumns().getColumn(val) instanceof NumberColumn) {
List