2016-10-25 16 views
1

私はpythonを使用しており、bigqueryのテーブルに書きたいと思います。bigqueryでpythonを使用してRECORD型カラムにデータを追加する方法

test  RECORD REPEATED  
test.foo STRING NULLABLE  
test.bar STRING NULLABLE  

私は次のようなコマンドを実行したい:

入力がどのように見えるrows_to_insert何
table = dataset.table(name='test_table') 
table.insert_data(rows_to_insert) 

テーブルのスキーマは次のようになります。私はエラーを取得し続ける: 繰り返し値が配列の外側に追加されました。

答えて

2

スキーマは次のように定義されたと仮定します。私は今日Repeated value added outside of an arrayを持って、私が持っているように見える理由は、理解できませんでした

rows_to_insert = [ 
     ('Phred Phlyntstone', {'area_code': '800', 
           'local_number': '555-1212', 
           'rank': 1}), 
     ('Bharney Rhubble', {'area_code': '877', 
          'local_number': '768-5309', 
          'rank': 2}), 
     ('Wylma Phlyntstone', None), 
    ] 
+0

例をコピーする invalid_argument:必須フィールドがない:full_name。 – cgustad

+0

スキーマの読み込みに問題がありましたが、これを修正しました。エラーメッセージが表示されます:レコードの葉型はサポートされていません。 – cgustad

0

full_name = SchemaField('full_name', 'STRING', mode='REQUIRED') 
area_code = SchemaField('area_code', 'STRING', 'REQUIRED') 
local_number = SchemaField('local_number', 'STRING', 'REQUIRED') 
rank = SchemaField('rank', 'INTEGER', 'REQUIRED') 
phone = SchemaField('phone', 'RECORD', mode='NULLABLE', 
        fields=[area_code, local_number, rank]) 

次に挿入するあなたのデータは次のようになります例をきちんと守った。それはいくつかの限られたケースでうまくいくことが判明し、キーの順序と関係があるように思えます...

これはちょっと変わったし、しばらくの間突っ込んだ後、私はそのトップレベルの属性jsonを設定する必要がありましたので、どのような作品はこれです:

table.insert_data([{"json": row} for row in data]) 

そしてdataは、基本的に1枚の以上dictsのリストです。

+0

これは、今私が間違っていたことを認識しました。私は実用的な解決策があると更新します。 – errordeveloper

関連する問題