2017-07-28 5 views
0

は私がスキーマ定義として持つテーブルに上記のレコードをロードしようとしています BigQueryは、

{"customer_id":"2349uslvn2q3","order_id":"9sufd23rdl40", 
"line_item": [{"line":"1","sku":"10","amount":10}, 
       {"line":"2","sku":"20","amount":20}]} 

のように見えるJSONレコードを持っているGoogleのクラウドストレージからデータをロードするために失敗した

"fields": [ 
    { 
    "mode": "NULLABLE", 
    "name": "customer_id", 
    "type": "STRING" 
    }, 
    { 
    "mode": "NULLABLE", 
    "name": "order_id", 
    "type": "STRING" 
    }, 
    { 
    "mode": "REPEATED", 
    "name": "line_item", 
    "type": "STRING" 
    } 
] 

私は次のようなエラー「メッセージ」取得しています::ファイルの位置0から始まる行の

JSONパースエラーを10 gs:// gcs_bucket/file0。非レコードフィールドに指定されたJSONオブジェクト: LINE_ITEM

Iは、テーブルの行の項目欄にJSON文字列の配列として1つの以上の行を有することができるline_item JSON文字列が欲しいです。

提案がありますか?

答えて

1

最初の事はあなたが好きそれを保存する必要がありますのでご入力JSONは、「\ n」は文字を持っているshould'tことです:

{"customer_id":"2349uslvn2q3","order_id":"9sufd23rdl40", "line_item": [{"line":"1","sku":"10","amount":10}, {"line":"2","sku":"20","amount":20}]} 

あなたのJSONファイルがどのように見えるべきかの一例:

{"customer_id":"2349uslvn2q3","order_id":"9sufd23rdl40", "line_item": [{"line":"1","sku":"10","amount":10}, {"line":"2","sku":"20","amount":20}]} 
{"customer_id":"2","order_id":"2", "line_item": [{"line":"2","sku":"20","amount":20}, {"line":"2","sku":"20","amount":20}]} 
{"customer_id":"3","order_id":"3", "line_item": [{"line":"3","sku":"30","amount":30}, {"line":"3","sku":"30","amount":30}]} 

また、スキーマが正しくありません。それは次のようになります。

[ 
    { 
    "mode": "NULLABLE", 
    "name": "customer_id", 
    "type": "STRING" 
    }, 
    { 
    "mode": "NULLABLE", 
    "name": "order_id", 
    "type": "STRING" 
    }, 
    { 
    "mode": "REPEATED", 
    "name": "line_item", 
    "type": "RECORD", 
    "fields": [{"name": "line", "type": "STRING"}, {"name": "sku", "type": "STRING"}, {"name": "amount", "type": "INTEGER"}] 
    } 
] 

スキーマがどのように動作するかをより良く理解するために、私はthis answerでのガイドのようなものを書いてみました。うまくいけばそれはある価値があるかもしれない。

あなたのデータの内容は、提出され、このコマンドはあなたのために働く必要がありgs://gcs_bucket/file0と呼ばれ、schema.jsonでスキーマ内のインスタンスのために保存されている場合:

bq load --source_format=NEWLINE_DELIMITED_JSON dataset.table gs://gcs_bucket/file0 schema.json 

は(あるように思わとしては、CLIツールを使用していると仮定あなたの質問の場合)。

+0

ありがとうございます。あなたがここに持っているスキーマ定義、私はそれを試して、うまくいきます。私は前にそれを持っていた、私はテーブルのjson値の配列として、文字列の配列ではなく、line_item全体を持っていることを望んでいた。 jsonとして広告申込情報全体を表示することはできますか? – Kevin