package com.taobao.tddl.optimizer.costbased.esitimater.stat; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.apache.commons.lang.builder.ToStringBuilder; import com.taobao.tddl.common.utils.TddlToStringStyle; /** * 列的柱状图数据结构 * * @author danchen */ public class KVColumnStat { // 列名 private String columnName; // 采样大小 private long numRows; // 不同列值个数的统计 private Map<Integer, Long> valueHistogramMap; // 不同列值个数的百分比 private Map<Integer, Double> valuePercentMap; public KVColumnStat(String columnName, long realsampleRows){ this.columnName = columnName; this.numRows = realsampleRows; this.valuePercentMap = new HashMap<Integer, Double>(); } public String getColumnName() { return columnName; } public long getNum_rows() { return numRows; } public Map<Integer, Long> getValueHistogramMap() { return valueHistogramMap; } public void setValueHistogramMap(Map<Integer, Long> valueHistogramMap) { if (valueHistogramMap == null) { return; } this.valueHistogramMap = valueHistogramMap; for (Iterator<Integer> iterator = valueHistogramMap.keySet().iterator(); iterator.hasNext();) { int key = iterator.next(); Long value = valueHistogramMap.get(key); Double percent = Double.valueOf(value) / Double.valueOf(numRows); valuePercentMap.put(key, percent); } } public Map<Integer, Double> getValuePercentMap() { return valuePercentMap; } public String toString() { return ToStringBuilder.reflectionToString(this, TddlToStringStyle.DEFAULT_STYLE); } }