/// <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); }
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); }
public async Task<IInfluxDbApiResponse> Backfill(BackfillParams backfill) { return await _influxDbClient.ContinuousQuery.BackfillAsync(_influxDbName, backfill); }
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); }