Basics
Database Management
Dates and Times
How to Drop a Column in BigQuery
Google BigQuery does not allow you to directly drop a column from a table using the ALTER TABLE statement. However, you can achieve this by creating a new table without the unwanted column. In this tutorial, we will walk you through the steps using SQL and the BigQuery web UI.
Why You Can’t Directly Drop a Column
BigQuery’s schema update capabilities are somewhat limited compared to traditional relational databases. While you can ADD COLUMN or RENAME COLUMN, you cannot directly DROP COLUMN. The typical workaround is to recreate the table without the column you want to remove.
Step 1: Identify the Columns You Want to Keep
List the columns you want to keep. You can find the current table schema by running:
SELECT *
FROM `project.dataset.INFORMATION_SCHEMA.COLUMNS`
WHERE table_name = 'your_table';Step 2: Create a New Table Without the Unwanted Column
Use the CREATE OR REPLACE TABLE statement or the bq command-line tool to create a new table that excludes the unwanted column:
CREATE OR REPLACE TABLE `project.dataset.new_table` AS
SELECT col1, col2, col3 -- exclude the column you want to drop
FROM `project.dataset.old_table`;Step 3: Verify the New Table
After creating the new table, check that the schema is correct and the data is intact:
SELECT *
FROM `project.dataset.new_table`
LIMIT 10;Step 4 (Optional): Replace the Old Table
If you want the new table to replace the old one, you can:
- Delete the old table:
bq rm -t project:dataset.old_table - Rename the new table:
bq cp project:dataset.new_table project:dataset.old_table
Using the BigQuery Web UI
In the BigQuery web console:
- Write a query that selects only the columns you want to keep.
- Click Save Results → Save as Table.
- Choose your dataset and table name, then click Save.
Best Practices
- Back up your data before modifying tables.
- Test your queries on a small dataset before applying to production.
- Use descriptive table names when creating interim tables.
By following these steps, you can safely remove unnecessary columns from your BigQuery tables and keep your data warehouse clean and efficient.