Exemple #1
0
        public async Task <IEnumerable <QueryGroupValue <IDictionary <string, string> > > > MultiAnalysis(string collection, IEnumerable <MultiAnalysisParam> analysisParams, QueryTimeframe timeframe = null, IEnumerable <QueryFilter> filters = null, string groupby = "", string timezone = "")
        {
            var jObs = analysisParams.Select(x =>
                                             new JProperty(x.Label, JObject.FromObject(new { analysis_type = x.Analysis, target_property = x.TargetProperty })));
            var parmsJson = JsonConvert.SerializeObject(new JObject(jObs), Formatting.None, new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore
            });

            var parms = new Dictionary <string, string>();

            parms.Add(KeenConstants.QueryParmEventCollection, collection);
            parms.Add(KeenConstants.QueryParmTimeframe, timeframe.ToSafeString());
            parms.Add(KeenConstants.QueryParmTimezone, timezone);
            parms.Add(KeenConstants.QueryParmFilters, filters == null ? "" : JArray.FromObject(filters).ToString());
            parms.Add(KeenConstants.QueryParmGroupBy, groupby);
            parms.Add(KeenConstants.QueryParmAnalyses, parmsJson);

            var reply = await KeenWebApiRequest(KeenConstants.QueryMultiAnalysis, parms);

            var result = new List <QueryGroupValue <IDictionary <string, string> > >();

            foreach (JObject i in reply.Value <JArray>("result"))
            {
                var    d      = new Dictionary <string, string>();
                string grpVal = "";
                foreach (JProperty p in i.Values <JProperty>())
                {
                    if (p.Name == groupby)
                    {
                        grpVal = (string)p.Value;
                    }
                    else
                    {
                        d.Add(p.Name, (string)p.Value);
                    }
                }
                var qg = new QueryGroupValue <IDictionary <string, string> >(d, grpVal);
                result.Add(qg);
            }

            return(result);
        }
Exemple #2
0
        public async Task <IEnumerable <QueryGroupValue <IDictionary <string, string> > > > MultiAnalysis(string collection, IEnumerable <MultiAnalysisParam> analysisParams, IQueryTimeframe timeframe = null, IEnumerable <QueryFilter> filters = null, string groupby = "", string timezone = "")
        {
            var parms = new Dictionary <string, string>();

            parms.Add(KeenConstants.QueryParmEventCollection, collection);
            parms.Add(KeenConstants.QueryParmTimeframe, timeframe.ToSafeString());
            parms.Add(KeenConstants.QueryParmTimezone, timezone);
            parms.Add(KeenConstants.QueryParmFilters, filters == null ? "" : JArray.FromObject(filters).ToString());
            parms.Add(KeenConstants.QueryParmGroupBy, groupby);
            parms.Add(KeenConstants.QueryParmAnalyses, SerializeMultiAnalysisQueryParameter(analysisParams));

            var reply = await KeenWebApiRequest(KeenConstants.QueryMultiAnalysis, parms).ConfigureAwait(false);

            var result = new List <QueryGroupValue <IDictionary <string, string> > >();

            foreach (JObject i in reply.Value <JArray>("result"))
            {
                var    d      = new Dictionary <string, string>();
                string grpVal = "";
                foreach (JProperty p in i.Values <JProperty>())
                {
                    if (p.Name == groupby)
                    {
                        grpVal = (string)p.Value;
                    }
                    else
                    {
                        d.Add(p.Name, (string)p.Value);
                    }
                }
                var qg = new QueryGroupValue <IDictionary <string, string> >(d, grpVal);
                result.Add(qg);
            }

            return(result);
        }