2017-07-17 8 views
0

Pythonスクリプトを使用してGoogle Cloud StorageからJSON形式の表をエクスポートしようとしています。 BigQueryからJSONとして表を手動でエクスポートすると、この形式で行われます。エクスポートされたJSONが間違った形式で出力される

{"f0_":5586.2928892104655} 

私はPythonスクリプトを使用してダウンロードしましたが、この形式で受け取ります。

f0_ 
5586.2928892104655 

これは私がJSONを書き出してダウンロードするために使用しているコードです。

def export_data_to_gcs(data, test2, destination): 
    bigquery_client = bigquery.Client(data) 
    dataset = bigquery_client.dataset('FirebaseArchive') 
    table = dataset.table('SumConnectionTime') 
    job_name = str(uuid.uuid4()) 

    job = bigquery_client.extract_table_to_storage(
     job_name, table, 'gs://firebase_results/SumConnectionTime.json') 
    job.source_format = 'NEWLINE_DELIMITED_JSON' 

    job.begin() 

    wait_for_job(job) 



def wait_for_job(job): 
    while True: 
     job.reload() 
     if job.state == 'DONE': 
      if job.error_result: 
       raise RuntimeError(job.errors) 
      return 
     time.sleep(1) 

export_data_to_gcs(data, 'SumConnectionTime', destination) 

client = storage.Client(project=data) 
bucket = client.get_bucket('firebase_results') 
blob = bucket.blob('SumConnectionTime.json') 
with open('SumConnectionTime.json', 'w') as file_obj: 
    blob.download_to_file(file_obj) 

私は最初に受け取ったフォーマットである必要があります。これは、与えられた値でjson.loadを実行しているためです。助けてくれてありがとう。

+0

私たちは、ファイルが書き込まれることがありますので、ご 'blob'オブジェクトの' download_to_file'方法を見てみる必要がありそうです。また、 'blob'メソッドは' bucket'を読み込むために使用されました。 –

+0

'blob'メソッドを使わずにファイルをダウンロードする別の方法がありますか? –

+0

私はその方法が何をしているのかわからないのですか?これはカスタムメソッドであるようですが、標準ライブラリからは何もありません。 –

答えて

1

BigQueryに書き出す宛先フォーマットを指定していないことが問題であると思われます。あなたはJSONをしたい場合は、これにsource_formatについてのあなたのラインを交換してください:

job.destination_format = NEWLINE_DELIMITED_JSON 
+0

これは私の問題を修正してくれてありがとう! –

関連する問題