You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从给定GA返回的JSON数据中获取用户量最高的前3个城市

实现方法

核心逻辑

  • 你拿到的GA返回结果是数组结构,有效数据存放在第一个元素的data.rows字段中
  • 每条row对应一个城市的统计数据:row.dimensions[0]为城市名称,row.metrics[0].values[0]为对应用户数(返回值为字符串类型,需转整型才能正确排序)
  • 按用户数降序排序后截取前3条即可,若需排除未识别的(not set)城市,遍历的时候加过滤规则即可

小提示:你提供的示例JSON存在语法瑕疵,rows数组末尾缺少闭合的],实际使用前需要先修正格式。

代码示例

Python 实现

# 假设GA返回的原始数据存储在ga_result变量中
# 提取所有城市和对应用户数
city_data = []
for row in ga_result[0]["data"]["rows"]:
    city = row["dimensions"][0]
    user_count = int(row["metrics"][0]["values"][0])
    # 若要排除(not set),可加判断 if city != "(not set)" 再存入
    city_data.append((user_count, city))

# 按用户数降序排序
city_data.sort(reverse=True, key=lambda x: x[0])

# 取前3位
top3_cities = city_data[:3]

# 输出结果
for count, name in top3_cities:
    print(f"城市:{name},用户数:{count}")

JavaScript 实现

// 假设GA返回的原始数据存储在gaResult变量中
const cityData = gaResult[0].data.rows.map(row => ({
  city: row.dimensions[0],
  userCount: parseInt(row.metrics[0].values[0])
  // 若要排除(not set),可加过滤:.filter(item => item.city !== "(not set)")
}))

// 按用户数降序排序
cityData.sort((a, b) => b.userCount - a.userCount)

// 取前3位
const top3Cities = cityData.slice(0, 3)

console.log(top3Cities)

示例数据运行结果

按你提供的JSON示例,直接运行后得到的前3名结果如下:

  • (not set):537
  • Sao Paulo:338
  • Belo Horizonte:163

如果过滤掉(not set)的未识别城市,前3名为:

  • Sao Paulo:338
  • Belo Horizonte:163
  • Rio de Janeiro:133

内容的提问来源于stack exchange,提问作者Lucas Bersano Matteo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:54:04