Explorar o código

相关性规则修改

hsun %!s(int64=2) %!d(string=hai) anos
pai
achega
9ea965b92d
Modificáronse 1 ficheiros con 4 adicións e 21 borrados
  1. 4 21
      services/data/correlation/chart_info.go

+ 4 - 21
services/data/correlation/chart_info.go

@@ -205,18 +205,9 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *models.ChartEdbInfo
 		}
 	}
 
-	// 若不同频, 则需要将低频指标变为高频
-	frequencyIntMap := map[string]int{
-		"日度": 1, "周度": 2, "旬度": 3, "月度": 4, "季度": 5, "年度": 6,
-	}
-	baseEdbInfo := edbInfoMappingA
-	changeEdbInfo := edbInfoMappingB
-	if edbInfoMappingA.Frequency != edbInfoMappingB.Frequency {
-		if frequencyIntMap[edbInfoMappingA.Frequency] >= frequencyIntMap[edbInfoMappingB.Frequency] {
-			baseEdbInfo = edbInfoMappingB
-			changeEdbInfo = edbInfoMappingA
-		}
-	}
+	// 2023-03-02 时间序列始终以指标B为基准, 始终是A进行平移
+	baseEdbInfo := edbInfoMappingB
+	changeEdbInfo := edbInfoMappingA
 
 	// 获取时间基准指标在时间区间内的值
 	baseDataList := make([]*models.EdbDataList, 0)
@@ -276,9 +267,6 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *models.ChartEdbInfo
 		}
 		moveUnitDays := frequencyDaysMap[leadUnit]
 
-		// 此处需注意, 图表代表的意思是A领先/滞后B指标的相关系数, 只是时间序列以高频的为基准
-		// 所以需要判断高频指标是A还是B
-		// 举例: 当高频指标为A时, 即B为变频, newChangeDataList为B的值, A领先B三天则mDays应为+3, 取B滞后三天的值与基准日期的时间相比较
 		for i := range xData {
 			if xData[i] == 0 {
 				yData = append(yData, zeroRatio)
@@ -287,12 +275,7 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *models.ChartEdbInfo
 			yCalculateData := make([]float64, 0)
 
 			// 判断是向前平移还是向后平移
-			mDays := 0
-			if baseEdbInfo.EdbInfoId == edbInfoMappingA.EdbInfoId {
-				mDays = int(moveUnitDays) * -xData[i]
-			} else {
-				mDays = int(moveUnitDays) * xData[i]
-			}
+			mDays := int(moveUnitDays) * xData[i]
 			_, dMap := MoveDataDaysToNewDataList(newChangeDataList, mDays)
 
 			// 取出对应的基准日期的值