前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一日一技:如何统计有多少人安装了 GNE?

一日一技:如何统计有多少人安装了 GNE?

作者头像
青南
发布2020-01-17 15:41:18
1.3K0
发布2020-01-17 15:41:18
举报
文章被收录于专栏:未闻Code

摄影:产品经理

产品经理笑得比草莓还好看

GNE 正式版上线已经一周了,我想知道有多少人使用 pip 安装了 GNE,应该如何操作呢?

这个时候可以使用 google-cloud-bigquery来实现。

  1. 首先我们需要先创建一个服务账号密钥,访问:https://console.cloud.google.com/apis/credentials/serviceaccountkey。
  2. 从服务帐号列表中,选择新的服务帐号。
  3. 在服务帐号名称字段中,输入一个名称。
  4. 从角色列表中,选择BigQuery,在右边弹出的多选列表中选中全部与 BigQuery 有关的内容。如下图所示。
  1. 下面密钥类型选为JSON,点击“创建”,浏览器就会下载一个 JSOn 文件到你的电脑上。

然后,使用 pip 安装一个名为google-cloud-bigquery的第三方库。

然后编写代码:

代码语言:javascript
复制
import datetime
from google.cloud import bigquery

def notify(message):
    print(message)


client = bigquery.Client()

query_job = client.query("""
SELECT
  COUNT(*) AS num_downloads,
  SUBSTR(_TABLE_SUFFIX, 1, 8) AS `date`
FROM `the-psf.pypi.downloads*`
WHERE
  file.project = 'gne'
  AND details.installer.name = 'pip'
  AND _TABLE_SUFFIX
    BETWEEN FORMAT_DATE(
      '%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 10 DAY))
    AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
GROUP BY `date`
ORDER BY `date` DESC
""")

results = query_job.result()  # Waits for job to complete.
msg = ''
for row in results:
    msg += "在{}日,有{}人使用pip安装gne".format(row.date, row.num_downloads)
    msg += '\n'
notify(msg)

这段代码的关键就是其中的 SQL 语句,pypi 上面所有的第三方库的安装信息都存放在了the-psf.pypi.downloads*这个库中,其中的星号是通配符,对应了%Y%m%d格式的年月日,每天一张表。

file.project字段用于筛选库的名字,details.installer.name字段用于筛选安装方式,这里我们只看通过pip安装的。

运行这段代码之前,我们需要先设置一个环境变量GOOGLE_APPLICATION_CREDENTIALS='刚才那个 JSOn 文件的绝对路径'。设置完成以后运行代码,就能把每天使用 pip 安装 GNE 的人数显示出来了。

在上面代码的 notify 函数中,我直接打印了 message 参数。但实际使用中,我把这个运算结果通过 Telegram 每天早上9点发送给我,运行效果如下图所示:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档