def dau(): cutoff = datetime.datetime.now() - datetime.timedelta(days=30) rows = [] cur_day = None cur_user_set = None def add_row(): if cur_day: rows.append({"date": cur_day, "count": len(cur_user_set)}) for action in ( Action.query(Action.date >= cutoff, Action.action == "viewResultFor1Sec") .order(-Action.date) .iter(projection=[Action.date, Action.user]) ): day = day_text_for_datetime(action.date) if day != cur_day: add_row() cur_day = day cur_user_set = set() cur_user_set.add(action.user) add_row() return rows
def dau(): cutoff = datetime.datetime.now() - datetime.timedelta(days=30) rows = [] cur_day = None cur_user_set = None def add_row(): if cur_day: rows.append({"date": cur_day, "count": len(cur_user_set)}) for action in Action.query( Action.date >= cutoff, Action.action == 'viewResultFor1Sec').order(-Action.date).iter( projection=[Action.date, Action.user]): day = day_text_for_datetime(action.date) if day != cur_day: add_row() cur_day = day cur_user_set = set() cur_user_set.add(action.user) add_row() return rows
def generate_fake_data(): for _ in xrange(10): a = Action(user=''.join([random.choice('abcdefg') for _ in xrange(10)]), action='viewResultFor1Sec') a.put()
def generate_fake_data(): for _ in xrange(10): a = Action(user="".join([random.choice("abcdefg") for _ in xrange(10)]), action="viewResultFor1Sec") a.put()