一日一技:如何統計有多少人安裝了 GNE?

一日一技:如何統計有多少人安裝了 GNE?

一日一技:如何統計有多少人安裝了 GNE?

攝影:產品經理
產品經理笑得比草莓還好看
GNE 正式版上線已經一週了,我想知道有多少人使用 pip 安裝了 GNE,應該如何操做呢?api

這個時候能夠使用 google-cloud-bigquery來實現。瀏覽器

首先咱們須要先建立一個服務帳號密鑰,訪問:https://console.cloud.google.com/apis/credentials/serviceaccountkey
從服務賬號列表中,選擇新的服務賬號。
在服務賬號名稱字段中,輸入一個名稱。
從角色列表中,選擇BigQuery,在右邊彈出的多選列表中選中所有與 BigQuery 有關的內容。以下圖所示。
一日一技:如何統計有多少人安裝了 GNE?
下面密鑰類型選爲JSON,點擊「建立」,瀏覽器就會下載一個 JSOn 文件到你的電腦上。
而後,使用 pip 安裝一個名爲google-cloud-bigquery的第三方庫。ide

而後編寫代碼:函數

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格式的年月日,天天一張表。google

file.project字段用於篩選庫的名字,details.installer.name字段用於篩選安裝方式,這裏咱們只看經過pip安裝的。3d

運行這段代碼以前,咱們須要先設置一個環境變量GOOGLE_APPLICATION_CREDENTIALS='剛纔那個 JSOn 文件的絕對路徑'。設置完成之後運行代碼,就能把天天使用 pip 安裝 GNE 的人數顯示出來了。code

在上面代碼的 notify 函數中,我直接打印了 message 參數。但實際使用中,我把這個運算結果經過 Telegram 天天早上9點發送給我,運行效果以下圖所示:
一日一技:如何統計有多少人安裝了 GNE?
一日一技:如何統計有多少人安裝了 GNE?orm

相關文章
相關標籤/搜索