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

时间:2016-09-02 16:16:39

标签: google-bigquery

Select All Columns Except Some in Google BigQuery?类似 - 我们希望从表中SELECT *,但我们希望用一些表达式替换它们,而不是排除某些列。例如,给定的列包含name, start_date, amount, end_date, comment列,我们希望将startendSTRING转换为DATE。可以写

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

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

2 个答案:

答案 0 :(得分:2)

除了SELECT * EXCEPT之外,Google BigQuery还支持标准SQL方言中的SELECT * REPLACE子句。可以在此处找到文档:https://cloud.google.com/bigquery/sql-reference/query-syntax#select-list 你的例子将成为:

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

答案 1 :(得分:2)

我会更进一步说 - 您可以将EXCEPTREPLACE链接到同一SELECT中 从文档中看不是那么明显,所以我觉得它很有价值

例如

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

这将从输出结束中删除end_date替换原始start_date并将其转换为日期start_date