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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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"
            });
        }