GBQの既存のテーブルを切り詰めようとしていますが、実行すると以下のコマンドが失敗します。それを行うための特定のコマンドまたは構文はありますか? GBQのドキュメントを調べましたが、うまくいきませんでした。
TRUNCATE TABLE [dw_test.test];
BigQueryは、クエリ文字列の一部としてTRUNCATE
をサポートしていません。 BQがサポートする唯一のDDL/DML動詞はSELECT
です。
1つのオプションは、WRITE_TRUNCATE
write disposition (リンクはクエリジョブパラメータ用ですが、宛先テーブルを持つすべてのジョブタイプでサポートされています)。これにより、テーブルに既にあるすべてのデータが切り捨てられ、ジョブの結果に置き換えられます。
内容を他のデータに置き換えたり、ジョブを開始したりしない場合は、おそらく同じスキーマでテーブルを削除して再作成するのが最善の方法です。
BigQueryはSELECT
s以外をサポートするために使用していませんでしたが、クエリオプションで[レガシーSQLを使用する]をオフにしているかぎりサポートします。切り捨てはありませんが、 削除できます :
DELETE from my_table WHERE 1=1
BigQueryではWHERE
でDELETE
を使用する必要があるため、すべてを削除する場合は常にtrueになるステートメントを使用する必要があります。
CREATE OR REPLACE TABLE <dataset>.<table>
AS SELECT * FROM <dataset>.<table> LIMIT 0;
パーティションテーブルの場合、フィールド "created_on"にdayパーティションがあると想定して、次を実行します。
CREATE OR REPLACE TABLE <dataset>.<table> PARTITION BY created_on
AS SELECT * FROM <dataset>.<table> WHERE created_on = CURRENT_DATE() LIMIT 0;