以下伪代码概述了使用 Data Lineage API 从所有可用区域提取数据谱系链接的步骤。
- 输入设置:
linksToFetch
= 5(要从所有区域提取的链接数量)regionalPageToken
= ""(用于分页的上次接收的地区性页面令牌)
- 创建:
- 要扇出的所有区域的列表,称为
regions
。 - 名为
unreachable
的不可访问区域列表。 - 一个名为
foundLinks
的空链接列表。 - 空变量
nextPageToken
和nextRegionalPageToken
。 - 空变量
lastRegion
。 - 空变量
lastRegionLinksCount
。
- 要扇出的所有区域的列表,称为
- 按字母顺序对
regions
进行排序。 - 解析
regionalPageToken
- 如果为空,请继续执行第 5 步
- 如果不为空,则
- 通过按第一个点将
regionalPageToken
拆分为两个部分来解析regionalPageToken
- 仅保留解析后的
regionalPageToken
中第一个细分后面的地区(按字母顺序)。 - 将第二个片段存储起来,以便在所有 projects.locations.searchLinks 调用中使用。
- 通过按第一个点将
- 并行调用
regions
列表中每个区域的 projects.locations.searchLinks。 - 等待所有请求完成。
- 滤除成功的响应,并将失败的区域名称存储在
unreachable
列表中。 - 对于每条回复(从按字母顺序排列的第一个区域开始)
- 如果未返回任何链接,但返回了非空页面令牌
- 在
lastRegion
中存储地区名称。 - 将收到的 pageToken 保存在
nextPageToken
中。 - 忽略其余回答。
- 在
- 否则
- 在
lastRegion
中存储地区名称。 - 在
foundLinks
中保存收到的链接(最多linksToFetch
个)。 - 将收到的 pageToken 保存在
nextPageToken
中。 - 将从响应中获取的链接数量存储在
lastRegionLinksCount
中。 - if
foundLinks
is less thanlinksToFetch
- 使用按字母顺序接收的下一个响应继续伪代码。
- if
foundLinks
equalslinksToFetch
- 向同一区域中的 projects.locations.searchLinks 端点发出另一个请求,但将
pageSize
参数设置为lastRegionLinksCount
的值。 - 商店在
nextPageToken
中收到了 pageToken。 - 继续执行第 9 步
- 向同一区域中的 projects.locations.searchLinks 端点发出另一个请求,但将
- 在
- 如果未返回任何链接,但返回了非空页面令牌
- 在
nextPageToken
前面附加lastRegion
(即[region].[receivedNextPageToken]
),以创建nextRegionalPageToken
来处理连续调用中的分页。