Recuperar vínculos de linaje de varias regiones

En el siguiente pseudocódigo, se describe un procedimiento que puedes seguir mediante la API de linaje de datos para recuperar vínculos de linaje de datos de todas las regiones disponibles.

  1. Configuración de entrada:
  2. linksToFetch = 5 (cantidad de vínculos para recuperar de todas las regiones)
  3. regionalPageToken = "" (último token de página regional recibido que se usó para la paginación)
  4. Crea:
    1. lista de todas las regiones del fan-out denominada regions.
    2. lista de regiones inaccesibles, llamadas unreachable.
    3. una lista vacía de vínculos encontrados llamados foundLinks.
    4. una variable vacía nextPageToken y nextRegionalPageToken.
    5. una variable vacía lastRegion.
    6. una variable vacía lastRegionLinksCount.
  5. Ordene regions alfabéticamente.
  6. Analizar regionalPageToken
    1. Si está vacío, continúa con el paso 4.
    2. Si no está vacío, haga lo siguiente:
      1. Analiza regionalPageToken dividiéndolo por el primer punto en dos segmentos.
      2. Para filtrar regiones, toma solo las que están después (en orden alfabético) del primer segmento del regionalPageToken analizado.
      3. Almacenar el segundo segmento para usarlo en todas las llamadas a projects.locations.searchLinks
  7. Realiza una llamada a projects.locations.searchLinks en cada región de la lista regions en paralelo.
  8. Espera a que se completen todas las solicitudes.
  9. Filtra las respuestas correctas y almacena los nombres de las regiones con errores en la lista unreachable.
  10. Para cada una de las respuestas (que comienzan con la primera región en orden alfabético)
    1. si no se mostraron vínculos junto con un token de página que no esté vacío
      1. almacenar el nombre de la región en lastRegion.
      2. guardar pageToken recibido en nextPageToken.
      3. ignorar las respuestas restantes.
    2. de lo contrario
      1. almacenar el nombre de la región en lastRegion.
      2. guardar vínculos recibidos en foundLinks (hasta linksToFetch).
      3. guardar pageToken recibido en nextPageToken.
      4. almacenar la cantidad de vínculos obtenidos de la respuesta en lastRegionLinksCount.
      5. si foundLinks es menor que linksToFetch
        1. Continúe el pseudocódigo con la siguiente respuesta recibida en orden alfabético.
      6. si foundLinks es igual a linksToFetch
        1. Realiza otra solicitud al extremo projects.locations.searchLinks en la misma región, pero configura el parámetro pageSize en el valor de lastRegionLinksCount.
        2. almacenar pageToken en nextPageToken.
        3. continuar con el paso 8
  11. Antepón el valor de nextPageToken con el lastRegion (es decir, "[region].[receivedNextPageToken]") para crear nextRegionalPageToken a fin de controlar la paginación en las llamadas consecutivas.