def query(): """ given {start_time, end_time, grid_id [optional]} return -> [{grid_id, volume}, ...] """ start_time = datetime.strptime(request.query.get('start_time'), '%Y-%m-%dT%H:%M:%SZ') end_time = datetime.strptime(request.query.get('end_time'), '%Y-%m-%dT%H:%M:%SZ') grid_id = request.query.get('grid_id') mg = MongoDB() mg.connect() print('querying grid volumes...') # if grid_id: # results = mg.group_by([{'$match': {'created_at': {'$gt': start_time, '$lt': end_time}, 'grid_id': grid_id}}, # {'$group': {'_id': '$grid_id', 'count': {'$sum': 1}}} # ]) # else: # results = mg.group_by([{'$match': {'created_at': {'$gt': start_time, '$lt': end_time}}}, # {'$group': {'_id': '$grid_id', 'count': {'$sum': 1}}} # ]) # group and count distinct user: results = mg.group_by([ {'$match': {'created_at': {'$gt': start_time, '$lt': end_time}}}, {'$group': {'_id':{ 'grid_id':'$grid_id', 'user_id':'$user_id' }, 'count': {'$sum': 1} } }, {'$group': {'_id': '$_id.grid_id', 'count': {'$sum': 1}}} ]) ret = [] for result in results: ret.append({'grid_id': result['_id'], 'volume': result['count']}) response.content_type = 'application/json' return json_dumps(ret, indent=2)
def all_grids(): mg = MongoDB() mg.connect() griddb = GridDB() print('querying grid volumes...') results = mg.group_by([{'$match': {'created_at': {'$gt': datetime.strptime('2012-10-15T20:00:02Z', '%Y-%m-%dT%H:%M:%SZ'), '$lt': datetime.strptime('2012-11-15T20:00:02Z', '%Y-%m-%dT%H:%M:%SZ')}}}]) # print(results) griddb.add(results) ret = Grid.get_raw_pandas_ts(results, 'D') STL.seasonal_decomposition(ret)
def single_grid(grid_id): mg = MongoDB() mg.connect() start_time = datetime.strptime('2012-10-15T20:00:02Z', '%Y-%m-%dT%H:%M:%SZ') end_time = datetime.strptime('2012-11-15T20:00:02Z', '%Y-%m-%dT%H:%M:%SZ') print('querying grid volumes...') # results = mg.group_by([{'$match': {'created_at': {'$gt': start_time, '$lt': end_time}, 'grid_id': grid_id}}, # {'$group': {'_id': '$grid_id', 'count': {'$sum': 1}}}]) results = mg.group_by([{'$match': {'created_at': {'$gt': datetime.strptime('2012-10-15T00:00:00Z', '%Y-%m-%dT%H:%M:%SZ'), '$lt': datetime.strptime('2012-11-15T00:00:00Z', '%Y-%m-%dT%H:%M:%SZ')}, 'grid_id': grid_id}}]) # print(results) print(results) ret = Grid.get_raw_pandas_ts(results, 'H') # print('------------') # print(ret) print(STL.seasonal_decomposition(ret))
print("tweets loaded") # for grid_id in grid_db.grid_cache: # print(grid_id, grid_db.grid_cache[grid_id].get_ts(grid_db.get_tweets(), 'H')) exit() mg = MongoDB() mg.connect() print("querying grid volumes...") results = mg.group_by( [ { "$match": { "created_at": { "$gt": datetime.strptime("2012-10-15T20:00:02Z", "%Y-%m-%dT%H:%M:%SZ"), "$lt": datetime.strptime("2012-10-22T20:00:02Z", "%Y-%m-%dT%H:%M:%SZ"), } } } ] ) # print(results) # results = mg.group_by([{'$match': {'created_at': {'$gt': datetime.strptime('2012-10-15T20:00:02Z', '%Y-%m-%dT%H:%M:%SZ'), # '$lt': datetime.strptime('2012-11-15T20:00:02Z', '%Y-%m-%dT%H:%M:%SZ')}, 'grid_id': '34013011500'}}]) # print(results) ret = Grid.get_raw_pandas_ts(results, "D") # print('ret: ', ret) # for result in Grid.get_ts(results, 'H'): # print(result[0]) # # print('result: ', result) # for tup in result: # obj = []