【问题标题】:Select all columns, but replace some with expression in Google BigQuery?选择所有列,但用 Google BigQuery 中的表达式替换一些?
【发布时间】:2017-01-10 19:57:00
【问题描述】:

类似于Select All Columns Except Some in Google BigQuery? - 我们想从表中得到SELECT *,但我们不想排除某些列,而是想用一些表达式替换它们。例如,给定包含列的表:name, start_date, amount, end_date, comment,我们希望将startendSTRING 转换为DATE。可以写

SELECT 
  * EXCEPT(start_date, end_date),
  CAST(start_date AS DATE) start_date,
  CAST(end_date AS DATE) end_date

但这会改变列的顺序,将开始和结束移动到结束。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    我会进一步说-您可以将EXCEPTREPLACE链接在同一个SELECT
    从文档中看不是很明显,所以我认为它很有价值

    例如

    SELECT * EXCEPT(end_date) REPLACE(
      CAST(start_date AS DATE) AS start_date
    FROM T
    

    这将从输出端删除 end_date 将原始 start_date 替换为日期 start_date

    【讨论】:

      【解决方案2】:

      除了SELECT * EXCEPT,Google BigQuery 还支持标准 SQL 方言中的SELECT * REPLACE 子句。文档可以在这里找到: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
      

      【讨论】:

        猜你喜欢
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-25
        相关资源
        最近更新 更多