All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.datastax.data.exploration.service.chart.impl.ParetoServiceImpl Maven / Gradle / Ivy

The newest version!
package com.datastax.data.exploration.service.chart.impl;

import com.alibaba.fastjson.JSONObject;
import com.datastax.data.exploration.biz.datatable.DataTable;

import com.datastax.data.exploration.biz.datatable.column.NomialColumn;
import com.datastax.data.exploration.biz.stat.Pareto;

import com.datastax.data.exploration.common.DataTypeHandler;
import com.datastax.data.exploration.common.File2DataTable;
import com.datastax.data.exploration.service.chart.ParetoService;
import com.datastax.data.exploration.util.Consts;
import org.javatuples.Pair;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * 帕累托图
 *
 * @author songfu 2018/1/11
 */
@Service("paretoService")
public class ParetoServiceImpl implements ParetoService {

    /**
     * 获取帕累托图初始化数据
     *
     * @param id 数据集 id
     * @return 返回的是获取帕累托图初始化数据
     */
    @Override
    public JSONObject paretoInit(String id) {
        Pair, List> pair = DataTypeHandler.numericDiscrete(File2DataTable.tableSchema(id));
        List listVal = pair.getValue0();
        List listGroup = pair.getValue1();
        listVal.addAll(listGroup);
        if (listGroup.size() == 0) {
            listGroup.add(Consts.NONE);
        }
        if (listVal.size() == 0) {
            listVal.add(Consts.NONE);
        }
        DataTable table = File2DataTable.exactTable(id);
        List valSubs = new ArrayList();
        for (String val : listVal) {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("name", val);
            if (listGroup.contains(val)) {
                NomialColumn nomialColumn = (NomialColumn) table.getColumns().getColumn(val);
                jsonObject.put("subs", nomialColumn.distinct());
            } else {
                String[] vals = {Consts.NONE};
                jsonObject.put("subs", vals);
            }
            valSubs.add(jsonObject);
        }
        JSONObject json = new JSONObject();
        json.put("groups", listGroup);
        json.put("vals", listVal);
        json.put("valSubs", valSubs);
        return json;
    }

    /**
     * 获取帕累托图展示数据
     *
     * @param id     数据集 id
     * @param group  分组属性
     * @param val    统计属性
     * @param valSub 分项
     * @return 返回的是累托图展示数据, json数组, 每组数据对应分组属性的数据
     */
    @Override
    public List paretoSelect(String id, String group, String val, String valSub) {
        if (Consts.NONE.equals(group) || Consts.NONE.equals(val)) {
            return new ArrayList<>();
        }
        return Pareto.operator(id, group, val, valSub);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy