Guest User

Untitled

a guest
Aug 18th, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.99 KB | None | 0 0
  1. #конфиг
  2.  
  3. data_test = {
  4.    
  5.     'view_id_11111' : {'view_id': '11111',
  6.                            'start_date': '2019-08-01',
  7.                            'end_date': '2019-09-01',
  8.                            'metrics': [{'expression': 'ga:sessions'}, {'expression':'ga:users'}],
  9.                            'dimensions': [{'name': 'ga:country'}, {'name': 'ga:userType'}, {'name': 'ga:date'}]},
  10.    
  11.     'view_id_2222' : {'view_id': '22222',
  12.                            'start_date': '2019-08-01',
  13.                            'end_date': '2019-09-01',
  14.                            'metrics': [{'expression': 'ga:sessions'}, {'expression':'ga:users'}],
  15.                            'dimensions': [{'name': 'ga:country'}, {'name': 'ga:date'}]},
  16.    
  17.     'view_id_3333' : {'view_id': '3333',
  18.                            'start_date': '2019-08-01',
  19.                            'end_date': '2019-09-01',
  20.                            'metrics': [{'expression': 'ga:sessions'}, {'expression':'ga:users'}],
  21.                            'dimensions': [{'name': 'ga:country'}, {'name': 'ga:date'}]}
  22.  
  23.  
  24. }
  25.  
  26. #пустой лист для ответов
  27. responses = []
  28.  
  29. #парсю вложенный словарь data_test
  30. for k, v in data_test.items():
  31.    
  32.     sample_request = {
  33.         'viewId': v['view_id'],
  34.         'dateRanges': {
  35.             'startDate': v['start_date'],
  36.             'endDate': v['end_date']
  37.         },
  38.         'metrics': v['metrics'],
  39.         'dimensions': v['dimensions']
  40.     }
  41.     #делаю запрос к апи ГА
  42.     response = analytics.reports().batchGet(
  43.         body={
  44.             'reportRequests': sample_request
  45.         }).execute()
  46.     #print_response_new(response) функция преобразования ответа в дф пандас ниже
  47.     n_response=print_response_new(response)
  48.     responses.append(n_response)
  49.  
  50. #print_response_new(response) функция преобразования ответа в дф пандас
  51. def print_response_new(response):
  52.    
  53.     list = []
  54.  
  55.     for report in response.get('reports', []):
  56.         columnHeader = report.get('columnHeader', {})
  57.         dimensionHeaders = columnHeader.get('dimensions', [])
  58.         metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
  59.         rows = report.get('data', {}).get('rows', [])
  60.    
  61.     for row in rows:
  62.         dict = {}
  63.         dimensions = row.get('dimensions', [])
  64.         dateRangeValues = row.get('metrics', [])
  65.  
  66.        
  67.         for header, dimension in zip(dimensionHeaders, dimensions):
  68.             dict[header] = dimension
  69.  
  70.        
  71.         for i, values in enumerate(dateRangeValues):
  72.             for metric, value in zip(metricHeaders, values.get('values')):
  73.                 if ',' in value or '.' in value:
  74.                     dict[metric.get('name')] = float(value)
  75.                 else:
  76.                     dict[metric.get('name')] = int(value)
  77.  
  78.         list.append(dict)
  79.    
  80.     df = pd.DataFrame(list)
  81.     return df
Add Comment
Please, Sign In to add comment