コード例 #1
0
        /// <summary>
        /// Returns a grouping of achieved goals against visits per variation
        /// </summary>
        /// <param name="goalItem"></param>
        /// <param name="testItem"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns></returns>
        public List <VisitVariation> GetAchievedGoals(Item goalItem, Item testItem, DateTime startDate, DateTime endDate)
        {
            if (goalItem.IsNull() || testItem.IsNull())
            {
                return(new List <VisitVariation>());
            }

            try
            {
                using (AnalyticsDataContext AnalyticsDataContext = new AnalyticsDataContext(ConfigurationManager.ConnectionStrings["analytics"].ConnectionString))
                {
                    //how many people saw the test
                    string visitQuery = "select count(*) as VisitCount, dbo.fn_abc_hexadecimal(p.testValues) AS TestValues from pages p " +
                                        "where p.testSetId = {0} and p.[datetime] >= {1} and p.[datetime] <= {2} " +
                                        "group by testValues";

                    //how many people performed action (EV) against the test?
                    string evQuery = "select count(*) as AchievedGoalCount, dbo.fn_abc_hexadecimal(testValues) as TestValues from " +
                                     "(" +
                                     "select p.itemId, p.[DateTime], (select distinct(testValues) from pages where testSetId = {0} and visitId = p.visitId) as testValues " +
                                     "from pages p " +
                                     "inner join pageEvents pe on pe.pageId = p.pageId " +
                                     "where pe.pageEventDefinitionId = {1} and p.[datetime] >= {2} and p.[datetime] <= {3} " +
                                     ") t " +
                                     "where testValues is not null " +
                                     "group by testValues";

                    //get page hits
                    var visitResults = AnalyticsDataContext.ExecuteQuery <VisitVariation>(visitQuery, testItem.ID.RemoveBrackets(), startDate, endDate).ToList();
                    if (visitResults.Count == 0)
                    {
                        return(new List <VisitVariation>());
                    }

                    //get hits that hit goal
                    var engagementResults = AnalyticsDataContext.ExecuteQuery <VisitVariation>(evQuery, testItem.ID.RemoveBrackets(), goalItem.ID.RemoveBrackets(), startDate, endDate).ToList();

                    List <VisitVariation> variations = new List <VisitVariation>();
                    foreach (VisitVariation variationResult in visitResults)
                    {
                        VisitVariation result        = variationResult;
                        Int32          achievedCount = engagementResults.Where(x => x.TestValues == result.TestValues).Select(x => x.AchievedGoalCount).FirstOrDefault();
                        result.AchievedGoalCount = achievedCount;

                        variations.Add(result);
                    }

                    return(variations);
                }
            }
            catch (Exception e)
            {
                Logger.Error("Page Statistics Context - Could not retrieve the achieved goals");
                Logger.Error(e.Message);
                Logger.Error(e.InnerException);
            }

            return(new List <VisitVariation>());
        }
コード例 #2
0
        /// <summary>
        /// Retrieves goals met during visit
        /// </summary>
        /// <param name="visitId"></param>
        public List <VisitGoal> GetGoalsMetDuringVisit(Guid visitId)
        {
            try
            {
                using (AnalyticsDataContext AnalyticsDataContext = new AnalyticsDataContext(ConfigurationManager.ConnectionStrings["analytics"].ConnectionString))
                {
                    string sqlCommandText = "SELECT " +
                                            "pe.pageEventDefinitionId as GoalId, " +
                                            "ped.Name as GoalName, " +
                                            "pe.DateTime as GoalMetDate, " +
                                            "value as EngagementValue " +
                                            "FROM pageEvents pe " +
                                            "inner join PageEventDefinitions ped on pe.pageEventDefinitionId = ped.pageEventDefinitionId " +
                                            "where " +
                                            "isgoal = 1 " +
                                            "and pe.visitId = {0}";

                    //get page hits
                    var visitResults = AnalyticsDataContext.ExecuteQuery <VisitGoal>(sqlCommandText, visitId).ToList();
                    if (visitResults.Count == 0)
                    {
                        return(new List <VisitGoal>());
                    }

                    return(visitResults);
                }
            }
            catch (Exception e)
            {
                Logger.Error("Page Statistics Context - Could not retrieve goals met during visit");
                Logger.Error(e.Message);
                Logger.Error(e.InnerException);
            }

            return(new List <VisitGoal>());
        }
