NewRowMetri c с для l oop в Go для InfluxDB 2.0 - PullRequest
0 голосов
/ 25 марта 2020

Как мне сгенерировать 'RowMetri c' с помощью для l oop?

Ниже я создал рабочий для l oop, чтобы отправить массив значений измерений в InfluxDB (2.0). Поскольку каждое отдельное значение измерения отправляется отдельно в InlfuxDB, это l oop далеко не эффективно. Мне нравится переписывать это l oop, чтобы он сразу отправлял весь массив в InfluxDB. Обратите внимание, что тег 'Frequency' должен иметь различное значение в каждом новом RowMetri c. Другие теги одинаковы для всего массива.

for _, measurementValueString := range stringArray {
    measurementValue,_ := strconv.ParseFloat(measurementValueString,64)
    {
        myMetrics = []influxdb.Metric{
            influxdb.NewRowMetric(
                map[string]interface{}{"measurementValue": measurementValue},
                    "measurements",
                map[string]string{
                    "Frequency": FreqNextMeasurementString,
                    "FileType": headerFileType,
                    "LocationName": headerLocationName,
                    "Latitude": headerLatitudeDDString,
                    "Longitude": headerLongitudeDDString,
                    "AntennaType": headerAntennaType,
                    "FilterBandwidth": headerFilterBandwidthString,
                    "LevelUnits": headerLevelUnits,
                    "Detector": headerDetector,
                    "Note": headerNote,
                    "AntennaAzimuth": headerAntennaAzimuthString,
                    "AntennaElevation": headerAntennaElevationString,
                    "Attenuation": headerAttenuationString,
                    "FilterType": headerFilterType,
                    "DisplayedNote": headerDisplayedNote,
                    "MeasurementAccuracy": headerMeasurementAccuracy,
                    "VideoFilterType": headerVideoFilterType,
            },
                    time.Date(int(dayMeasurementYear), time.Month(int(dayMeasurementMonth)), int(dayMeasurementDay), int(timeMeasurementHour), int(timeMeasurementMin), int(timeMeasurementSec), 0, time.UTC)),
    }

    if _, err := influx.Write(context.Background(), "test", "at", myMetrics...); err != nil
    {
        log.Fatal(err)
    }
    FreqNextMeasurement = FreqNextMeasurement + frequencyStep
    FreqNextMeasurementString = strconv.FormatFloat(FreqNextMeasurement, 'f', -1, 64)
    }
}
influx.Close() 
...