web-dev-qa-db-ja.com

Googlebigqueryの更新行

それで、誰かが行のセットを更新する方法についてアイデアを与えることができますか?

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

ドキュメント、Web、または新しいアイデアには、「更新」ステートメントの出現を信じさせるようなものは何もありません。

誰か考えますか?

12
user2788456

2016年9月29日、 Google update there [〜#〜] dml [〜#〜] これで、挿入、更新を可能にする標準SQLを記述できるようになりました。 、BigQueryデータセットの行と列を削除します。

9
vladi03

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

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

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

  query table -> table with WRITE_TRUNCATE

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

この更新プロセスの実行中に、「テーブル」に対してクエリジョブを実行できます。これらのジョブは、一貫性のない状態や誤った状態が発生することなく、古いコンテンツまたは新しいコンテンツのいずれかを表示することが保証されます。

8
Jeremy Condit

行と列の挿入、更新、削除のサポートがBigQueryによって提供されるようになりましたが、ストリーミングバッファがないテーブルに対してのみです。

1
hmims