2016-07-26 35 views
1

をアップロードするとき、すべての不正なレコードを受信しません。ここでは、テーブルスキーマがあります:ここBigQueryのバグ:私はBigQueryのテーブル</p> <p>にデータをアップロードしようとしているデータ

[{ 
    "name": "temp", 
    "type": "STRING" 
    }] 

は私がアップロードしてる私のファイルです。ここ

{"temp" : "0"} 
{"temp1" : "1"} 
{"temp2" : "2"} 
{"temp3" : "3"} 
{"temp4" : "4"} 
{"temp5" : "5"} 
{"temp6" : "6"} 
{"temp7" : "7"} 
{"temp" : "8"} 
{"temp" : "9"} 

は可能エラーをアップロードするためのBQコマンドです:

bq load --source_format=NEWLINE_DELIMITED_JSON --max_bad_records=100 mydataset.mytable ./tmp.json 
私が使用している

Upload complete. 
Waiting on bqjob_123.._1 ... (2s) Current status: DONE 
Warnings encountered during job execution: 

JSON parsing error in row starting at position 15 at file: file-00000000. No such field: temp1. 

JSON parsing error in row starting at position 31 at file: file-00000000. No such field: temp2. 

JSON parsing error in row starting at position 47 at file: file-00000000. No such field: temp3. 

JSON parsing error in row starting at position 63 at file: file-00000000. No such field: temp4. 

JSON parsing error in row starting at position 79 at file: file-00000000. No such field: temp5. 

私が受け取る

bq --format=prettyjson show -j <jobId> 

を、これは私が得るものです(私はここにコピーされただけで、関連するフィールド):

{ 
    "configuration": { 
    ... 
     "maxBadRecords": 100 

    } 
    , 
    "statistics": { 
    "load": { 
     "inputFileBytes": "157", 
     "inputFiles": "1", 
     "outputBytes": "9", 
     "outputRows": "3" 
    } 
    }, 
    "status": { 
    "errors": [ 
     { 
     "message": "JSON parsing error in row starting at position 15 at file: file-00000000. No such field: temp1.", 
     "reason": "invalid" 
     }, 
     { 
     "message": "JSON parsing error in row starting at position 31 at file: file-00000000. No such field: temp2.", 
     "reason": "invalid" 
     }, 
     { 
     "message": "JSON parsing error in row starting at position 47 at file: file-00000000. No such field: temp3.", 
     "reason": "invalid" 
     }, 
     { 
     "message": "JSON parsing error in row starting at position 63 at file: file-00000000. No such field: temp4.", 
     "reason": "invalid" 
     }, 
     { 
     "message": "JSON parsing error in row starting at position 79 at file: file-00000000. No such field: temp5.", 
     "reason": "invalid" 
     } 
    ], 
    "state": "DONE" 
    } 
} 

今私は私のテーブルに行って、実際には3つの新しいレコード(実際にはoutputRows : 3フィールドに一致します):

あなたは私が唯一の5それらのを受け6つの不正なレコードを持っていた見るように

  1. {"temp" : "0"} 
    {"temp" : "8"} 
    {"temp" : "9"} 
    

    は今、これらは私のqustionsです。 - temp6を受け取らなかった。今、私はより多くの悪いレコードを含むファイルをアップロードしようとしましたが、いつも5だけしか受け取りませんでした。これはbigqueryのバグですか?

  2. 私のレコードが大きいと仮定し、アップロード後にエラーが発生するレコードを多数アップロードすると、どのレコードが悪いレコードであるかを知ることができますか? - 私はbigqueryにロードされていないレコードを知る必要があります。 私が得るのはJSON parsing error in row starting at position 15 at file..です。ポジションは教えてくれません。なぜレコードの番号を受け取ることができないのですか?または、レコード番号をその位置で計算する方法はありますか?

+1

メモ帳++にコピー&ペーストしてCtrl + gをクリックすると、オフセットの設定が行われ、問題に直面している正確な行番号を見つけるのに役立ちます。 –

答えて

3
  1. 我々は返信が大きすぎるしたくないと私たちは、最初の5つのエラーを返します。
  2. 別のスレッドで説明したように、BigQueryは大きなファイルを並列処理することで高速に処理するように設計されています。ファイルが1GBの場合、数百のワーカーを作成し、各ワーカーはファイルのチャンクを処理します。作業者がファイルの最後の10MBを処理していて不良レコードを見つけた場合、このレコードの番号を知るためには、前の990MBをすべて読み取る必要があります。したがって、すべての作業者は不良レコードの開始位置を報告するだけです。一部のエディタは、ファイル内のオフセットを求めることをサポートしています。 vimでは、1000goは1000の位置に移動します。それ以下では1000Pです。
+0

したがって、5つ以上のエラーどのレコードがbigqueryにロードされていないのか分かりますか? – dina

+0

良い質問ですが、残念ながら現在の答えはこれはサポートされていません。私は5が少し小さいことに同意しますが、返信が大きすぎないように境界が必要です。 –

+0

位置だけを含む配列(エラーの説明全体ではない)を受け取った場合、この問題は大きな返答をせずに解決されます。 – dina

関連する問題