我正在尝试在sqlbigquery中生成一个表,它是我们服务器的文件夹结构。我想要一个包含文件名和文件夹的表。问题是它所属的文件夹以及包含的子文件夹的信息都在同一个表中,并且它可以具有任意数量的文件夹级别,如下所示:
folder_id Name parent_folder_id
123 One 321
321 root_1 null
456 two 321
789 Three 456
我想要一张这样的table:
parent_folder_name name
root_1 One
'root' root_1
root_1 two
two three
但我不能正确地执行第一步,即将每个文件和文件夹与其父级连接起来。我对我在中看到的答案进行了改编,如下所示:选择b.name,case当b.parent\u project\u id为null时,则选择“root”,否则b.parent\u project\u id结束为parent\u folder\u name,a.name,a.owner\u id from data a join data b on b.parent\u project\u id=a.id
它实际上返回了很好的结果,但大约60%的注册丢失时,我不明白为什么提前感谢
1条答案
按热度按时间isr3a4wc1#
要只得到父母,请使用
left join
,大概是:您可以添加其他
LEFT JOIN
他必须在等级制度中走得更高。不幸的是,bigquery不支持递归CTE,因此不能使用单个查询遍历整个层次结构。令人高兴的是,bigquery确实支持脚本,因此您可以使用脚本语言来表示这样的遍历。