在 5 秒內分析 500 億維基百科的綜合瀏覽量(BigQuery 初學者教程)
嗨,大家好! 這是我喜歡為 BigQuery 開始的人們執行的演示。所以讓我們執行一些簡單的查詢來幫助你入門。
建立
你需要一個 Google Cloud 專案:
- 轉到 http://bigquery.cloud.google.com/ 。
- 如果它告訴你建立專案,請按照連結建立專案,然後建立專案。
- 回到 http://bigquery.cloud.google.com/ 。
筆記:
- 你不需要信用卡。每個人每個月都可獲得 1TB 的免費分析。
- BigQuery 每個查詢收費。在執行查詢之前,你將能夠看到每個查詢的成本。
我們來查詢一下
- 在 https://bigquery.cloud.google.com/table/fh-bigquery:wikipedia.pagecounts_201505 上查詢 2015 年 5 月的綜合瀏覽量
注意 :Google 使用最高安全標準(PCI,ISO,HIPAA,SOC 等)保護你的資料,但如果你願意,也可以輕鬆共享資料 - 就像我在這裡所做的那樣。 https://cloud.google.com/security/
-
該表有 5 列: datehour 語言標題請求 content_size 。他們基本上說這個語言的維基百科頁面在這個時刻有這麼多請求。
-
該表有近 60 億行(379 GB 的資料)。
-
要了解維基百科在 5 月期間有多少次綜合瀏覽量,你可以累計所有 60 億行請求:
SELECT SUM(requests) FROM [fh-bigquery:wikipedia.pagecounts_201505]
-
你注意到它有多快嗎? (1.8 秒過去了,為我處理了 43.1 GB)
-
讓我們做一些更復雜的事情。讓我們在這 60 億行上執行正規表示式。這有多快?
SELECT SUM(requests) req, title FROM [fh-bigquery:wikipedia.pagecounts_201505] WHERE REGEXP_MATCH(title, 'Red.*t') GROUP BY title ORDER BY req DESC LIMIT 100
-
你有多快?你在結果中找到了 Reddit 嗎?
成本分析
-
最後一個查詢處理了 269 GB:超過每月免費 TB 的四分之一。為什麼?
-
BigQuery 檢視你在查詢中處理的列。 ’title’是一個很大的專欄 - 它包含文字。 ‘requests’列只有 43.1 GB。
-
要使你的免費太位元組最後,請將資料提取到較小的表。例如,我有一張只有 65,000 英文維基百科頁面瀏覽量的表格。相同的查詢僅處理 1.18 GB - 你可以每月免費執行幾乎 1000 個。
SELECT SUM(requests) req, title FROM [fh-bigquery:wikipedia.pagecounts_201408_en_top65k] WHERE REGEXP_MATCH(title, 'Red.*t') GROUP BY title ORDER BY req DESC LIMIT 100
-
你不能使用每月免費太位元組建立表 - 它僅用於分析。為新的 Google Cloud Platform 帳戶啟用 300 美元免費,或者請我在這裡為你提取摘錄。我很樂意這樣做。
將資料載入到 BigQuery 中
要將資料載入到 BigQuery 中,你需要啟用專案的計費 - 嘗試使用免費的 300 美元新帳戶。
-
在專案中建立資料集以將資料載入到: https : //i.imgur.com/FRClJ3K.jpg 。
-
查詢維基百科共享的原始日誌,網址為 https://dumps.wikimedia.org/other/pagecounts-raw/
-
將其中一個檔案輸入你的計算機,例如 https://dumps.wikimedia.org/other/pagecounts-raw/2015/2015-06/pagecounts-20150616-160000.gz
-
安裝’bq’工具。 https://cloud.google.com/bigquery/bq-command-line-tool
-
將其載入到 BigQuery 中:
bq load -F" " --quote "" YourProjectName:DatasetName.pagecounts_20150616_16 pagecounts-20150616-160000.gz language,title,requests:integer,content_size:integer
-
等幾分鐘。在你等待的時候,讓我解釋一下:這不是 CSV 檔案,它是一個空格分隔檔案(-F“”),它不使用引號(–quote“”),我們在資料集中選擇一個目標表在你的專案中(記得首先建立資料集),我們選擇要載入的檔案,並定義此檔案具有的 4 列。
-
請注意,BigQuery 將很樂意提取 .gz 檔案,最大可達一定大小。對於非常大的檔案,最好先解壓縮它們並將它們放入 Google 雲端儲存中。這就是我用 / u / Stuck_In_The_Matrix 編譯的 reddit 評論所做的。這些檔案很大,但 BigQuery 在 2 分鐘左右就收到了它們。
學到更多
準備好更高階的例子嗎?瞭解如何查詢 Reddit 以及如何查詢所有紐約市的計程車行程 。
追隨更多!
- 訂閱 / r / bigquery (有關更多連結,請參閱側欄)。
- 跟我來 https://twitter.com/felipehoffa