2017-11-07 10 views
0

Google Cloud Storageに大量のログテーブルが保存されています。それを照会することで、ますます高価になってきています。私は、テーブルを分割するという解決策を見つけなければなりません。Google Cloud StorageのデータをPythonコードでパーティションテーブルにアップロード

大きなテーブルから新しい作成済みのパーティションに古いデータをアップロードすることは自分ではできますが、ストレージからbiguqeryテーブルにデータを毎日ロードしている既存のPythonコードを変更するのには苦労しています。私はそれが別の日に既に分割されたデータを提供したい。

def bq_load(filename): 
    bq_load_cmd = 'bq load --skip_leading_rows=1 --source_format=' + format + ' ' + schema + '.' + table + ' ' + google_bucket + '/' + filename 
    print bq_load_cmd 
    bq_load_cmd_out = commands.getstatusoutput(bq_load_cmd) 
    print bq_load_cmd_out 
    bq_status = bq_load_cmd_out[0] 
    if bq_status == 0: 
     print 'Bq load successfull filename : ' + filename 
    else: 
     print 'Error loading the file in bq : ' + filename 
     mail_cmd = 'mail -s " bq load error hasoffer_clicks" ' + recipient + ' < /dev/null' 
     mail_cmd = commands.getstatusoutput(mail_cmd) 

これは、crontabファイルと毎日のBigQuery内のテーブルにファイルをCSV負荷である私が今使っているコードの一部です。 私はインターネットで検索しましたが、これまでのところ私の問題の適切な解決方法を理解することはできませんでした。私は、bq loadコマンドが変更するかもしれないと思うが、私は確信していない。

提案がありますか? 敬具、 エウジェニオ

答えて

0

まずあなたはこのためにあなたがここに見ることができる、分割する非パーティションテーブルから移行する必要があります:https://stackoverflow.com/questions/38993877/migrating-from-non-partitioned-to-partitioned-tables

を第二に、あなたのコードのデコレータで使用する必要があり、特定のパーティションにデータを挿入するには: https://cloud.google.com/bigquery/streaming-data-into-bigquery#bigquery-stream-data-python

をそして、それはです:

table + '$20171107' 

あなたが特定のパーティションに挿入するための詳細が必要な場合は、ここを見てすべて:)

0

膨大な量のデータには非常に高価かもしれないので、クエリを使用せずにパーティション化されていないものからパーティション化されたものに変換する方法はありますか?

+0

これは実際には最も重要なポイントです... – Lucasaudati11

関連する問題