2015-12-03 71 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; 
同時使用,如