11.4 查找叶子记录

 

在中国行政区划表中,查询河北省下属区县。部分数据如下:

ID NAME PARENT_ID
1 China 0
11 Beijing 1
12 Tianjin 1
13 Hebei 1
1301 Shijiazhuang 13
1302 Tangshan 13

根据父记录查找所有从属的叶子记录。使用 P.nodes@d(F,r) 递归查找所有叶子记录。

脚本:

A
1 =T(“ChinaRegion.csv”)
2 >A1.switch(PARENT_ID,A1:ID)
3 =A1.select@1(NAME==“Hebei”)
4 =A1.nodes@d(PARENT_ID,A3)
5 =A4.new(ID,NAME,PARENT_ID.NAME:PARENT_NAME)

A1:导入中国行政区划表
A2:将父行政区 ID 外键对象化,转换为相应的父行政区记录,实现外键对象化。
A3:选出河北省的记录。
A4:使用函数 P.nodes() 进行递归查找,其中选项 @d 时递归查找所有叶子记录。
A5:生成由序号、行政区名称和上级行政区名称组成的表。

运行结果:

A4:

ID NAME PARENT_ID
130102 Changan District [1301,Shijiazhuang,]
130104 Qiaoxi District [1301,Shijiazhuang,]
130105 Xinhua District [1301,Shijiazhuang,]
130107 Jingxing mining area [1301,Shijiazhuang,]
130108 Yuhua District [1301,Shijiazhuang,]
130109 Gaocheng District [1301,Shijiazhuang,]
130110 Luquan District [1301,Shijiazhuang,]
130111 Luancheng District [1301,Shijiazhuang,]
130121 Jingxing County [1301,Shijiazhuang,]
130123 Zhengding County [1301,Shijiazhuang,]
130125 Xingtang County [1301,Shijiazhuang,]
130621 Lingshou County [1301,Shijiazhuang,]

A5:

ID NAME PARENT_NAME
130102 Changan District Shijiazhuang
130104 Qiaoxi District Shijiazhuang
130105 Xinhua District Shijiazhuang
130107 Jingxing mining area Shijiazhuang
130108 Yuhua District Shijiazhuang
130109 Gaocheng District Shijiazhuang
130110 Luquan District Shijiazhuang
130111 Luancheng District Shijiazhuang
130121 Jingxing County Shijiazhuang
130123 Zhengding County Shijiazhuang
130125 Xingtang County Shijiazhuang
130621 Lingshou County Shijiazhuang