func main() {
count := 0
for nextTimeFlag {
count++
number, _ := strconv.Atoi(analysisReq.Number)
if count > number+1 {
nextTimeFlag = false
continue
}
searchTimeArr = append(searchTimeArr, searchTime)
nextTime, flag := handleNextGranularityTime(searchTime, analysisReq.Granularity, analysisReq.Type)
fmt.Println("下一粒度周期时间:", nextTime)
searchTime = nextTime
if !flag {
nextTimeFlag = false
continue
}
}
var wg sync.WaitGroup
wg.Add(len(searchTimeArr))
timeAnalysisDataLenMapChan := make(chan map[string]int, len(searchTimeArr))
timeDimessionsMapChan := make(chan map[string]map[string]int, len(searchTimeArr))
nowTime := time.Now().UnixNano()
for _, _searchTime := range searchTimeArr {
go func(searchTime string) {
_timeAnalysisDataLenMap := make(map[string]int)
_timeDimessionsMap := make(map[string]map[string]int)
_singleView, singleViewParams := GetSingleViewInfoByAnalysis(analysisReq, searchTime, dimensionArr)
currentTime := time.Now().UnixNano()
data, _ := singleViewService.QuerySingleViewData(_singleView, *singleViewParams)
fmt.Printf("根据单图信息查询数据 花费%d ms \n", (time.Now().UnixNano()-currentTime)/1000000)
var dimessionsMap map[string]int = nil
resultDimessionsMap, _, _ := funnelService.getDataResult(data.Data, dimessionsMap, dimensionNameArr, 0)
_timeAnalysisDataLenMap[strings.Replace(searchTime, consts.SPLIT, consts.TIME_SPLIT, -1)] = len(data.Data)
timeAnalysisDataLenMapChan <- _timeAnalysisDataLenMap
_timeDimessionsMap[strings.Replace(searchTime, consts.SPLIT, consts.TIME_SPLIT, -1)] = resultDimessionsMap
timeDimessionsMapChan <- _timeDimessionsMap
wg.Done()
}(_searchTime)
}
wg.Wait()
close(timeAnalysisDataLenMapChan)
close(timeDimessionsMapChan)
fmt.Printf("查询所有单图数据 花费%d ms \n", (time.Now().UnixNano()-nowTime)/1000000)
for {
select {
case _timeAnalysisDataLenMap, ok := <-timeAnalysisDataLenMapChan:
if ok {
for _searchTime, dataLen := range _timeAnalysisDataLenMap {
timeAnalysisDataLenMap[_searchTime] = dataLen
}
}else {
goto _timeAnalysisDataLenMapEnd
}
}
}
_timeAnalysisDataLenMapEnd:
_timeDimessionsMapEnd:
for {
select {
case _timeDimessionsMap, ok := <-timeDimessionsMapChan:
if ok {
for _searchTime, dimenssionsMap := range _timeDimessionsMap {
timeDimessionsMap[_searchTime] = dimenssionsMap
}
}else {
break _timeDimessionsMapEnd
}
}
}
}