【问题标题】:How to flatten values in a row in Google Big Query如何在 Google Big Query 中展平一行中的值
【发布时间】:2018-11-14 20:09:26
【问题描述】:

伙计们

我在大查询中的数据有问题。我有一个像 pic #1 这样的数据集,我需要对我的用户进行排名并将他们的排名注释分组在一个唯一的行中(如 pic #2)。需要明确的是,我的ranking 列类型是int,而不是array

是否可以使用 bigquery 处理此问题,或者我是否需要将此数据集传输到 python 并在那里进行转换?

PIC #1 原始数据集

PIC #2 分组和格式化数据集

【问题讨论】:

    标签: google-bigquery flatten


    【解决方案1】:

    以下 BigQuery 标准 SQL 示例

    #standardSQL
    WITH `project.dataset.table` AS (
      SELECT 'a' user, 10 ranking UNION ALL
      SELECT 'b',  2 UNION ALL
      SELECT 'a', 12 UNION ALL
      SELECT 'a', 14 UNION ALL
      SELECT 'c', 22 UNION ALL
      SELECT 'd', 21 
    )
    SELECT 
      user, 
      MAX(ranking) AS ranking_max,
      STRING_AGG(CAST(ranking AS STRING)) ranking_list
    FROM `project.dataset.table`
    GROUP BY user   
    

    结果

    Row user    ranking_max ranking_list     
    1   a       14          10,12,14     
    2   b       2           2    
    3   c       22          22   
    4   d       21          21   
    

    注意:如果您需要订购ranking_list - 您可以在STRING_AGG 中使用ORDER BY,如下所示

    STRING_AGG(CAST(ranking AS STRING) ORDER BY ranking) ranking_list   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2022-01-19
      相关资源
      最近更新 更多