【发布时间】:2016-03-07 12:08:01
【问题描述】:
有没有办法在 BigQuery 中选择 * 除了 [x,y,z 列名]?我看到了一些 MySQL 的解决方案,但不确定它是否适用于 BQ。
谢谢。
【问题讨论】:
-
我唯一的答案是在stackoverflow.com/questions/34010002/… 中扩展方法,这看起来不适合你
标签: google-bigquery
有没有办法在 BigQuery 中选择 * 除了 [x,y,z 列名]?我看到了一些 MySQL 的解决方案,但不确定它是否适用于 BQ。
谢谢。
【问题讨论】:
标签: google-bigquery
当前 BigQuery SQL 方言中没有任何内容允许这样做。但由于这是重复请求,我们添加了工作项来支持
SELECT * EXCEPT (a, b, c) FROM ...
更新:此功能现已在 BigQuery 标准 SQL 中可用。详情https://cloud.google.com/bigquery/sql-reference/enabling-standard-sql 使用公共维基百科表格的示例 - 选择除标题和评论之外的所有列:
select * except(title, comment) from publicdata.samples.wikipedia limit 10
【讨论】:
SELECT * except(title, comment) FROM bigquery-public-data:samples.wikipedia LIMIT 10
除了SELECT * EXCEPT() 语法之外,还有SELECT * REPLACE() 语法 - 引入的标准 SQL 都支持这两种语法
根据文档,用法简单明了
不太明显的是,您可以在同一个SELECT 中同时使用两者,如下例所示
WITH orders AS
(SELECT 5 as order_id,
"sprocket" as item_name,
200 as quantity)
SELECT * EXCEPT (order_id) REPLACE ("widget" AS item_name), "more" as more_fields
FROM orders;
【讨论】: