web-dev-qa-db-ja.com

Google Big Queryエラー:CSVテーブルで発生したエラーが多すぎて、あきらめました。行:1エラー:1

ここに画像の説明を入力してください Googleのビッグクエリに読み込まれた12GBのcsvファイルでクエリを実行しようとしていますが、データセットでクエリを実行できません。データセットが正しく読み込まれているかどうかわかりません。ペインにテーブルとして表示されますが、ジョブ履歴には表示されません。誰もが同じことを手伝うことができますか?.

データセットは、約120万のレコードと3728の変数を持つGoogleストレージバケットから読み込まれました

ジョブID:p-g-us-adv-x-dat-aia-proto-1:bquijob_b951879_1540d02c1a4

4
Surya Santosh

スキーマを確認してください-列の1つにスキーマを含めるのを忘れた可能性があります-それが私に起こったことです!

15
MMMdata

job.errorsには、ジョブの詳細なエラーが含まれています。

これはどこにも文書化されていないようですが、ソースコードで確認できます: https://googlecloudplatform.github.io/google-cloud-python/0.20.0/_modules/google/cloud/ bigquery/job.html および_AsyncJobの場合はctrl + f。

したがって、wait_for_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)
5
Ben Caine

エラーの詳細を取得するには、CLIからこれを試してください。

>bq show -j <jobid>

ステータスや詳細なエラー情報を出力します。

すべてのジョブIDを一覧表示するには:bq ls -j

1
intotecho

GCPドキュメントの手順 の後に同じ問題が発生しました。

2番目のbq loadで失敗しましたが、最初の_ [SOMECODE]では失敗しませんでした。

ignore unknown valuesオプションを選択してBigQueryWebインターフェイスでジョブを繰り返すことがわかりました。

私はまだデータのエラーを発見していませんが、それを調べ始めたばかりです。

1
Peter Coghill

別のトリック:ヘッダー行のあるcsvファイルを使用し、定義されたスキーマでロードする場合は、コマンドを送信するためにオプション--skip_leading_rows=1を追加する必要があります(例:bq load --skip_leading_rows=1 --source_format=CSV ...)。

このオプションがないと、Bigqueryは最初の行(ヘッダー行)をデータ行として解析し、TYPE MISMATCH ERRORが発生する可能性があります(列の定義済みスキーマはFLOATですが、列名はSTRINGであり、bq loadコマンドは解析しますFLOAT値としての列名)。

1
voxter

つまり、BigQueryに読み込まれていないCSVファイルに対してクエリを実行しているように見えます。これは、Google CloudStorageにあるフェデレーションテーブルによって示されているだけです。

基になるCSVファイルにエラーがあったようです。

Too many value in row starting at position:11398444388 in file:gs://syntheticpopulation-storage/Alldatamerged_Allgrps.csv
Too many value in row starting at position:9252859186 in file:gs://syntheticpopulation-storage/Alldatamerged_Allgrps.csv
...

これで問題を診断するのに十分かどうかを教えてください。クエリ履歴を見ると、これらのメッセージがクエリジョブの警告として表示されると思います。

私は内部で3つのバグを報告しました:

  1. エラーメッセージの文法が不十分です。
  2. フェデレーションテーブルの問題に起因するエラーメッセージは、どのテーブルに問題があるかを通知しないため、診断できません。
  3. フェデレーションテーブルの問題からのエラーメッセージは、問題の原因に関する情報が表示されない警告ストリームにあるため、UIでは実行できません。
0
Jordan Tigani

実際の問題の手がかりもなく、同じエラーが発生していました。

<https://www.googleapis.com/bigquery/v2/projects/****/jobs/job_******?location=******> <{
reason: invalid message: Error while reading data, error message: JSON table encountered too many errors, giving up. Rows: 115;
errors: 1. Please look into the errors[] collection for more details.  }

Bq --format = prettyjson show -j =>を試しました。これも手がかりが得られませんでした。

SAP BODSをETLツールとして使用して、データベースからBigQueryにデータを転送しようとしていました。根本原因を見つけるために、ETLを変更して、列ごとに転送する必要がありました。つまり、最初に1つの列を転送し、次に2番目を追加しました。最初の文字列列の転送は成功しました。しかし、FLOAT列が来ると、転送で同じエラーが発生しました。

データを確認したところ、データベースの10進列に.0345という値が見つかりました。 1未満の値の場合、Big Queryへの転送中にエラーが発生する10進数の前に0が削除されました。

修正するには、BODSのto_decimal変換を適用する必要がありました。

to_decimal(column_name, '.', ',', 4) 

「、」は千単位の区切り文字です

「。」は小数点記号です

4は、10進数の後に許可される番号を指定します

注::レコードをGoogle Cloud Storageに同時に転送していましたが、変換前にも成功していました。また、Cloud Storageファイルを手動で使用して同じBigQueryテーブルにデータを入力すると、正常に機能していました。

0
Ashish Chandra

既知のバグ@googleのようです。すでに修正が行われていますが、本番環境ではプッシュされませんでした。 https://code.google.com/p/google-bigquery/issues/detail?id=621

0
Thierry