13

では、行のセットを更新する方法についてアイデアを提供できる人はいますか?

クエリの概念を理解しています->新しいテーブル、次に「古い」テーブルをダンプして「新しい」テーブルの名前を変更しますが、正直なところ、これは非常に面倒です。

ドキュメンテーション、Web、または新しいアイデアの中に、「更新」ステートメントの出現を信じるように導くものは何も見当たりません。

誰か考えますか?

4

3 に答える 3

9

[更新 この回答は古くなっています]

BigQuery は現在、個々の行の直接更新をサポートしていません。テーブルに追加したり、テーブルを切り捨てたり上書きしたりできますが、テーブルの残りの部分をそのままにして、単一の行に更新を適用することはできません。

あなたが言及したフロー(新しいテーブルを作成し、古いテーブルを置き換える)は合理的なアプローチです。役に立った場合は、古いテーブルを新しいテーブルに置き換えるために 2 つの個別の手順は必要ないことに注意してください。BigQuery はジョブの副作用をアトミックに適用するため、最後のコピー ジョブの writeDisposition を WRITE_TRUNCATE に設定することで、古いテーブルを 1 ステップで置き換えることができます。たとえば、次のことができます。

  query table -> table with WRITE_TRUNCATE

更新と同様に、これは古いテーブルを破壊することに注意してください。ただし、スキーマを変更していない場合は、スナップショット デコレータを使用して、切り捨てが発生する前の時点のテーブルを読み取ることができます。

この更新プロセスが行われている間、「テーブル」に対してクエリ ジョブを実行できます。これらのジョブは、古いコンテンツまたは新しいコンテンツのいずれかを表示することが保証されており、その間に不整合またはエラー状態はありません。

于 2013-09-17T18:07:08.327 に答える