已获取设备报告,如何从Google Analytics API优雅获取会话占比?
优雅获取GA设备会话占比的两种方案
嘿,很高兴看到你已经成功拿到设备类别的会话数据了!针对你问的「有没有优雅方式获取基于总会话数的会话占比」,我整理了两种可行的路子:
方案一:手动计算(无需额外GA配置)
这是最直接的方式,先单独查询一次总会话数,再遍历现有结果计算占比。代码示例如下:
// 第一步:获取总会话数 $totalSessionsQuery = Analytics::performQuery( $period, 'ga:sessions', ['metrics' => 'ga:sessions'] ); $totalSessions = (int)$totalSessionsQuery->rows[0][0]; // 第二步:遍历已有设备数据,计算占比 foreach ($analyticsData->rows as &$row) { $deviceSessions = (int)$row[1]; // 对应metrics里的ga:sessions位置 $percentage = number_format(($deviceSessions / $totalSessions) * 100, 2); $row[] = "{$percentage}%"; // 把占比追加到结果数组中 }
这种方式的好处是不用动GA后台配置,代码逻辑清晰,适合临时需求或者不想折腾后台的场景。
方案二:利用GA计算指标(更优雅的长期方案)
如果你的GA账户支持计算指标(Calculated Metrics),可以预先在后台创建一个自定义指标,让API直接返回占比数据,省去手动计算的步骤:
1. 在GA后台创建计算指标
- 进入GA管理界面,找到「视图」下的「计算指标」
- 新建一个计算指标,名称比如「会话占比」,公式设置为:
ga:sessions / ga:totalSessions * 100 - 保存后,这个指标会有一个类似
ga:sessionPercentage的标识符(具体以后台生成的为准)
2. 在API查询中直接使用该指标
修改你的查询代码,把自定义指标加入metrics列表:
$analyticsData = Analytics::performQuery( $period, 'ga:deviceCategory', [ 'max-results' => 10, 'metrics' => 'ga:sessions, ga:avgSessionDuration, ga:sessionPercentage', 'dimensions' => 'ga:deviceCategory', 'sort'=>'-ga:sessions' ] );
这样返回的结果里就会直接包含每个设备类别的会话占比,不用再手动计算,非常适合长期复用的场景。
总结
- 临时需求选手动计算,快速实现;
- 长期使用选计算指标,更优雅省心。
内容的提问来源于stack exchange,提问作者Richard Frank
相关产品推荐
相关产品推荐

