Use TRUNCATE When Deleting All Rows in BigQuery
→ 日本語版を読むIn BigQuery, it is better to use TRUNCATE when deleting all rows. You can restore data with Time Travel, it is faster than DELETE, and it costs nothing.
When performing a DELETE operation to remove all the rows from a table, use TRUNCATE TABLE statement instead. The TRUNCATE TABLE statement is a DDL (Data Definition Language) operation that removes all rows from a table but leaves the table metadata intact, including the table schema, description, and labels. Since TRUNCATE is a metadata operation it does not incur a charge.
My understanding was that TRUNCATE does not leave a transaction log and data cannot be restored. For example, in Oracle 12.1, the following statement appears:
The TRUNCATE TABLE statement cannot be rolled back.
In BigQuery, even after TRUNCATE, data can be restored with Time Travel. Let me verify this is actually the case.
Prepare a table with data.

Run TRUNCATE.

The "Bytes billed" is 0, confirming that no charge is incurred.

Data can be properly restored with Time Travel.

For deleting all rows in BigQuery, use TRUNCATE.
That is all.