2016-01-08 7 views
0

Я использую этот код для запроса APIОшибка с помощью показателей, перечисленных в Метрики Google, и размеры

function getResults(&$analytics, $profileId) { 
    // Calls the Core Reporting API and queries for the number of sessions 
    // for the last 30 days. 
    return $analytics->data_ga->get(
     'ga:' . $profileId, 
     '30daysAgo', 
     'today', 
     'ga:sessionCount,ga:sessionDurationBucket,ga:users,ga:percentNewSessions,ga:bounceRate,ga:pageviews'); 
} 

я получаю эту ошибку при выполнении кода

Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga%3A114460017&start-date=30daysAgo&end-date=today&metrics=ga%3AsessionCount%2Cga%3AsessionDurationBucket%2Cga%3Ausers%2Cga%3ApercentNewSessions%2Cga%3AbounceRate%2Cga%3Apageviews : (400) Unknown metric(s): ga:sessionCount, ga:sessionDurationBucket

кто-нибудь испытать? Я не понимаю, почему он не признает эти показатели, когда она указана

https://developers.google.com/analytics/devguides/reporting/core/dimsmets#view=detail&group=user&jump=ga_sessioncount

ответ

1

Если посмотреть более внимательно в эту документацию, вы увидите, что число сеансов не является метрикой, это измерение. Причина в том, что вы хотите иметь возможность выполнять разбивку показателей по количеству сеансов (например, «показывать среднюю продолжительность сеансов для пользователей с 3 сеансами»), и для этого вам нужны категориальные данные.

Даже если вы игнорируете заголовок столбца (не особо отличительного) в оглавлении (ga: sessionCount находится в столбце «размеры»), то факт, что тип данных является строкой, будет мертвой поддачей. Метрики всегда являются числами. Размеры всегда являются строками, даже если они иногда выглядят как цифры.

То же самое касается ga: sessionDurationBucket.

Посмотрите на этой example from the documentation, чтобы увидеть, как размеры передаются в запрос через массив, который содержит дополнительные параметры:

private function queryCoreReportingApi() { 
    $optParams = array(
     'dimensions' => 'ga:source,ga:keyword', 
     'sort' => '-ga:sessions,ga:source', 
     'filters' => 'ga:medium==organic', 
     'max-results' => '25'); 

    return $service->data_ga->get(
     TABLE_ID, 
     '2010-01-01', 
     '2010-01-15', 
     'ga:sessions', 
     $optParams); 
} 

Вы должны были бы построить аналогичный $ optParams массив:

$optParams = array(
      'dimensions' => 'ga:sessionCount,ga:sessionDurationBucket' 
      '); 

и передать его на ваш запрос:

return $analytics->data_ga->get(
     'ga:' . $profileId, 
     '30daysAgo', 
     'today', 
     $optParams, 
     'ga:users,ga:percentNewSessions,ga:bounceRate,ga:pageviews'); 
} 

и удалите размеры из списка показателей.

КПП. Google имеет wonderful documentation page о различиях между измерениями и метрикой и о том, как они используются в отчетах.

+0

Когда я печатаю результаты, как я это сделаю? В настоящее время я делаю это так: $ rows = $ results-> getRows(); $ посещения = $ rows [0] [0]; $ visitDuration = $ rows [0] [1]; $ avgVisitLength = $ посещения/$ visitDuration; $ uniqueVisitor = $ rows [0] [2]; $ percentNewSession = $ rows [0] [3]; $ bounceRate = $ rows [0] [4]; $ avgDuration = $ rows [0] [5]; $ pageView = $ rows [0] [6]; $ pagesPerVisit = $ pageView/$ посещения; но теперь данные все испорчены, как я могу назвать результаты для измерений? – onebadbaggins

+0

жаль, что я не могу понять, как добавить комментарий с кодом – onebadbaggins

+0

Ваши строки не будут начинаться со значений для измерений, за которыми следуют метрики для этого измерения (так что если вы укажете два измерения в своем запросе, пользователи не будут index $ rows [0] [2] - это количество пользователей, которые разделяют определенные значения для выбранных измерений). –