如何在创建 BigQuery 外部 table 时排除列?

How to exclude a column when creating BigQuery external table?

我正在尝试使用存储在 GCS 存储桶中的数据在 BQ 中创建外部 table。下面是我正在使用的 DDL 命令:

CREATE OR REPLACE EXTERNAL TABLE `external table`
OPTIONS (
  format = 'parquet',
  uris = ['gs://...', 'gs://...']
);

如何排除特定列被导入到外部 table?因为我无法在创建后将外部 table 更改为 DROP COLUMN。

从 GCS 加载数据时,没有为 selecting 列提供规定。

在 google 提供的以下文档中,提供了将数据从 GCS 加载到 bigQuery 的所有可能的配置和属性。但是您正在寻找的选项不存在。 https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-csv

但还有其他方法可以做到这一点。

第一个选项,

您可以先将此数据加载到临时 table,然后 select 从中加载所需的列并填充第二个 table。

第二个选项,

如果您不想手动执行此操作。您可以在 BigQuery 事件上使用 CloudRun。每当您将数据加载到第一个 table 时,它会触发 Cloudrun,您可以在其中编写代码以删除不需要的列并将其插入第二个 table.

https://cloud.google.com/blog/topics/developers-practitioners/how-trigger-cloud-run-actions-bigquery-events

第三个选项,

如果这只是一次 activity,您可以将整个数据加载到一个 table 中,然后在其上创建一个包含所需列的视图。