首页 > 解决方案 > 在缺少或没有结果的情况下变平

问题描述

我对 Bigquery 很陌生,我想在一个查询中取消嵌套 2 个表。

我试图查询下面的代码,但没有奏效。它给了我这个消息:“这个查询没有返回结果”。

SELECT
    timestamp AS Date,
    A.key,
    B.name
FROM `pms_table_request_log.partners_request_log_*`,
     UNNEST(jsonPayload.response.body.channels) AS A,
     UNNEST(jsonPayload.response.body.data.rows) AS B;

我希望 key 和 name 没有嵌套。

标签: google-bigquerybigquery-standard-sql

解决方案


如果取消嵌套的意思是“展平”,这意味着将数据从数组字段带到顶层,您可以尝试LEFT JOIN代替CROSS JOIN(即逗号)

SELECT timestamp AS Date ,A.key ,B.name 
FROM pms_table_request_log.partners_request_log_* 
  LEFT JOIN UNNEST(jsonPayload.response.body.channels) AS A 
  LEFT JOIN UNNEST(jsonPayload.response.body.data.rows) AS B

如果数组中的任何一个为空,CROSS JOIN则会破坏整行,同时LEFT JOIN保留左侧的“表”


推荐阅读