QueryMultiAnalysisGroupAsync() public method

Run multiple types of analysis over the same data, grouped by the specified field.
public QueryMultiAnalysisGroupAsync ( string collection, IEnumerable analysisParams, QueryTimeframe timeframe = null, IEnumerable filters = null, string groupBy = "", string timezone = "" ) : string>>>>.Task
collection string Name of event collection to query.
analysisParams IEnumerable Defines the multiple types of analyses to perform.
timeframe QueryTimeframe Specifies window of time from which to select events for analysis. May be absolute or relative.
filters IEnumerable Filter to narrow down the events used in analysis. Optional, may be null.
groupBy string Name of a collection field by which to group results.
timezone string The timezone to use when specifying a relative timeframe. Optional, may be blank.
return string>>>>.Task
Example #1
0
        public async void MultiAnalysis_ValidGroupBy_Success()
        {
            var client = new KeenClient(settingsEnv);
            var groupby = "field1";
            IEnumerable<MultiAnalysisParam> param = new List<MultiAnalysisParam>() 
            { 
                new MultiAnalysisParam("first", MultiAnalysisParam.Metric.Count()),
                new MultiAnalysisParam("second", MultiAnalysisParam.Metric.Maximum("field1")),
                new MultiAnalysisParam("third", MultiAnalysisParam.Metric.Minimum("field1")),
            };
            var dict = new Dictionary<string, string>();
            dict.Add("second", "fff");
            dict.Add("third", "aaa");
            dict.Add("first", "123");
            dict.Add(groupby, "123");
            IEnumerable<QueryGroupValue<IDictionary<string, string>>> result = new List<QueryGroupValue<IDictionary<string, string>>>()
            {
                new QueryGroupValue<IDictionary<string,string>>(dict, groupby),
                new QueryGroupValue<IDictionary<string,string>>(dict, groupby),
            };

            Mock<IQueries> queryMock = null;
            if (UseMocks)
            {
                queryMock = new Mock<IQueries>();
                queryMock.Setup(m => m.MultiAnalysis(
                        It.Is<string>(c => c == testCol),
                        It.Is<IEnumerable<MultiAnalysisParam>>(p => p == param),
                        It.Is<QueryTimeframe>(t => t == null),
                        It.Is<IEnumerable<QueryFilter>>(f => f == null),
                        It.Is<string>(g => g == groupby),
                        It.Is<string>(tz => tz == "")
                      ))
                    .Returns(Task.FromResult(result));

                client.Queries = queryMock.Object;
            }

            var reply = (await client.QueryMultiAnalysisGroupAsync(testCol, param, null, null, groupby, "")).ToList();

            if (null != queryMock)
            {
                Assert.AreEqual(reply.Count(), result.Count());
                queryMock.VerifyAll();
            }
        }