diff options
Diffstat (limited to 'doc/AnalyticsConnect.py')
-rwxr-xr-x | doc/AnalyticsConnect.py | 182 |
1 files changed, 93 insertions, 89 deletions
diff --git a/doc/AnalyticsConnect.py b/doc/AnalyticsConnect.py index 10619532..bb473c52 100755 --- a/doc/AnalyticsConnect.py +++ b/doc/AnalyticsConnect.py @@ -21,112 +21,117 @@ VIEW_ID = '120207451' def initialize_analyticsreporting(): - """Initializes an analyticsreporting service object. - - Returns: - analytics an authorized analyticsreporting service object. - """ - - credentials = ServiceAccountCredentials.from_p12_keyfile( - SERVICE_ACCOUNT_EMAIL, KEY_FILE_LOCATION, scopes=SCOPES) - - http = credentials.authorize(httplib2.Http()) - - # Build the service object. - analytics = build('analytics', 'v4', http=http, discoveryServiceUrl=DISCOVERY_URI) - - return analytics - - -def get_report(analytics,start_date='2016-11-27',end_date='2016-11-27'): - # Use the Analytics Service Object to query the Analytics Reporting API V4. - return analytics.reports().batchGet( - body={ - 'reportRequests': [ - { - 'viewId': VIEW_ID, - 'dateRanges': [{'startDate': start_date, 'endDate': end_date}], - 'metrics': [{'expression': 'ga:metric1','formattingType':'CURRENCY'}, - {'expression': 'ga:metric2','formattingType':'CURRENCY'}, - {'expression': 'ga:metric3','formattingType':'CURRENCY'}, - {'expression': 'ga:totalEvents'}], - 'dimensions': [{"name":"ga:eventAction"},{"name": "ga:dimension1"},{"name": "ga:dimension2"},{"name": "ga:dimension3"},{"name": "ga:dimension4"}], - 'pageSize': 10000 + """Initializes an analyticsreporting service object. + + Returns: + analytics an authorized analyticsreporting service object. + """ + + credentials = ServiceAccountCredentials.from_p12_keyfile( + SERVICE_ACCOUNT_EMAIL, KEY_FILE_LOCATION, scopes=SCOPES) + + http = credentials.authorize(httplib2.Http()) + + # Build the service object. + analytics = build('analytics', 'v4', http=http, discoveryServiceUrl=DISCOVERY_URI) + + return analytics + + +def get_report(analytics, start_date='2016-11-27', end_date='2016-11-27'): + # Use the Analytics Service Object to query the Analytics Reporting API V4. + return analytics.reports().batchGet( + body={ + 'reportRequests': [ + { + 'viewId': VIEW_ID, + 'dateRanges': [{'startDate': start_date, 'endDate': end_date}], + 'metrics': [{'expression': 'ga:metric1', 'formattingType': 'CURRENCY'}, + {'expression': 'ga:metric2', 'formattingType': 'CURRENCY'}, + {'expression': 'ga:metric3', 'formattingType': 'CURRENCY'}, + {'expression': 'ga:totalEvents'}], + 'dimensions': [{"name": "ga:eventAction"}, {"name": "ga:dimension1"}, {"name": "ga:dimension2"}, + {"name": "ga:dimension3"}, + {"name": "ga:date"}, {"name": "ga:hour"}, {"name": "ga:minute"}], + 'pageSize': 10000 + } + ] } - ] - } - ).execute() + ).execute() def print_response(response): - """Parses and prints the Analytics Reporting API V4 response""" - - 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', []) + """Parses and prints the Analytics Reporting API V4 response""" - for row in rows: - dimensions = row.get('dimensions', []) - dateRangeValues = row.get('metrics', []) + 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 header, dimension in zip(dimensionHeaders, dimensions): - print header + ': ' + dimension + for row in rows: + dimensions = row.get('dimensions', []) + dateRangeValues = row.get('metrics', []) - for i, values in enumerate(dateRangeValues): - print 'Date range (' + str(i) + ')' - for metricHeader, value in zip(metricHeaders, values.get('values')): - print metricHeader.get('name') + ': ' + value + for header, dimension in zip(dimensionHeaders, dimensions): + print header + ': ' + dimension + for i, values in enumerate(dateRangeValues): + print 'Date range (' + str(i) + ')' + for metricHeader, value in zip(metricHeaders, values.get('values')): + print metricHeader.get('name') + ': ' + value def export_to_tuples(response): - # counter = 0 - setups = set() - df = {} - for report in response.get('reports', []): - rows = report.get('data', {}).get('rows', []) - for row in rows: - data = [] - dimensions = row.get('dimensions', []) - # print 'this is dimensions' - # print dimensions - data.append(dimensions[1]) #test name - data.append(dimensions[2]) # state - # data.append(dimensions[3]) # setup - data.append(dimensions[4]) # test_type - dateRangeValues = row.get('metrics', []) - value = dateRangeValues[0].get('values',[])[0] #MPPS - golden_min = dateRangeValues[0].get('values',[])[1] #golden min - golden_max = dateRangeValues[0].get('values',[])[2] #golden max - data.append(value) - data.append(golden_min) - data.append(golden_max) - if dimensions[3] in setups: - if dimensions[1] in df[dimensions[3]]: - df[dimensions[3]][dimensions[1]].append(tuple(data)) - else: - df[dimensions[3]][dimensions[1]] = [tuple(data)] - else: - df[dimensions[3]] = {} - df[dimensions[3]][dimensions[1]] = [tuple(data)] - setups.add(dimensions[3]) - # print 'counter is: %d' % counter - return df, setups + # counter = 0 + setups = set() + df = {} + for report in response.get('reports', []): + rows = report.get('data', {}).get('rows', []) + for row in rows: + data = [] + dimensions = row.get('dimensions', []) + # print 'this is dimensions' + # print dimensions + data.append(dimensions[1]) # test name + data.append(dimensions[2]) # state + # data.append(dimensions[3]) # setup + data.append(dimensions[4]) # date in YYYYMMDD format + data.append(dimensions[5]) # hour + data.append(dimensions[6]) # minute + dateRangeValues = row.get('metrics', []) + value = dateRangeValues[0].get('values', [])[0] # MPPS + golden_min = dateRangeValues[0].get('values', [])[1] # golden min + golden_max = dateRangeValues[0].get('values', [])[2] # golden max + data.append(value) + # counter += 1 + data.append(golden_min) + data.append(golden_max) + data.append(dimensions[0]) # build id + if dimensions[3] in setups: + if dimensions[1] in df[dimensions[3]]: + df[dimensions[3]][dimensions[1]].append(tuple(data)) + else: + df[dimensions[3]][dimensions[1]] = [tuple(data)] + else: + df[dimensions[3]] = {} + df[dimensions[3]][dimensions[1]] = [tuple(data)] + setups.add(dimensions[3]) + # print 'counter is: %d' % counter + return df, setups def main(): - analytics = initialize_analyticsreporting() - response = get_report(analytics) - df, setups = export_to_tuples(response) - # pprint(df) - return df,setups + analytics = initialize_analyticsreporting() + response = get_report(analytics) + df, setups = export_to_tuples(response) + # pprint(df) + return df, setups + if __name__ == '__main__': main() - """ response structure (when fetched with "export to tuples"): @@ -188,4 +193,3 @@ response structure (when fetched with "export to tuples"): """ - |