コード例 #1
0
        /// <summary>
        /// Performs a backfill query on the database based on a given time range and backfill parameters.
        /// </summary>
        /// <param name="database">The name of the database to perform the backfill on.</param>
        /// <param name="backfillParams">The backfill parameters query.</param>
        /// <returns>The API response.</returns>
        public async override Task<InfluxDbApiResponse> BackfillAsync(string database, InfluxDbBackfillParams backfillParams)
        {
            if (backfillParams == null) throw new ArgumentNullException("backfillParams");

            // Validate
            if (string.IsNullOrWhiteSpace(backfillParams.Destination)) throw new ArgumentNullException("backfillParams.Destination");
            if (string.IsNullOrWhiteSpace(backfillParams.Source)) throw new ArgumentNullException("backfillParams.Source");
            if (string.IsNullOrWhiteSpace(backfillParams.Interval)) throw new ArgumentNullException("backfillParams.Interval");

            if (backfillParams.SubQueries == null || backfillParams.SubQueries.Count() == 0 || string.IsNullOrWhiteSpace(backfillParams.SubQueries.First()))
                throw new ArgumentException("backfillParams.SubQueries needs at least one query.");

            if (!InfluxDbHelper.IsTimeIntervalValid(backfillParams.Interval))
                throw new ArgumentException("backfillParams.Interval is invalid: " + backfillParams.Interval);

            // Copy values to InfluxData.Net equivalent
            var _bfParams = new BackfillParams()
            {
                DsSerieName = backfillParams.Destination,
                SourceSerieName = backfillParams.Source,
                Downsamplers = backfillParams.SubQueries.ToList(),
                Interval = backfillParams.Interval,
                TimeFrom = backfillParams.FromTime,
                TimeTo = backfillParams.ToTime,
                Filters = backfillParams.Filters != null ? backfillParams.Filters.ToList() : null,
                FillType = (FillType)Enum.Parse(typeof(FillType), backfillParams.FillType.ToString(), true),
                Tags = backfillParams.Tags != null ? backfillParams.Tags.ToList() : null,
            };

            // Execute the request and return response
            var response = await influx.ContinuousQuery.BackfillAsync(database, _bfParams).ConfigureAwait(false);
            return new InfluxDbApiResponse(response.Body, response.StatusCode, response.Success);
        }
コード例 #2
0
        public virtual string Backfill(string dbName, BackfillParams backfill)
        {
            var downsamplers = backfill.Downsamplers.ToCommaSpaceSeparatedString();
            var filters      = BuildFilters(backfill.Filters);
            var timeFrom     = backfill.TimeFrom.ToString("yyyy-MM-dd HH:mm:ss");
            var timeTo       = backfill.TimeTo.ToString("yyyy-MM-dd HH:mm:ss");
            var tags         = BuildTags(backfill.Tags);
            var fillType     = BuildFillType(backfill.FillType);

            var query = String.Format(QueryStatements.Backfill,
                                      downsamplers, backfill.DsSerieName, backfill.SourceSerieName, filters, timeFrom, timeTo, backfill.Interval, tags, fillType);

            return(query);
        }
コード例 #3
0
 public async Task<IInfluxDbApiResponse> Backfill(BackfillParams backfill)
 {
     return await _influxDbClient.ContinuousQuery.BackfillAsync(_influxDbName, backfill);
 }
コード例 #4
0
        public virtual async Task <IInfluxDataApiResponse> BackfillAsync(string dbName, BackfillParams backfillParams)
        {
            var query    = _cqQueryBuilder.Backfill(dbName, backfillParams);
            var response = await base.GetAndValidateQueryAsync(query, dbName).ConfigureAwait(false);

            return(response);
        }