として扱うことができる唯一の方法は、あなたのテーブル全体をバック満たすことです。あなたのテーブルのサイズによっては、タイムアウトになるために、単純な
SELECT * FROM mytable;
を使用して、テーブルを照会に問題がある可能性があります。 UPDATE
ステートメントではパーティションキーが必須なので、そのテーブルからパーティションキーを吐き出す方法を見つける必要があります。
これはTOKEN機能を使用するのに最適なシナリオです。あなたが宿題をしていて広すぎるパーティションを持っていないと仮定すると、すべてのデータセットをパーティションの範囲に分割してスキャンすることができます。どのくらいの範囲があなたのデータに依存しています。一般的な観点からは、以下を行う必要があります。
SELECT __partition_key_columns__ FROM mytable WHERE
TOKEN(__partition_key_columns__) >= min_range AND
TOKEN(__partition_key_columns__) < max_range;
とmin_range
とmax_range
が W推測ウィンドウサイズの段階で(Murmur3を使用して、IIRC)から-2^63 2^64-1に行きます:
SELECT __partition_key_columns__ FROM mytable WHERE TOKEN(__partition_key_columns__) >= -2^63 AND TOKEN(__partition_key_columns__) < -2^63 + W;
SELECT __partition_key_columns__ FROM mytable WHERE TOKEN(__partition_key_columns__) >= -2^63 + W AND TOKEN(__partition_key_columns__) < -2^63 + 2*W;
...
すべての範囲を2^64-1までカバーするまで。タイムアウトが発生した場合はWを小さくしてもう一度試してください。そうでない場合は、ウィンドウWを展開して処理を高速化します。すべてのパーティションを抽出して、各範囲の更新を発行することができます。
編集:This blog postは、このようなタスクの実行方法を正確に説明しています。
正しく確認していますか? * false *の代わりに* null *を取得する必要があります。 – xmas79