【问题标题】:Select All Columns Except Some in Google BigQuery?在 Google BigQuery 中选择除某些列之外的所有列?
【发布时间】:2016-03-07 12:08:01
【问题描述】:

有没有办法在 BigQuery 中选择 * 除了 [x,y,z 列名]?我看到了一些 MySQL 的解决方案,但不确定它是否适用于 BQ。

谢谢。

【问题讨论】:

标签: google-bigquery


【解决方案1】:

当前 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

【讨论】:

  • 太好了!非常感谢您执行此操作! @MoshaPasumansky
  • 花了一段时间,但现在可以使用了。答案已更新。
  • 嗨@MoshaPasumansky 感谢您添加此功能!但是我只是在BQ中尝试过,它没有用。你能告诉我确切的语法吗?谢谢。
  • 这是一个跳过标题和评论列的公共维基百科表格示例:select * except(title, comment) from publicdata.samples.wikipedia limit 10
  • 嗨@MoshaPasumansky。你给出的例子不起作用。我正在使用:SELECT * except(title, comment) FROM bigquery-public-data:samples.wikipedia LIMIT 10
【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 2019-01-17
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多