public static async Task <IActionResult> Run( [HttpTrigger( authLevel: AuthorizationLevel.Function, methods: new [] { "POST" }, Route = "api/v1/clients/{clientId}/notify_outlier")] HttpRequest req , string clientId , [ServiceBus( Configuration.Constants.OutlierReceivedTopicName, EntityType = EntityType.Topic, Connection = Configuration.Constants.ServiceBusPeriodHourConnectionString)] IAsyncCollector <Outlier> collector , ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); var requestBody = await new StreamReader(req.Body).ReadToEndAsync().ConfigureAwait(false); var readings = JsonConvert.DeserializeObject <IEnumerable <HeatReading> >(requestBody); // Alert foreach (var reading in readings) { var outlier = new Outlier { ClientId = new Guid(clientId), Value = reading.Value, TimeStamp = reading.TimeStamp }; // Send To ServiceBus topic await collector.AddAsync(outlier).ConfigureAwait(false); } return(new OkObjectResult(clientId)); }
public static bool Add(Outlier outlier) { StringBuilder sql = new StringBuilder(); sql.AppendFormat("insert into [Mes].[dbo].[T_Outlier] (MachineName," + "ParamName,Value,Upper,Lower,CollectedTime) values('{0}','{1}'," + "{2},{3},{4},'{5}')", outlier.MachineName, outlier.ParamName, outlier.Value, outlier.Upper, outlier.Lower, outlier.CollectedTime); // return DBHelper.ExecuteNonQuery(sql.ToString(), null); return(false); }
/// <summary> /// Gets the biggest outliers. /// </summary> /// <param name="model">The model.</param> /// <param name="weatherDependency">The weather dependency.</param> /// <param name="IDConsuptionPlace">The identifier consuption place.</param> /// <returns></returns> public ActionResult getBiggestOutliers(string model = "SUM", string weatherDependency = "000000", int IDConsuptionPlace = 1622) { const string MODEL_FIT = "model_fit"; const string DATA_PLACE = "data_place"; WeatherColumns wd = WeatherColumnConversion.stringToWeatherColumn(weatherDependency); string modelJson = getDailyModelTable(model).Content; am.modelChange(modelJson, MODEL_FIT, wd); string placeJson = getDailyPlaceTable(IDConsuptionPlace).Content; am.fitSeriesToModel(placeJson, MODEL_FIT, DATA_PLACE, wd); List <Outlier> outliers = new List <Outlier>(); //WeatherColumns nonerue = new WeatherColumns(new byte[] { 0, 0, 0, 0, 1, 1 }); outliers = am.findOutliers(DATA_PLACE, wd); outliers = am.FindLocalProperties(placeJson, modelJson, wd, outliers); //outliersList = outliers.OrderBy(o => o.outlierness.Max()); Outlier emptyOutlier = new Outlier() { IDDate = 20130101, outlierness = new List <double>(4), seriesNumber = -1, tStats = new List <double>(4) }; for (int i = 0; i < 8; i++) { emptyOutlier.outlierness.Add(0); emptyOutlier.tStats.Add(0); } foreach (Outlier ou in outliers) { log.Info(ou.seriesNumber + " :" + ou.outlierness[0]); } outliers.Insert(0, emptyOutlier); return(new ContentResult { Content = outliers.ToJSON(), ContentType = "application/json" }); }