簡體   English   中英

導出BigQuery數據以使用python進行分析

[英]Exporting BigQuery data for analysis using python

我是Google BigQuery的新手,所以我試圖了解如何最好地完成用例。

我將BigQuery的每日客戶訪問數據存儲在BigQuery中,希望使用我用python編寫的一些算法進行分析。 由於有多個腳本使用每日數據的子集,所以我想知道什么是獲取和臨時存儲數據的最佳方法。 此外,腳本以順序方式運行。 每個腳本修改數據的某些列,隨后的腳本使用此修改后的數據。 運行完所有腳本后,我想將修改后的數據存儲回BigQuery。

我想到的一些方法是:

  1. 將bigquery表作為db文件導出到GAE(Google App Engine)實例中,並使用sqlite3 python包從db文件中查詢每個腳本的相關數據。 一旦所有腳本運行完畢,將修改后的表存儲回BigQuery,然后從GAE實例中刪除數據庫文件。

  2. 每次我想使用google-cloud python客戶端庫pandas gbq包運行腳本時,都可以從BigQuery查詢數據。 運行每個腳本后,修改BigQuery表。

有人能知道其中哪一個是實現此目的的更好方法(就效率/成本而言)或提出替代方案?

謝謝!

問題的答案主要取決於您的用例和將要處理的數據大小,因此沒有一個絕對正確的答案。

但是,在您描述的場景中,您可能需要考慮一些有關BigQuery的用法以及它的某些功能對您來說很有趣的幾點。

讓我快速瀏覽一下您應該關注的主要主題:

  • 定價:不考慮存儲費用,而是着重查詢本身的成本(這與您的用例更相關), BigQuery計費基於每個查詢處理的字節數。 每月有1TB的免費配額,從那時起,成本為每TB處理數據5美元,這是10MB數據的最小可測量單位。
  • 緩存:當BigQuery返回某些信息時,它會存儲在一個臨時的緩存表中 (如果需要,可以存儲在一個永久的表中 ),並且將它們維護大約24小時,但您可能會在同一文檔鏈接中找到一些例外(它們也盡力而為,因此也可能會發生更早的刪除)。 從緩存表返回的結果不計入費用(因為根據記帳的定義,成本基於處理的字節數,訪問緩存表意味着未進行任何處理),只要您運行完全相同的查詢。 我認為值得一看,因為從您的句子“因為有多個腳本使用了每日數據的子集”,也許(但只是在這里猜測)它適用於您的用例以執行單個查詢一次,然后從緩存版本中多次檢索結果,而不必將其存儲在其他位置。
  • 分區: BigQuery提供了分區表的概念, 分區表是按日期划分為較小段的單個表,這將使您每天更輕松地查詢所需的數據。
  • 速度: BigQuery提供了一個實時分析平台,因此您將能夠執行一些快速的查詢,以檢索所需的信息,並進行一些初始處理,以便以后在自定義Python算法中使用。

因此,總的來說,我要說的是,您無需保留部分結果來自BigQuery存儲的任何其他數據庫。 在資源和成本效率方面,BigQuery提供了足夠的功能供您在本地處理數據,而不必處理巨額費用或數據檢索的延遲。 但是,這再次取決於您的用例和要存儲的數據量以及需要同時處理。 但總的來說,我只會自己使用BigQuery。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM