2017-06-05 1 views
0

load_table_from_storageを使用してGoogle Cloud StorageにホストされているjsonをBigqueryにアップロードするときにスキーマを指定する最も良い方法は何ですか?Bigquery API:load_table_from_storageにスキーマを提供する方法

フィールドのリストは非常に双方向かつ複雑であり、私はすでにこのような形式でそれを持っている: https://cloud.google.com/bigquery/docs/personsDataSchema.json

私はPythonで、この形式のスキーマを提供することができる任意の方法はありますか?そして、もしそうなら、私はどんな構文をしなければならないのですか?これまでに働いたことのない様々なオプションを試しました。

答えて

1

load_table_from_storageには、google.cloud.bigquery.table.Tableのオブジェクトがdestinationに入力されています。ここでスキーマを指定する必要があります。 「BQCは」あなたのBigQueryクライアントオブジェクトである場合の例として

は、これはテーブルオブジェクトを作成します。

ds = bqc.dataset('dataset_name') 
table = ds.table('table_name') 

さて、あなたはで動作するようにあなたのJSONファイルでこのデータを持っているとしましょう:

from google.cloud.bigquery.schema import SchemaField 
f1 = SchemaField('user_id', 'STRING') 
f2 = SchemaField('visitid', 'INTEGER') 
f3 = SchemaField('hits', 'RECORD', mode='REPEATED', fields=[SchemaField('hitNumber', 'INTEGER'), SchemaField('type', 'STRING')]) 

table.schema = [f1, f2, f3] 
table.create() 
を:次に、そのスキーマがそうのように行われることになる定義
{"user_id": "1", "visitid": 1, "hits": [{"hitNumber": 1, "type": "PAGE"}, {"hitNumber": 2, "type": "PAGE"}]} 
{"user_id": "2", "visitid": 1, "hits": [{"hitNumber": 1, "type": "EVENT"}, {"hitNumber": 2, "type": "PAGE"}]} 

関連する問題