public void QueryAll() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) select s; var sensors = query.ToList(); Assert.AreEqual(8, sensors.Count); }
public void QueryCountDifferentTimeSeries() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) select s; var sensors = query.LongCount(); Assert.AreEqual(8, sensors); }
public void QueryTakeSkip() { var query = (from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) select s).Take(2).Skip(3); var sensors = query.ToList(); Assert.AreEqual(1 + 1, sensors.Count); }
public void QueryWhereNothing() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) where s.SensorId == "id-nothing" select s; var sensors = query.ToList(); Assert.AreEqual(0, sensors.Count); }
public void QueryTimeGreaterEqual() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) where s.Timestamp >= new DateTime(2020, 11, 16, 8, 20, 15, DateTimeKind.Utc) select s; var sensors = query.ToList(); Assert.AreEqual(4, sensors.Count); }
public void QueryOr() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) where s.Value >= 28 || s.Value <= 12 select s; var sensors = query.ToList(); Assert.AreEqual(6, sensors.Count); }
public void ResultOperatorNotSupported() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _queryApi) select s; var nse = Assert.Throws <NotSupportedException>(() => BuildQueryVisitor(MakeExpression(query, q => q.Max()))); Assert.AreEqual("MaxResultOperator is not supported.", nse.Message); }
public void QueryCount() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) where s.SensorId == "id-1" select s; var sensors = query.Count(); Assert.AreEqual(4, sensors); }
public void QueryOrderBy() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) orderby s.Value select s; var sensors = query.ToList(); Assert.AreEqual(12, sensors.First().Value); Assert.AreEqual(89, sensors.Last().Value); }
public void DefaultQuery() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _queryApi) select s; var visitor = BuildQueryVisitor(query.Expression); const string expected = FluxStart; Assert.AreEqual(expected, visitor.BuildFluxQuery()); }
public void ResultOperatorTake() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _queryApi) select s; var visitor = BuildQueryVisitor(MakeExpression(query, q => q.Take(10))); const string expected = FluxStart + " " + "|> limit(n: p3)"; Assert.AreEqual(expected, visitor.BuildFluxQuery()); }
public void QueryOrderByTime() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) orderby s.Timestamp descending select s; var sensors = query.ToList(); Assert.AreEqual(new DateTime(2020, 11, 17, 8, 20, 15, DateTimeKind.Utc), sensors.First().Timestamp); Assert.AreEqual(new DateTime(2020, 10, 15, 8, 20, 15, DateTimeKind.Utc), sensors.Last().Timestamp); }
public void QueryExampleCount() { var query = (from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) where s.SensorId == "id-1" where s.Value > 12 where s.Timestamp > new DateTime(2019, 11, 16, 8, 20, 15, DateTimeKind.Utc) where s.Timestamp < new DateTime(2021, 01, 10, 5, 10, 0, DateTimeKind.Utc) orderby s.Timestamp select s) .Count(); Assert.AreEqual(3, query); }
public void QueryWhereNotEqual() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) where s.SensorId != "id-1" select s; var sensors = query.ToList(); Assert.AreEqual(4, sensors.Count); foreach (var sensor in sensors) { Assert.AreEqual("id-2", sensor.SensorId); } }
public void QueryLessThanOrEqual() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) where s.Value <= 28 select s; var sensors = query.ToList(); Assert.AreEqual(6, sensors.Count); foreach (var sensor in sensors) { Assert.LessOrEqual(sensor.Value, 28); } }
public void QueryAnd() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) where s.Value >= 28 && s.SensorId != "id-1" select s; var sensors = query.ToList(); Assert.AreEqual(2, sensors.Count); foreach (var sensor in sensors) { Assert.GreaterOrEqual(sensor.Value, 28); } }
public void QueryTimeEqual() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _client.GetQueryApiSync()) where s.Timestamp == new DateTime(2020, 10, 15, 8, 20, 15, DateTimeKind.Utc) select s; var sensors = query.ToList(); Assert.AreEqual(2, sensors.Count); foreach (var sensor in sensors) { Assert.GreaterOrEqual(sensor.Value, 15); } }
public void DefaultAst() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _queryApi) select s; var visitor = BuildQueryVisitor(query.Expression); var ast = visitor.BuildFluxAST(); Assert.NotNull(ast); Assert.NotNull(ast.Body); Assert.AreEqual(2, ast.Body.Count); var bucketAssignment = ((OptionStatement)ast.Body[0]).Assignment as VariableAssignment; Assert.AreEqual("p1", bucketAssignment?.Id.Name); Assert.AreEqual("my-bucket", (bucketAssignment?.Init as StringLiteral)?.Value); var rangeAssignment = ((OptionStatement)ast.Body[1]).Assignment as VariableAssignment; Assert.AreEqual("p2", rangeAssignment?.Id.Name); Assert.AreEqual("0", (rangeAssignment?.Init as IntegerLiteral)?.Value); }
public static void Main(string[] args) { const string host = "https://us-west-2-1.aws.cloud2.influxdata.com"; const string token = "..."; const string bucket = "linq_bucket"; const string organization = "jakub_bednar"; var options = new InfluxDBClientOptions.Builder() .Url(host) .AuthenticateToken(token.ToCharArray()) .Org(organization) .Bucket(bucket) .Build(); var converter = new DomainEntityConverter(); var client = InfluxDBClientFactory.Create(options) .EnableGzip(); // // Query Data to Domain object // var queryApi = client.GetQueryApiSync(converter); var stopWatch = new Stopwatch(); stopWatch.Start(); // // Select Cloud // var query = from s in InfluxDBQueryable <DomainEntity> .Queryable(bucket, organization, queryApi, converter) select s; var entities = query.ToList(); Console.WriteLine("==== Cloud Query Results ===="); Console.WriteLine($"> count: {entities.Count}"); Console.WriteLine($"> first: {entities.First()}"); Console.WriteLine($"> elapsed seconds: {stopWatch.Elapsed.TotalSeconds}"); Console.WriteLine(); // // Debug Query // Console.WriteLine("==== Debug LINQ Queryable Flux output ===="); var influxQuery = ((InfluxDBQueryable <DomainEntity>)query).ToDebugQuery(); Console.WriteLine("> variables:"); foreach (var statement in influxQuery.Extern.Body) { var os = statement as OptionStatement; var va = os?.Assignment as VariableAssignment; var name = va?.Id.Name; var value = va?.Init.GetType().GetProperty("Value")?.GetValue(va.Init, null); Console.WriteLine($"{name}={value}"); } Console.WriteLine(); Console.WriteLine("> query:"); Console.WriteLine(influxQuery._Query); client.Dispose(); }
public void ResultOperatorTakeSkipMultipleTimes() { var query = from s in InfluxDBQueryable <Sensor> .Queryable("my-bucket", "my-org", _queryApi) select s; var queries = new[]
public static async Task Main(string[] args) { const string host = "http://localhost:9999"; const string token = "my-token"; const string bucket = "my-bucket"; const string organization = "my-org"; var options = new InfluxDBClientOptions.Builder() .Url(host) .AuthenticateToken(token.ToCharArray()) .Org(organization) .Bucket(bucket) .Build(); var converter = new DomainEntityConverter(); var client = InfluxDBClientFactory.Create(options); // // Prepare data to write // var time = new DateTimeOffset(2020, 11, 15, 8, 20, 15, new TimeSpan(3, 0, 0)); var entity1 = new DomainEntity { Timestamp = time, SeriesId = Guid.Parse("0f8fad5b-d9cb-469f-a165-70867728950e"), Value = 15, Properties = new List <DomainEntityAttribute> { new DomainEntityAttribute { Name = "height", Value = 4 }, new DomainEntityAttribute { Name = "width", Value = 110 } } }; var entity2 = new DomainEntity { Timestamp = time.AddHours(1), SeriesId = Guid.Parse("0f8fad5b-d9cb-469f-a165-70867728950e"), Value = 15, Properties = new List <DomainEntityAttribute> { new DomainEntityAttribute { Name = "height", Value = 5 }, new DomainEntityAttribute { Name = "width", Value = 160 } } }; var entity3 = new DomainEntity { Timestamp = time.AddHours(2), SeriesId = Guid.Parse("7c9e6679-7425-40de-944b-e07fc1f90ae7"), Value = 15, Properties = new List <DomainEntityAttribute> { new DomainEntityAttribute { Name = "height", Value = 5 }, new DomainEntityAttribute { Name = "width", Value = 110 } } }; var entity4 = new DomainEntity { Timestamp = time.AddHours(3), SeriesId = Guid.Parse("7c9e6679-7425-40de-944b-e07fc1f90ae7"), Value = 15, Properties = new List <DomainEntityAttribute> { new DomainEntityAttribute { Name = "height", Value = 6 }, new DomainEntityAttribute { Name = "width", Value = 160 } } }; // // Write data // await client.GetWriteApiAsync(converter) .WriteMeasurementsAsync(WritePrecision.S, entity1, entity2, entity3, entity4); // // Query Data to Domain object // var queryApi = client.GetQueryApiSync(converter); // // Select ALL // var query = from s in InfluxDBQueryable <DomainEntity> .Queryable("my-bucket", "my-org", queryApi, converter) select s; Console.WriteLine("==== Select ALL ===="); query.ToList().ForEach(it => Console.WriteLine(it.ToString())); // // Filter By Tag // query = from s in InfluxDBQueryable <DomainEntity> .Queryable("my-bucket", "my-org", queryApi, converter) where s.SeriesId == Guid.Parse("7c9e6679-7425-40de-944b-e07fc1f90ae7") select s; Console.WriteLine("==== Filter by Tag ===="); query.ToList().ForEach(it => Console.WriteLine(it.ToString())); // // Use Take + Skip // query = (from s in InfluxDBQueryable <DomainEntity> .Queryable("my-bucket", "my-org", queryApi, converter) select s) .Take(1) .Skip(1); Console.WriteLine("==== Use Take + Skip ===="); query.ToList().ForEach(it => Console.WriteLine(it.ToString())); // // Use Time Range // query = from s in InfluxDBQueryable <DomainEntity> .Queryable("my-bucket", "my-org", queryApi, converter) where s.Timestamp > time.AddMinutes(30) && s.Timestamp < time.AddHours(3) select s; Console.WriteLine("==== Use Time Range ===="); query.ToList().ForEach(it => Console.WriteLine(it.ToString())); // // Use Any // query = from s in InfluxDBQueryable <DomainEntity> .Queryable("my-bucket", "my-org", queryApi, converter) where s.Properties.Any(a => a.Name == "width" && a.Value == 160) select s; Console.WriteLine("==== Use Any ===="); query.ToList().ForEach(it => Console.WriteLine(it.ToString())); // // Debug Query // Console.WriteLine("==== Debug LINQ Queryable Flux output ===="); var influxQuery = ((InfluxDBQueryable <DomainEntity>)query).ToDebugQuery(); foreach (var statement in influxQuery.Extern.Body) { var os = statement as OptionStatement; var va = os?.Assignment as VariableAssignment; var name = va?.Id.Name; var value = va?.Init.GetType().GetProperty("Value")?.GetValue(va.Init, null); Console.WriteLine($"{name}={value}"); } Console.WriteLine(); Console.WriteLine(influxQuery._Query); client.Dispose(); }