Browse Source

Merge branch 'hotfix/baifenwei_0619' into debug

hsun 8 months ago
parent
commit
0d4240e319
2 changed files with 10 additions and 5 deletions
  1. 2 2
      services/data/cross_variety/chart.go
  2. 8 3
      services/data/line_feature/chart_info.go

+ 2 - 2
services/data/cross_variety/chart.go

@@ -349,8 +349,8 @@ func GetChartData(chartInfoId int, config request.ChartConfigReq) (edbList []*da
 						}
 					}
 				}
-				// N=1时说明计算无效
-				if bigN == 1 {
+				// N<=1时说明计算无效
+				if bigN <= 1 {
 					continue
 				}
 				numerator := decimal.NewFromInt(int64(tinyN - 1))

+ 8 - 3
services/data/line_feature/chart_info.go

@@ -158,6 +158,7 @@ func GetPercentileData(chartInfoId int, startDate, endDate string, mappingInfo *
 	// 百分位数据个数算法
 	// 数据区间第一个和最后一个数据点的时间和数据分别为(T1,S1)(T2,S2); N=T1到T2指标数据个数, n=小于等于S2的数据个数
 	// 个数百分位=(n-1)/(N-1)
+	maxDay := len(dataList) // 往前找数据的边界
 	if percentType == utils.PercentCalculateTypeNum {
 		for i, d := range dataList {
 			// T2为当前日期
@@ -166,7 +167,11 @@ func GetPercentileData(chartInfoId int, startDate, endDate string, mappingInfo *
 
 			// 计算N和n
 			var bigN, tinyN int
-			for k := 0; k < calculateDay; k++ {
+			for k := 0; k < maxDay; k++ {
+				// 往前找(时间长度)个有数据的, N理论上只有最前面几个日期<calculateDay, 后面的N=calculateDay
+				if bigN >= calculateDay {
+					break
+				}
 				preVal, preOk := dataMap[t2.AddDate(0, 0, -k)]
 				if !preOk {
 					continue
@@ -177,8 +182,8 @@ func GetPercentileData(chartInfoId int, startDate, endDate string, mappingInfo *
 				}
 			}
 
-			// N=1时说明计算无效
-			if bigN == 1 {
+			// N<=1时说明计算无效
+			if bigN <= 1 {
 				continue
 			}
 			numerator := decimal.NewFromInt(int64(tinyN - 1))