タイトルにあるように、bigquery アップロード ジョブを開始するとどうなりますか。たとえば、JSON ファイルの行の 50% を読み込んだ後、ジョブが失敗しました。bigquery は読み込みジョブのすべてをロールバックしますか、それとも読み込まれたデータの 50% が残っていますか?
私は毎日データを 1 つのテーブルに追加していますが、重複を避けることは非常に重要です。HTTP Rest API を使用しています
タイトルにあるように、bigquery アップロード ジョブを開始するとどうなりますか。たとえば、JSON ファイルの行の 50% を読み込んだ後、ジョブが失敗しました。bigquery は読み込みジョブのすべてをロールバックしますか、それとも読み込まれたデータの 50% が残っていますか?
私は毎日データを 1 つのテーブルに追加していますが、重複を避けることは非常に重要です。HTTP Rest API を使用しています
BigQuery はデータをアトミックに追加します。ロードが失敗した場合、テーブル内のデータの半分を取得することはできません。ジョブが正常に完了すると、すべてのデータが一度に表示されます。
重複を防ぐために使用できる追加のトリックが 2 つあります。
読み込みジョブのジョブ ID を指定します。作業の途中でネットワーク ケーブルを抜いたと想像してください。それが成功したかどうかはどうやってわかりますか? ジョブ ID を指定すると、ジョブ作成リクエストが失敗した場合に後でジョブを検索できます。
一時テーブルへのロードを実行し、writeDisposition として WRITE_TRUNCATE を指定します。これは、インポート ジョブを一時テーブルに対して冪等に実行できることを意味します。ジョブが成功したかどうかわからない場合は、別のジョブを実行するだけで、データが上書きされます。ロード ジョブが正常に完了したら、writeDisposition を WRITE_APPEND にしてテーブル コピー ジョブを実行し、新しいデータをメイン テーブルに追加します。