Bigquery- Struct格式

时间:2018-01-16 00:33:38

标签: google-bigquery

WITH yourTable AS (
      SELECT 1 AS id, '2013,1625,1297,7634' AS string_col UNION ALL
      SELECT 2, '1,2,3,4,5'
    )

    SELECT id, 
      (SELECT ARRAY_AGG(CAST(num AS INT64)) 
        FROM UNNEST(SPLIT(string_col)) AS num
      ) AS num,
      ARRAY(SELECT CAST(num AS INT64) 
        FROM UNNEST(SPLIT(string_col)) AS num
      ) AS num_2
    FROM yourTable

enter image description here

这就是我的实际表格的设计方式。现在我想将num * num_2相乘,然后将其总结。有没有办法把它变成结构格式,如ID,nums.num,nums.num_2,这样我就可以简单地乘以得到必要的结果。

PS:我在上面的select语句中寻找解决方案,但不在#34;"言。

1 个答案:

答案 0 :(得分:1)

好的,假设你真的有理由以你的方式拥有你的桌子(见我对你的问题的评论) - 下面应该有效

  
#standardSQL
SELECT id, 
  (
    SELECT SUM(num * num_2)
    FROM (SELECT pos, num FROM UNNEST(num) num WITH OFFSET pos) a
    JOIN (SELECT pos_2, num_2 FROM UNNEST(num_2) num_2 WITH OFFSET pos_2) b
    ON a.pos = b.pos_2
  ) mul
FROM yourTable   

您可以使用下面的

进行测试
#standardSQL
WITH yourTable AS (
  SELECT 1 id, [2013,1625,1297,7634] num, [2013,1625,1297,7634] num_2 UNION ALL
  SELECT 2, [1,2,3,4,5], [1,2,3,4,5] 
) 
SELECT id, 
  (
    SELECT SUM(num * num_2)
    FROM (SELECT pos, num FROM UNNEST(num) num WITH OFFSET pos) a
    JOIN (SELECT pos_2, num_2 FROM UNNEST(num_2) num_2 WITH OFFSET pos_2) b
    ON a.pos = b.pos_2
  ) mul
FROM yourTable