コード例 #3
0
        /// <summary>
        /// Returns a grouping of achieved goals against visits per variation
        /// </summary>
        /// <param name="goalItem"></param>
        /// <param name="testItem"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns></returns>
        public List<VisitVariation> GetAchievedGoals(Item goalItem, Item testItem, DateTime startDate, DateTime endDate)
        {
            if (goalItem.IsNull() || testItem.IsNull())
            {
                return new List<VisitVariation>();
            }

            try
            {
                using (AnalyticsDataContext AnalyticsDataContext = new AnalyticsDataContext(ConfigurationManager.ConnectionStrings["analytics"].ConnectionString))
                {
                    //how many people saw the test
                    string visitQuery = "select count(*) as VisitCount, dbo.fn_abc_hexadecimal(p.testValues) AS TestValues from pages p " +
                                        "where p.testSetId = {0} and p.[datetime] >= {1} and p.[datetime] <= {2} " +
                                        "group by testValues";

                    //how many people performed action (EV) against the test?
                    string evQuery = "select count(*) as AchievedGoalCount, dbo.fn_abc_hexadecimal(testValues) as TestValues from " +
                                        "(" +
                                            "select p.itemId, p.[DateTime], (select distinct(testValues) from pages where testSetId = {0} and visitId = p.visitId) as testValues " +
                                            "from pages p " +
                                                "inner join pageEvents pe on pe.pageId = p.pageId " +
                                            "where pe.pageEventDefinitionId = {1} and p.[datetime] >= {2} and p.[datetime] <= {3} " +
                                        ") t " +
                                    "where testValues is not null " +
                                    "group by testValues";

                    //get page hits
                    var visitResults = AnalyticsDataContext.ExecuteQuery<VisitVariation>(visitQuery, testItem.ID.RemoveBrackets(), startDate, endDate).ToList();
                    if (visitResults.Count == 0)
                    {
                        return new List<VisitVariation>();
                    }

                    //get hits that hit goal
                    var engagementResults = AnalyticsDataContext.ExecuteQuery<VisitVariation>(evQuery, testItem.ID.RemoveBrackets(), goalItem.ID.RemoveBrackets(), startDate, endDate).ToList();

                    List<VisitVariation> variations = new List<VisitVariation>();
                    foreach (VisitVariation variationResult in visitResults)
                    {
                        VisitVariation result = variationResult;
                        Int32 achievedCount = engagementResults.Where(x => x.TestValues == result.TestValues).Select(x => x.AchievedGoalCount).FirstOrDefault();
                        result.AchievedGoalCount = achievedCount;

                        variations.Add(result);
                    }

                    return variations;
                }
            }
            catch (Exception e)
            {
                Logger.Error("Page Statistics Context - Could not retrieve the achieved goals");
                Logger.Error(e.Message);
                Logger.Error(e.InnerException);
            }

            return new List<VisitVariation>();
        }
コード例 #4
0
        /// <summary>
        /// Retrieves goals met during visit
        /// </summary>
        /// <param name="visitId"></param>
        public List<VisitGoal> GetGoalsMetDuringVisit(Guid visitId)
        {
            try
            {
                using (AnalyticsDataContext AnalyticsDataContext = new AnalyticsDataContext(ConfigurationManager.ConnectionStrings["analytics"].ConnectionString))
                {
                    string sqlCommandText = "SELECT " +
                                                "pe.pageEventDefinitionId as GoalId, " +
                                                "ped.Name as GoalName, " +
                                                "pe.DateTime as GoalMetDate, " +
                                                "value as EngagementValue " +
                                            "FROM pageEvents pe " +
                                                "inner join PageEventDefinitions ped on pe.pageEventDefinitionId = ped.pageEventDefinitionId " +
                                            "where " +
                                                "isgoal = 1 " +
                                                "and pe.visitId = {0}";

                    //get page hits
                    var visitResults = AnalyticsDataContext.ExecuteQuery<VisitGoal>(sqlCommandText, visitId).ToList();
                    if (visitResults.Count == 0)
                    {
                        return new List<VisitGoal>();
                    }

                    return visitResults;
                }
            }
            catch (Exception e)
            {
                Logger.Error("Page Statistics Context - Could not retrieve goals met during visit");
                Logger.Error(e.Message);
                Logger.Error(e.InnerException);
            }

            return new List<VisitGoal>();
        }