public ReturnerRetentionDataPoints CalculateCURR(DateTime ProcessDate) { ReturnerRetentionDataPoints retentionDate = new ReturnerRetentionDataPoints(); List<string> cont = GetContinuingUserIdsfrom8to14DaysAgoRange(ProcessDate); List<string> returningCont = GetReturningContinuingUserIdsZeroToSixRange(ProcessDate); List<string> intersection = cont.Intersect(returningCont).ToList(); if (intersection.Count > 0) { decimal percentage = Decimal.Divide(intersection.Count, cont.Count); percentage = Decimal.Multiply(percentage, 100); percentage = Decimal.Round(percentage, 2); percentage = Decimal.Floor(percentage); retentionDate.RecordDate = ProcessDate.Date; retentionDate.CountPreviousWeek = cont.Count; retentionDate.ReturningContinuing = intersection.Count; retentionDate.Percentage = percentage; } return retentionDate; }
public ReturnerRetentionDataPoints CalculateNURR(DateTime ProcessDate) { ReturnerRetentionDataPoints retentionDate = new ReturnerRetentionDataPoints(); List<string> lastWeek = GetReturningNurs(ProcessDate); List<string> newUsers = GetNewUsersUserIdsFrom8to14DaysAgoRange(ProcessDate); List<string> intersection = newUsers.Intersect(lastWeek).ToList(); if (intersection.Count > 0) { decimal percentage = Decimal.Divide(intersection.Count, newUsers.Count); percentage = Decimal.Multiply(percentage, 100); percentage = Decimal.Round(percentage, 2); percentage = Decimal.Floor(percentage); retentionDate.RecordDate = ProcessDate.Date; retentionDate.CountPreviousWeek = newUsers.Count; retentionDate.ReturningContinuing = intersection.Count; retentionDate.Percentage = percentage; } return retentionDate; }
public ReturnerBuckets Get() { Get7DayTotalCountUsers(); string query = String.Format(@"SELECT * FROM {1} where DATE(Date) = DATE('{0}')", Date.ToString("yyyy/MM/dd"), RETENTION_RETURNER_VIEW_TABLE); try { DataTable singleRetentionRow = DBManager.Instance.Query(Datastore.Monitoring, query); NURR = new ReturnerRetentionDataPoints() { RecordDate = Date, startRange = Date.AddDays(-6), Last7DaysTotalCount = AllUserIdsLast7Days.Count, Type = RetentionCohortType.NewUser, }; CURR = new ReturnerRetentionDataPoints() { RecordDate = Date, startRange = Date.AddDays(-6), Last7DaysTotalCount = AllUserIdsLast7Days.Count, Type = RetentionCohortType.ContinuingUser }; RURR = new ReturnerRetentionDataPoints() { RecordDate = Date, startRange = Date.AddDays(-6), Last7DaysTotalCount = AllUserIdsLast7Days.Count, Type = RetentionCohortType.ReactivatedUser }; if (singleRetentionRow.Rows.Count > 0) { DataRow c = singleRetentionRow.Rows[0]; if (c["NewUserCohort"] != DBNull.Value) { NURR.RelevantMetricProcessedCount = c.Field<int>("NewUserCohort"); } if (c["ContinuingUsersCohort"] != DBNull.Value) { CURR.RelevantMetricProcessedCount = c.Field<int>("ContinuingUsersCohort"); } if (c["ReactivatedUsersCohort"] != DBNull.Value) { RURR.RelevantMetricProcessedCount = c.Field<int>("ReactivatedUsersCohort"); } if (c["NURR"] != DBNull.Value) { NURR.Percentage = c.Field<decimal>("NURR"); } if (c["CURR"] != DBNull.Value) { CURR.Percentage = c.Field<decimal>("CURR"); } if (c["RURR"] != DBNull.Value) { RURR.Percentage = c.Field<decimal>("RURR"); } } else { CalculateNURR(); CalculateCURR(); CalculateRURR(); } } catch (Exception ex) { Logger.Instance.Error("Returners Get Problems" + Date.ToString()); } return this; }