2014-05-09 2 views
1

Google 애널리틱스에서 API를 통해 가져오고 자하는 측정 기준과 측정 항목이 여러 개 있습니다. 측정 기준 : 측정 항목이 필요합니다. 당연히, 나는 사전이 이것에 대한 좋은 선택일지도 모른다고 생각했다. 타이핑을 최소화하고 가독성을 높이기 위해 내가 시도한 것입니다. 의도 한대로파이썬 : 사전을 만드는 더 좋은 방법이 있습니까?

def get_ga_kpi(start_date, end_date, dimensions='', sort='ga:pageviews'): 
    service = build('analytics', 'v3', http=http) 
    metrics = query_dict[dimensions] 
    if sort not in metrics: 
     sort = metrics[0] 
    data_query = service.data().ga().get(**{ 
     'ids': 'ga:#######', 
     'metrics': '%s' % (','.join(metrics)), 
     'dimensions': '%s' % (dimensions), 
     'start_date':'%s' % (start_date), 
     'end_date':'%s' % (end_date), 
     'sort': '-%s' % (sort) 
     }) 
    return feed['rows'] 

코드는 작동하지만,이 문제를 접근하는 더 나은 방법이 있는지 궁금 하군요 :

dim_dict = { 
    0:'', 
    1:'ga:searchUsed', 
    2:'ga:searchKeyword', 
    3:'ga:pageTitle', 
    4:'ga:operatingSystem', 
    5:'ga:goalPreviousStep3' 
    } 

metric_dict = { 
    1:'ga:sessions', 
    2:'ga:sessionDuration', 
    3:'bounceRate', 
    4:'pageviews', 
    5:'ga:searchSessions', 
    6:'ga:goalCompletionsAll' 
    } 

dim_metric_dict = { 
    0:[1,2,3,4,5,6], 
    1:[1,2,3,4,5,6], 
    2:[1,2,3,4,5,6], 
    3:[1,2,3,4,5,6], 
    4:[1,2,3,4,5,6], 
    5:[6] 
    } 

query_dict = {} 
for dim_key in dim_dict.keys(): 
    met = [] 
    for metric_key in dim_metric_dict[dim_key]: 
     met.append(metric_dict[metric_key]) 
    query_dict.update({dim_dict[dim_key]:met}) 

그럼, API 요청을하려면 다음 코드를 사용하고 있습니다. 어떤 의견을 주셔서 감사합니다!

+0

를 내가 무엇을보고에서, 그것은 가장 좋은 방법입니다 - 그렇지 않으면 당신은 당신이 압축을 –

+1

그것은 될 수있는 사양으로 YAML을 파싱 경우를 시도 할 수 있습니다 데이터 파일에 저장 - 소스에 포함될 많은 데이터입니다. –

+0

@Lattyware, "소스"가 의미하는 바를 정교하게 표현할 수 있습니까? 데이터 파일은 어떻게 생겼을까요? 나는 아직도 어휘를 배우고있다. – chungsangh

답변

1

이 방법이 훨씬 좋을지 모르겠지만 사전을 사용하여 모든 숫자를 입력하지 않도록 열거 할 수 있습니다.

예를 들어, dim_dict 건설이 될 수 :

dim_list = ['','ga:searchUsed','ga:searchKeyword','ga:pageTitle','ga:operatingSystem','ga:goalPreviousStep3'] 
    dim_dict = {key:value for (key,value) in enumerate(dim_list)} 
관련 문제