def fetch_dict_into_collection(conn_config,sql,key_name=0,oem_name='',category='',key='',sub_key='', \ table_name='raw_data',date='',db_conn=None): result_set=get_set_for_fetch_dict(conn_config,sql,key_name=key_name) helper_mysql.put_collection(collection=result_set,oem_name=oem_name,category=category,key=key,sub_key=sub_key, \ table_name=table_name,date=date,db_conn=db_conn) return len(result_set)
def stat_login(): global date_min,date_max,base_user_sets oem_name='All' stat_category='daily_active_user_retain' db_name='raw_data_login_trend' # you can change day range (30 days) date_max=helper_regex.date_add(helper_regex.get_date_str_now(),-1) date_min=helper_regex.date_add(date_max,-30) for i in range(1,10000): current_date=helper_regex.date_add(date_min,i) print 'current date',current_date if current_date>date_max: break # new user set from db (overall daily active user) new_user_set=gumi_helper_user.get_user_ids_created_by_date(current_date) # daily active user SG active_user_sg = helper_mysql.get_raw_collection_from_key(oem_name='Gumi_puzzle', \ category='user',key='live_log_by_country_daily_uid_unique_collection_id',sub_key='SG', \ date=current_date, \ table_name='raw_data',db_conn=None) # daily active user US active_user_us = helper_mysql.get_raw_collection_from_key(oem_name='Gumi_puzzle', \ category='user',key='live_log_by_country_daily_uid_unique_collection_id',sub_key='US', \ date=current_date, \ table_name='raw_data',db_conn=None) # daily active user PL active_user_pl = helper_mysql.get_raw_collection_from_key(oem_name='Gumi_puzzle', \ category='user',key='live_log_by_country_daily_uid_unique_collection_id',sub_key='PL', \ date=current_date, \ table_name='raw_data',db_conn=None) # daily active user Unknow IP active_user_zz = helper_mysql.get_raw_collection_from_key(oem_name='Gumi_puzzle', \ category='user',key='live_log_by_country_daily_uid_unique_collection_id',sub_key='ZZ', \ date=current_date, \ table_name='raw_data',db_conn=None) base_user_sets={ 'pt-new-user-':new_user_set, 'pt-new-user-SG':new_user_set & active_user_sg, 'pt-new-user-US':new_user_set & active_user_us, 'pt-new-user-PL':new_user_set & active_user_pl, 'pt-new-user-ZZ':new_user_set & active_user_zz } for k,user_set in base_user_sets.iteritems(): k=k.replace('*','') # calculate total print 'user base of',k,':',len(user_set) key='active_user_initial_%s_total_unique' % (k,) #sub_key = k[-2:] #if sub_key.find('-')>-1: # sub_key='' helper_mysql.put_raw_data(oem_name,stat_category,key,'',len(user_set),db_name,current_date) helper_mysql.put_collection(collection=user_set,oem_name=oem_name,category=stat_category, \ key=key,sub_key='',date=current_date,table_name=db_name) # calculate ranges=[(1,8,1),(1,30,7),(1,60,14)] for r in ranges: start=r[0] end=r[1] step=r[2] accumulative_logined_user={ 'pt':set([]), } for i in range(start,end,step): print start print end logined_user={ 'pt':set([]), } for day_delta in range(i,i+step): target_date=helper_regex.date_add(current_date,day_delta) collection = helper_mysql.get_raw_collection_from_key(oem_name='Gumi_puzzle', \ category='user',key='live_log_daily_uid_unique_collection_id',sub_key='', \ date=target_date, \ table_name='raw_data',db_conn=None) logined_user['pt'] = logined_user['pt'] | collection for k1,v1 in logined_user.iteritems(): accumulative_logined_user[k1] |= v1 for k,user_set in base_user_sets.iteritems(): k=k.replace('*','') logined_user_temp=set([]) if k.find('pt')>-1: logined_user_temp=logined_user['pt'] accumulative_logined_user_temp=accumulative_logined_user['pt'] base_user_logined_user= user_set & logined_user_temp key='daily_active_user_'+str(step)+'_day_logined_%s_total_unique' % (k,) helper_mysql.put_raw_data(oem_name,stat_category,key,i,len(base_user_logined_user),db_name,current_date) base_user_no_logined_user= user_set - accumulative_logined_user_temp key='daily_active_user_'+str(step)+'_day_no_logined_%s_total_unique' % (k,) helper_mysql.put_raw_data(oem_name,stat_category,key,i,len(base_user_no_logined_user),db_name,current_date) return