2015-12-03 33 views
7

有没有一种方法可以在BigQuery中选择*除[x,y,z列名]?我看到一些针对MySQL的解决方案,但不确定它是否适用于BQ。在谷歌BigQuery中选择除了部分外的所有列?

谢谢。

+1

我唯一的答案是在http://stackoverflow.com/questions/34010002/how-to-create-dummy-variable-columns-for-thousands-of-categories-in-google-大曲看起来不适合你 –

回答

16

当前的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 
+0

太棒了!非常感谢你实施这个! @MoshaPasumansky – wubr2000

+2

它花了一段时间,但它现在可用。答案已更新。 –

+0

嗨@MoshaPasumansky感谢您添加此功能!但我只是在BQ中尝试过,并没有奏效。你能让我知道确切的语法吗?谢谢。 – wubr2000

2

除了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; 
同时使用,如