类似于在 Google BigQuery 中选择除某些列之外的所有列?- 我们想SELECT *从表中删除,但不是排除某些列,而是想用一些表达式替换它们。例如,给定带有列的表:name, start_date, amount, end_date, comment,我们要从start和转换为。可以写endSTRINGDATE
SELECT
* EXCEPT(start_date, end_date),
CAST(start_date AS DATE) start_date,
CAST(end_date AS DATE) end_date
Run Code Online (Sandbox Code Playgroud)
但这会改变从开始和结束到结束的列的顺序。
我会更进一步说 - 你可以链接EXCEPT并REPLACE在同一个SELECT
文件中这并不明显,所以我认为它很有价值
例如
SELECT * EXCEPT(end_date) REPLACE(
CAST(start_date AS DATE) AS start_date)
FROM T
Run Code Online (Sandbox Code Playgroud)
end_date这将从输出端删除,并将原始值替换start_date为转换为日期 start_date
除了SELECT * EXCEPT,Google BigQuery 还支持SELECT * REPLACE标准 SQL 方言中的子句。可以在此处找到文档: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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5328 次 |
| 最近记录: |