Google bigquery 选择所有列,但用Google BigQuery中的表达式替换某些列?

Google bigquery 选择所有列,但用Google BigQuery中的表达式替换某些列?,google-bigquery,Google Bigquery,类似于-我们希望从表中选择*,但不是排除某些列,而是希望用一些表达式替换它们。例如,给定包含以下列的表:name、start\u date、amount、end\u date、comment,我们希望将start和end从STRING转换为date。写是可能的 SELECT * EXCEPT(start_date, end_date), CAST(start_date AS DATE) start_date, CAST(end_date AS DATE) end_date 但是这

类似于-我们希望
从表中选择*
,但不是排除某些列,而是希望用一些表达式替换它们。例如,给定包含以下列的表:
name、start\u date、amount、end\u date、comment
,我们希望将
start
end
STRING
转换为
date
。写是可能的

SELECT 
  * EXCEPT(start_date, end_date),
  CAST(start_date AS DATE) start_date,
  CAST(end_date AS DATE) end_date

但是这会改变列从开始到结束的移动顺序。

除了
SELECT*EXCEPT
之外,Google BigQuery还支持标准SQL方言中的
SELECT*REPLACE
子句。文档可在此处找到: 您的示例将成为:

SELECT * REPLACE(
  CAST(start_date AS DATE) AS start_date,
  CAST(end_date AS DATE) AS end_date)
FROM T

我想进一步说,您可以在同一个
选择

文档中没有那么明显,所以我认为它很有价值

比如说

SELECT * EXCEPT(end_date) REPLACE(
  CAST(start_date AS DATE) AS start_date
FROM T
这将从输出端删除
结束日期
,用铸造的截止日期开始日期替换原始的
开始日期