Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #конфиг
- data_test = {
- 'view_id_11111' : {'view_id': '11111',
- 'start_date': '2019-08-01',
- 'end_date': '2019-09-01',
- 'metrics': [{'expression': 'ga:sessions'}, {'expression':'ga:users'}],
- 'dimensions': [{'name': 'ga:country'}, {'name': 'ga:userType'}, {'name': 'ga:date'}]},
- 'view_id_2222' : {'view_id': '22222',
- 'start_date': '2019-08-01',
- 'end_date': '2019-09-01',
- 'metrics': [{'expression': 'ga:sessions'}, {'expression':'ga:users'}],
- 'dimensions': [{'name': 'ga:country'}, {'name': 'ga:date'}]},
- 'view_id_3333' : {'view_id': '3333',
- 'start_date': '2019-08-01',
- 'end_date': '2019-09-01',
- 'metrics': [{'expression': 'ga:sessions'}, {'expression':'ga:users'}],
- 'dimensions': [{'name': 'ga:country'}, {'name': 'ga:date'}]}
- }
- #пустой лист для ответов
- responses = []
- #парсю вложенный словарь data_test
- for k, v in data_test.items():
- sample_request = {
- 'viewId': v['view_id'],
- 'dateRanges': {
- 'startDate': v['start_date'],
- 'endDate': v['end_date']
- },
- 'metrics': v['metrics'],
- 'dimensions': v['dimensions']
- }
- #делаю запрос к апи ГА
- response = analytics.reports().batchGet(
- body={
- 'reportRequests': sample_request
- }).execute()
- #print_response_new(response) функция преобразования ответа в дф пандас ниже
- n_response=print_response_new(response)
- responses.append(n_response)
- #print_response_new(response) функция преобразования ответа в дф пандас
- def print_response_new(response):
- list = []
- for report in response.get('reports', []):
- columnHeader = report.get('columnHeader', {})
- dimensionHeaders = columnHeader.get('dimensions', [])
- metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
- rows = report.get('data', {}).get('rows', [])
- for row in rows:
- dict = {}
- dimensions = row.get('dimensions', [])
- dateRangeValues = row.get('metrics', [])
- for header, dimension in zip(dimensionHeaders, dimensions):
- dict[header] = dimension
- for i, values in enumerate(dateRangeValues):
- for metric, value in zip(metricHeaders, values.get('values')):
- if ',' in value or '.' in value:
- dict[metric.get('name')] = float(value)
- else:
- dict[metric.get('name')] = int(value)
- list.append(dict)
- df = pd.DataFrame(list)
- return df
Add Comment
Please, Sign In to add comment