func removeDuplicate(pluID []int64, measures []string, dimensions []float64) ([]string, []float64, []duplicate) {
	var m []string
	var d []float64

	pluIDKey := make(map[int64]bool)
	measuresKey := make(map[string]bool)
	dimensionsKey := make(map[float64]bool)

	var duplicates []duplicate
	for i, item := range measures {
		_, vm := measuresKey[item]
		_, vd := dimensionsKey[dimensions[i]]
		_, vp := pluIDKey[pluID[i]]
		if !vm || !vd || !vp {
			measuresKey[item] = true
			dimensionsKey[dimensions[i]] = true
			pluIDKey[pluID[i]] = true
			m = append(m, item)
			d = append(d, dimensions[i])
		} else {
			duplicates = append(duplicates, duplicate{
				PluID:     pluID[i],
				Measure:   item,
				Dimension: dimensions[i],
			})
		}
	}
	return m, d, duplicates
}
// removeDuplicate return new slices without duplicate
removeDuplicate return new slices without duplicate
// removeDuplicate return new slices without duplicate
func removeDuplicate(pluID []int64, measures []string, dimensions []float64) ([]string, []float64, []duplicate) {
	var m []string
	var d []float64
	pluIDKey := make(map[int64]bool)
	measuresKey := make(map[string]bool)
	dimensionsKey := make(map[float64]bool)
	var duplicates []duplicate
	for i, item := range measures {
		_, vm := measuresKey[item]
		_, vd := dimensionsKey[dimensions[i]]
		_, vp := pluIDKey[pluID[i]]
		if !vm || !vd || !vp {
			measuresKey[item] = true
			dimensionsKey[dimensions[i]] = true
			pluIDKey[pluID[i]] = true
			m = append(m, item)
			d = append(d, dimensions[i])
		} else {
			duplicates = append(duplicates, duplicate{
				PluID:     pluID[i],
				Measure:   item,
				Dimension: dimensions[i],
			})
		}
	}
	return m, d, duplicates
}
func removeDuplicate ( pluID [ ] int64 , measures [ ] string , dimensions [ ] float64 ) ( [ ] string , [ ] float64 , [ ] duplicate ) { var m [ ] string var d [ ] float64 pluIDKey := make ( map [ int64 ] bool ) measuresKey := make ( map [ string ] bool ) dimensionsKey := make ( map [ float64 ] bool ) var duplicates [ ] duplicate for i , item := range measures { _ , vm := measuresKey [ item ] _ , vd := dimensionsKey [ dimensions [ i ] ] _ , vp := pluIDKey [ pluID [ i ] ] if ! vm || ! vd || ! vp { measuresKey [ item ] = true dimensionsKey [ dimensions [ i ] ] = true pluIDKey [ pluID [ i ] ] = true m = append ( m , item ) d = append ( d , dimensions [ i ] ) } else { duplicates = append ( duplicates , duplicate { PluID : pluID [ i ] , Measure : item , Dimension : dimensions [ i ] , } ) } } return m , d , duplicates }
removeDuplicate return new slices without duplicate
removeDuplicate return new slices without duplicate