我已经将数据从Firestore导入到BigQuery。
我有一个叫做“孔”的字段,它有一个计划的深度(计划的深度永远不能为空),以及一个测量深度的数组(这可以是空的)。测量的深度有值、日期和人。
如果我在查询中只询问计划的深度,结果表中的所有洞都是可见的:
select name, un_holes.Number as hole_number, un_holes.PlannedDepth.Value as planned_depth
from reporting.reporting_data_staging ,unnest (Holes) as un_holes
where mineName = 'Frasure Creek Mining'这个查询返回了我所有的100条记录。

但是,当我添加测量的深度时,只返回8行,这是测量深度不为空的行:
select name, un_holes.Number as hole_number, un_holes.PlannedDepth.Value as planned_depth,
un_measured.Value as measured_depth
from reporting.reporting_data_staging ,
unnest (Holes) as un_holes,
unnest (un_holes.MeasuredDepths) as un_measured
where mineName = 'Frasure Creek Mining'

希望查看第二个图像中的数据的结果,如果没有测量的数据,则对行使用一个空白或空值,而不是完全切割行。
我是BigQuery新手,我很久以前就做过SQL了。我曾寻找过类似的问题,但我可能犯了错误,没有正确地措辞我的搜索,也可能无意中错过了类似的问题,所以如果我这样做了,很抱歉。
发布于 2019-11-26 15:19:09
使用left joins可以保留具有空数组的行:
select name, un_holes.Number as hole_number, un_holes.PlannedDepth.Value as planned_depth,
un_measured.Value as measured_depth
from reporting.reporting_data_staging left join
unnest (Holes) as un_holes
on 1=1 left join
unnest (un_holes.MeasuredDepths) as un_measured
on 1=1
where mineName = 'Frasure Creek Mining';在使用unnest()和left join时,我认为on子句是不必要的。到目前为止,我还没有足够的进步性来省略on的join子句。
https://stackoverflow.com/questions/59053530
复制相似问题