Importar datos de personas de una fuente personalizada

En lugar de sincronizar datos de personas de Google Workspace, puedes importar datos de personas de Cloud Storage o BigQuery. En esta página se describe cómo crear un conector de búsqueda de personas e importar datos personalizados sobre personas desde un segmento de Cloud Storage o una tabla de BigQuery.

Antes de empezar

Ingerir datos de personas de una fuente personalizada

Para usar la consola Google Cloud e ingerir datos de personas, sigue estos pasos:

Consola

  1. En la Google Cloud consola, ve a la página Gemini Enterprise.

    Gemini Enterprise

  2. Vaya a la página Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

    Muestra el botón para crear un almacén de datos.
    Crea un almacén de datos.

  4. En la página Seleccionar una fuente de datos, en la sección Fuentes en la nube, selecciona Personas mediante conector personalizado.

    Selecciona una fuente de datos.
    Selecciona una fuente de datos.

  5. Importa los datos de las personas:

    • Importar más tarde: si aún no has importado tus datos de personas a Cloud SQL o BigQuery, selecciona Importar más tarde.

    • BigQuery importa los datos de una tabla de BigQuery.

    • Cloud Storage: importa los datos de una tabla de Cloud Storage.

    Opciones para importar datos de personas, como importar más adelante, desde BigQuery o desde Cloud Storage.
    Importar datos de personas.

  6. Haz clic en Continuar.

  7. Elige una región para tu almacén de datos.

  8. Escribe el nombre del almacén de datos.

  9. Opcional: Si es necesario controlar el acceso a los datos, selecciona Este almacén de datos contiene información de control de acceso. Para obtener más información, consulta Control de acceso a fuentes de datos.

  10. Haz clic en Crear.

    Configura y crea el conector de datos.
    Configura el conector de datos.

  11. Para comprobar el estado de la ingestión, vaya a la página Almacenes de datos y haga clic en el nombre del almacén de datos para ver los detalles en la página Datos. Cuando el estado de la columna de la pestaña Actividad cambie de En curso a Importación completada, la ingesta habrá finalizado.

    En función del tamaño de los datos, la ingestión puede tardar varios minutos o varias horas.

Personalizar los resultados de búsqueda

Para incluir o excluir información personal de los resultados de búsqueda, sigue estos pasos:

  1. En su almacén de datos, haga clic en la pestaña Entidad y, a continuación, en Usuarios.

  2. En la página Usuarios, haga clic en la pestaña Esquema.

  3. Haz clic en Editar.

  4. Seleccione o desactive los atributos, como el país, para especificar si se pueden recuperar, buscar e indexar. Para que se pueda buscar, el atributo debe estar marcado como Retrievable, Indexable y Searchable.

  5. Haz clic en Guardar.

Previsualizar los resultados de búsqueda de personas

  1. Si ya has conectado el almacén de datos a una aplicación, haz clic en Aplicaciones y, a continuación, en el nombre de la aplicación.

  2. Haz clic en Vista previa.

  3. Busca a personas de tu organización con la barra de búsqueda. En los resultados de búsqueda se muestran detalles como el nombre, el cargo, el correo y la imagen de perfil.

    Para abrir tu aplicación web de Gemini Enterprise en un navegador, consulta Ver la aplicación web de búsqueda.

    Previsualiza los resultados de búsqueda.
    Previsualiza los resultados de búsqueda.

    Si ha hecho que los atributos personalizados se puedan buscar, podrá usarlos en las búsquedas, pero los atributos en sí no se devolverán en los perfiles. Por ejemplo, si team-position es un atributo personalizado y se ha marcado como recuperable, indexable y apto para búsquedas en el esquema, puedes buscar personas con un puesto específico en el equipo, como "jefe de tecnología". Obtendrás una lista de personas que ocupan ese puesto, pero el resultado no incluirá las palabras "jefe de tecnología".

Ver la aplicación web de búsqueda

Para ver tu aplicación web de Gemini Enterprise, haz lo siguiente:

  1. En el menú de navegación, haz clic en Integración.

  2. Asegúrate de que la opción Habilitar la aplicación web esté activada.

  3. En la sección Enlace a tu aplicación web, haz clic en Copiar y abre el enlace en tu navegador.

Ejemplo de campos de esquema definidos por la organización para datos de personas

El conjunto de datos de cada persona debe tener el siguiente formato. En el ejemplo de un archivo importado de Cloud Storage, cada línea del archivo JSONL representa a una persona. Un archivo válido, pero mínimo, podría tener el siguiente aspecto:

{"id":"01","structData":{"personId":"01","name":{"familyName":"Doe","givenName":"Jane"},"email":{"type":"work","value":"jdoe@example.com"}}}
{"id":"02","structData":{"personId":"02","name":{"familyName":"Kumar","givenName":"Ashok"},"email":{"type":"home","value":"akumar@example.net"}}}

Nombre del campo

Tipo

Repetible

Indexable

Recuperable

Disponible para búsquedas

Descripción

personId

cadena

N

Y

S

Y

ID único de la persona. Campo obligatorio. El valor del campo personId debe ser el mismo que el de id del documento.

name.familyName

cadena

N

Y

S

Y

El apellido de la persona.

name.givenName

cadena

N

Y

S

Y

Nombre de pila de la persona.

name.displayName

cadena

N

Y

S

Y

Nombre visible de la persona.

name.username

cadena

N

Y

S

Y

Nombre de usuario de la persona.

emails.type

cadena

Y

N

N

N

El tipo de cuenta de correo, como "trabajo", "casa", "otro" o "personalizada".

emails.value

cadena

Y

S

S

Y

La dirección de correo de la persona, como "acruz@example.net".

phoneNumbers.type

cadena

Y

S

S

Y

El tipo de número de teléfono, como "oficina", "móvil" u "otro".

phoneNumbers.value

cadena

Y

S

S

Y

El número de teléfono de la persona, como "+1 800-555-1212".

suspended

booleano

N

N

N

N

Si la persona está suspendida en la organización.

employeeId

cadena

N

Y

S

Y

El ID de empleado de la persona.

employeeType

cadena

N

Y

S

Y

El tipo de empleado de la persona, como "FTE", "Intern" o "Temp".

employmentStatus

cadena

N

N

N

N

La situación laboral de la persona.

availabilityStatus

cadena

N

N

N

N

El estado de disponibilidad de la persona, como "Fuera de la oficina", "Trabajando desde casa" o "En una reunión".

creationDate

datetime

N

N

N

N

Fecha de creación de la persona en el sistema de origen.

modifiedDate

datetime

N

N

N

N

Fecha de última modificación de la persona en el sistema de origen.

deletionDate

datetime

N

N

N

N

Fecha de eliminación de la persona en el sistema de origen.

hireDate

datetime

N

Y

Y

N

La fecha en la que se contrató a la persona.

gender.addressMeAs

cadena

N

Y

S

Y

El pronombre que prefiera la persona, como  "él", "ella" o "elle".

gender.type

cadena

N

Y

S

Y

El sexo de la persona, como "hombre", "mujer" u "otro".

displayPhoto.url

cadena

N

Y

S

Y

Es la URL de la foto.

displayPhoto.imageBinary

cadena

N

Y

S

Y

Cadena codificada en Base64 del archivo binario de la foto.

displayPhoto.format

cadena

N

Y

S

Y

El formato del archivo binario de la imagen, como "png".

addresses.country

cadena

Y

S

S

Y

El país de la dirección asociada, como "Estados Unidos".

addresses.countryCode

cadena

Y

N

N

N

El código de país de la dirección asociada, como "US".

addresses.locality

cadena

Y

S

S

Y

La localidad de la dirección asociada, como "Mountain View".

addresses.poBox

cadena

Y

N

N

N

El apartado de correos de la dirección asociada, como "PO Box 123".

addresses.postalCode

cadena

Y

N

N

N

El código postal de la dirección asociada, como "94045".

addresses.region

cadena

Y

N

N

N

La región de la dirección asociada, como "CA".

addresses.streetAddress

cadena

Y

S

S

Y

La dirección postal asociada, como "1800 Amphibious Blvd.".

addresses.type

cadena

Y

N

N

N

El tipo de dirección asociada, como "casa", "trabajo" u "otro".

location.value

cadena

N

Y

S

Y

La ubicación de la oficina de la persona, como "Londres".

location.buildingId

cadena

N

Y

S

Y

El ID del edificio de la oficina de la persona, como "Londres".

location.deskCode

cadena

N

Y

S

Y

El código del despacho de la persona, como "5C1C".

location.floorName

cadena

N

Y

S

Y

El nombre de la planta en la que se encuentra la oficina de la persona (por ejemplo, "Planta 5").

location.floorSection

cadena

N

Y

S

Y

La sección de la planta de la ubicación, como "Sección C".

location.type

cadena

N

N

N

N

El tipo de ubicación, como "escritorio" o "edificio".

organizations.department

cadena

Y

S

S

Y

El departamento de la organización, como "Ingeniería".

organizations.description

cadena

Y

N

N

N

La descripción de la organización.

organizations.jobTitle

cadena

Y

S

S

Y

El puesto de la persona, como "Ingeniero de software".

organizations.location

cadena

Y

S

S

Y

La ubicación de la organización, como "Londres".

organizations.name

cadena

Y

S

S

Y

El nombre de la organización.

organizations.symbol

cadena

Y

N

N

N

Símbolo de cotización de la organización.

organizations.costCenter

cadena

Y

S

S

Y

El centro de costes de la organización, como "75B".

organizations.type

cadena

Y

N

N

N

El tipo de organización, como "trabajo" u "otro".

organizations.projects.name

cadena

Y

S

S

Y

El nombre del proyecto asignado a la persona, como "Operaciones de aprendizaje automático".

organizations.projects.description

cadena

Y

N

N

N

La descripción del proyecto asignado a la persona, como "Crear la mejor infraestructura de aprendizaje automático del mundo".

organizations.projects.role

cadena

Y

N

N

N

El rol de la persona en el proyecto, como "Director".

managers.personId

cadena

Y

S

S

Y

El ID de la persona de la cadena de gestión actual, empezando por el jefe inmediato y terminando por el jefe de mayor rango.

managers.email

cadena

Y

S

S

Y

La dirección de correo de cada responsable de la cadena de gestión de la persona, empezando por el responsable directo y terminando por el responsable de mayor nivel.

dottedLineReports.personId

cadena

Y

N

N

N

Los informes de línea de puntos de la persona (personId).

dottedLineReports.email

cadena

Y

N

N

N

Los informes de la persona con línea de puntos (email).

topCoworkers.personId

cadena

Y

N

N

N

Los compañeros de trabajo de la persona (personId).

topCoworkers.affinityScore

número

Y

N

N

N

La puntuación de afinidad de la persona en relación con sus compañeros de trabajo (se usa en la clasificación).

admins.personId

cadena

Y

N

N

N

Administradores asignados a la persona (personId).

admins.email

cadena

Y

N

N

N

Administradores asignados a la persona (email).

websites.type

cadena

Y

N

N

N

Tipo de sitio web de la persona, como "trabajo", "blog" u "otro".

websites.value

cadena

Y

N

N

N

El tipo de sitio web, como "https://example-pet-store.com".

directManager.personId

cadena

N

Y

S

Y

El ID de la persona que es el jefe directo o inmediato de la persona.

Carga útil de ejemplo para BigQuery

INSERT INTO `playground-koyel.ibank_ccai_uat.people_connector_3` (id, structData)
WITH records_to_insert AS (
  SELECT [
    -- Record 1: jdoe
    STRUCT('jdoe' as id, STRUCT(
        "jdoe" AS personId,
        STRUCT("Doe","Jane","Jane Doe","jdoe") AS name,
        [STRUCT("work","jdoe@example.net")] AS emails,
        [STRUCT("personal","9131568042")] AS phoneNumbers,
        false AS suspended,
        "13" AS employeeId,
        CAST(NULL AS STRING) as employeeType,
        CAST(NULL AS STRING) as employmentStatus,
        "focus" AS availabilityStatus,
        CAST(NULL AS DATETIME) AS creationDate,
        CAST(NULL AS DATETIME) AS modifiedDate,
        CAST(NULL AS DATETIME) AS deletionDate,
        CAST(NULL AS DATETIME) AS hireDate,
        STRUCT("Male","Male") AS gender,
        STRUCT(CAST(NULL AS STRING) AS url, CAST(NULL AS STRING) AS imageBinary, "png" as format) AS displayPhoto,
        [STRUCT("India","IN","Bangalore",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))] AS addresses,
        STRUCT("Bangalore","IN-LOCATION-01",CAST(NULL AS STRING),"7",CAST(NULL AS STRING),CAST(NULL AS STRING)) AS location,
        [STRUCT("Engineering","Our mission is to help organizations be more productive by making contextually relevant information and collaborators accessible at the right time","Software Engineer","Bangalore","Intranet search",CAST(NULL AS STRING),"80997GX000",CAST(NULL AS STRING),[STRUCT("People Search",CAST(NULL AS STRING),"Individual Contributor")])] AS organizations,
        [STRUCT("dwilson",CAST(NULL AS STRING)),STRUCT("smiller",CAST(NULL AS STRING)),STRUCT("jmartinez",CAST(NULL AS STRING))] AS managers,
        CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>) AS dottedLineReports,
        CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>) AS topCoworkers,
        CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>) AS admins,
        [STRUCT("personal","https://jdoe.myownpersonaldomain.com")] AS websites,
        STRUCT("dwilson") AS directManager
    ) AS structData),

    -- Record 2: psmith
    STRUCT('psmith' as id, STRUCT(
        "psmith",
        STRUCT("Smith","Peter","Peter Smith","psmith"),
        [STRUCT("work","psmith@example.net")],
        [STRUCT("personal","abc")],
        false, "1249989", CAST(NULL AS STRING), CAST(NULL AS STRING), "focus", CAST(NULL AS DATETIME), CAST(NULL AS DATETIME), CAST(NULL AS DATETIME), CAST(NULL AS DATETIME),
        STRUCT("Male","Male"),
        CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>),
        [STRUCT("India","IN","Bangalore",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))],
        STRUCT("Bangalore","IN-LOCATION-01",CAST(NULL AS STRING),"7",CAST(NULL AS STRING),CAST(NULL AS STRING)),
        [STRUCT("Engineering","Our mission is to help organizations be more productive by making contextually relevant information and collaborators accessible at the right time","Software Engineer","Bangalore","Intranet search",CAST(NULL AS STRING),"80997GX000",CAST(NULL AS STRING),[STRUCT("ACL",CAST(NULL AS STRING),"Individual Contributor")])],
        [STRUCT("dwilson",CAST(NULL AS STRING)),STRUCT("smiller",CAST(NULL AS STRING)),STRUCT("jmartinez",CAST(NULL AS STRING))],
        CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>), CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>), CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),
        CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),
        STRUCT("dwilson")
    ) AS structData),

    -- Record 3: mgarcia
    STRUCT('mgarcia' as id, STRUCT(
        "mgarcia",
        STRUCT("Garcia","Maria","Maria Garcia","mgarcia"),
        [STRUCT("work","mgarcia@example.net")],
        [STRUCT("personal","abc")],
        false, "1204052", CAST(NULL AS STRING), CAST(NULL AS STRING), "focus", CAST(NULL AS DATETIME), CAST(NULL AS DATETIME), CAST(NULL AS DATETIME), CAST(NULL AS DATETIME),
        STRUCT("Female","Female"),
        CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>),
        [STRUCT("India","IN","Bangalore",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))],
        STRUCT("Bangalore","IN-LOCATION-01",CAST(NULL AS STRING),"7",CAST(NULL AS STRING),CAST(NULL AS STRING)),
        [STRUCT("Engineering","Our mission is to help organizations be more productive by making contextually relevant information and collaborators accessible at the right time","Software Engineer","Bangalore","Intranet search",CAST(NULL AS STRING),"80997GX000",CAST(NULL AS STRING),[STRUCT("People Search",CAST(NULL AS STRING),"Individual Contributor")]), STRUCT("gBadminton","To organize our team's badminton community and make the sport accessible to all.","Organizer","Bangalore","OneBlr",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS ARRAY<STRUCT<name STRING, description STRING, role STRING>>))],
        [STRUCT("dwilson",CAST(NULL AS STRING)),STRUCT("smiller",CAST(NULL AS STRING)),STRUCT("jmartinez",CAST(NULL AS STRING))],
        CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>), CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>), CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),
        [STRUCT("personal","https://mgarcia.myownpersonaldomain.com")],
        STRUCT("dwilson")
    ) AS structData),

    -- Other records follow the same pattern...
    STRUCT('dwilson' as id, STRUCT("dwilson", STRUCT("Wilson","David","David Wilson","dwilson"),[STRUCT("work","dwilson@example.net")],[STRUCT("personal","abc")],false,"14",CAST(NULL AS STRING),CAST(NULL AS STRING),"focus",CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),STRUCT("Male","Male"),CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>), [STRUCT("India","IN","Bangalore",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))], STRUCT("Bangalore","IN-LOCATION-01",CAST(NULL AS STRING),"7",CAST(NULL AS STRING),CAST(NULL AS STRING)),[STRUCT("Engineering","Our mission is to help organizations be more productive by making contextually relevant information and collaborators accessible at the right time","Engineering Manager","Bangalore","Intranet search",CAST(NULL AS STRING),"80997GX000",CAST(NULL AS STRING),[STRUCT("Connectors",CAST(NULL AS STRING),"Engineering Manager")])],[STRUCT("smiller",CAST(NULL AS STRING)),STRUCT("jmartinez",CAST(NULL AS STRING))],CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),STRUCT("smiller")) AS structData),
    STRUCT('ejohnson' as id, STRUCT("ejohnson", STRUCT("Johnson","Emily","Emily Johnson","ejohnson"),[STRUCT("work","ejohnson@example.net")],[STRUCT("personal","abc")],false,"652365",CAST(NULL AS STRING),CAST(NULL AS STRING),"focus",CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),STRUCT("Male","Male"),CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>), [STRUCT("India","IN","Bangalore",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))], STRUCT("Bangalore","IN-LOCATION-01",CAST(NULL AS STRING),"7",CAST(NULL AS STRING),CAST(NULL AS STRING)),[STRUCT("Engineering","Our mission is to help organizations be more productive by making contextually relevant information and collaborators accessible at the right time","Senior Software Engineer","Bangalore","Intranet search",CAST(NULL AS STRING),"80997GX000",CAST(NULL AS STRING),[STRUCT("BAP Connector Integration",CAST(NULL AS STRING),"Team Lead")])],[STRUCT("smiller",CAST(NULL AS STRING)),STRUCT("jmartinez",CAST(NULL AS STRING))],CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),STRUCT("smiller")) AS structData),
    STRUCT('mbrown' as id, STRUCT("mbrown", STRUCT("Brown","Michael","Michael Brown","mbrown"),[STRUCT("work","mbrown@example.net")],[STRUCT("personal","abc")],false,"1007126",CAST(NULL AS STRING),CAST(NULL AS STRING),"focus",CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),STRUCT("Female","Female"),CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>), [STRUCT("India","IN","Bangalore",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))], STRUCT("Bangalore","IN-LOCATION-01",CAST(NULL AS STRING),"7",CAST(NULL AS STRING),CAST(NULL AS STRING)),[STRUCT("Engineering","Our mission is to help organizations be more productive by making contextually relevant information and collaborators accessible at the right time","Software Engineer","Bangalore","Intranet search",CAST(NULL AS STRING),"80997GX000",CAST(NULL AS STRING),[STRUCT("BAP Connector Integration",CAST(NULL AS STRING),"Individual Contributor")])],[STRUCT("smiller",CAST(NULL AS STRING)),STRUCT("jmartinez",CAST(NULL AS STRING))],CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),STRUCT("smiller")) AS structData),
    STRUCT('smiller' as id, STRUCT("smiller", STRUCT("Miller","Sarah","Sarah Miller","smiller"),[STRUCT("work","smiller@example.net")],[STRUCT("personal","abc")],false,"15",CAST(NULL AS STRING),CAST(NULL AS STRING),"focus",CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),STRUCT("Male","Male"),CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>), [STRUCT("India","IN","Bangalore",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))], STRUCT("Bangalore","IN-LOCATION-01",CAST(NULL AS STRING),"7",CAST(NULL AS STRING),CAST(NULL AS STRING)),[STRUCT("Engineering","Our mission is to help organizations be more productive by making contextually relevant information and collaborators accessible at the right time","Senior Engineering Manager","Bangalore","Intranet search",CAST(NULL AS STRING),"80997GX000",CAST(NULL AS STRING),[STRUCT("Intranet Search",CAST(NULL AS STRING),"Senior Engineering Manager")])],[STRUCT("jmartinez",CAST(NULL AS STRING))],CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),STRUCT("jmartinez")) AS structData),
    STRUCT('clee' as id, STRUCT("clee", STRUCT("Lee","Chris","Chris Lee","clee"),[STRUCT("work","clee@example.net")],[STRUCT("personal","abc")],false,"717389",CAST(NULL AS STRING),CAST(NULL AS STRING),"focus",CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),STRUCT("Female","Female"),CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>), [STRUCT("US","US","Kirkland",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))], STRUCT("Kirkland","US-KIR-6THC",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING)),[STRUCT("Engineering","Empower every GCP customer to transform themselves through intelligence from their data.","Software Engineer","Kirkland","Vertex AI Search",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS ARRAY<STRUCT<name STRING, description STRING, role STRING>>))],[STRUCT("jmartinez",CAST(NULL AS STRING))],CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),STRUCT("jmartinez")) AS structData),
    STRUCT('jmartinez' as id, STRUCT("jmartinez", STRUCT("Martinez","Jessica","Jessica Martinez","jmartinez"),[STRUCT("work","jmartinez@example.net")],[STRUCT("personal","abc")],false,"153035",CAST(NULL AS STRING),CAST(NULL AS STRING),"focus",CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),STRUCT("Male","Male"),CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>), [STRUCT("United States of America","US","Sunnyvale",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))], STRUCT("Sunnyvale","US-SVL-MP2",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING)),[STRUCT("Engineering","Empower every GCP customer to transform themselves through intelligence from their data.","Engineering Director","Sunnyvale","Vertex AI Search",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS ARRAY<STRUCT<name STRING, description STRING, role STRING>>))],CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),CAST(NULL AS STRUCT<personId STRING>)) AS structData),
    STRUCT('dtaylor' as id, STRUCT("dtaylor", STRUCT("Taylor","Daniel","Daniel Taylor","dtaylor"),[STRUCT("work","dtaylor@example.net")],[STRUCT("personal","abc")],false,"950380",CAST(NULL AS STRING),CAST(NULL AS STRING),"focus",CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),STRUCT("Female","Female"),CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>), [STRUCT("United States of America","US","Sunnyvale",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))], STRUCT("Sunnyvale","US-SVL-MP5",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING)),[STRUCT("Engineering","Empower every GCP customer to transform themselves through intelligence from their data.","Product Manager","Sunnyvale","Vertex AI Search",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS ARRAY<STRUCT<name STRING, description STRING, role STRING>>))],CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),CAST(NULL AS STRUCT<personId STRING>)) AS structData),
    STRUCT('oanderson' as id, STRUCT("oanderson", STRUCT("Anderson","Olivia","Olivia Anderson","oanderson"),[STRUCT("work","oanderson@example.net")],[STRUCT("personal","abc")],false,"103388",CAST(NULL AS STRING),CAST(NULL AS STRING),"focus",CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),STRUCT("Male","Male"),CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>), [STRUCT("United States of America","US","Remote",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))], STRUCT("Remote","US-REMOTE-MTV",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING)),[STRUCT("Engineering","Keep developers happy with their source code tools and services.","Git Maintainer",CAST(NULL AS STRING),"Developer Services",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS ARRAY<STRUCT<name STRING, description STRING, role STRING>>))],CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),CAST(NULL AS STRUCT<personId STRING>)) AS structData),
    STRUCT('mthomas' as id, STRUCT("mthomas", STRUCT("Thomas","Matthew","Matthew Thomas","mthomas"),[STRUCT("work","mthomas@example.net")],[STRUCT("personal","abc")],false,"363045",CAST(NULL AS STRING),CAST(NULL AS STRING),"focus",CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),STRUCT("Female","Female"),CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>), [STRUCT("United States of America","US","Mountain View",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))], STRUCT("Remote","US-MTV-40",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING)),[STRUCT("Finance","Getting more ambitious things done","CIO",CAST(NULL AS STRING),"Alphabet",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS ARRAY<STRUCT<name STRING, description STRING, role STRING>>))],CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),CAST(NULL AS STRUCT<personId STRING>)) AS structData),
    STRUCT('swhite' as id, STRUCT("swhite", STRUCT("White","Sophia","Sophia White","swhite"),[STRUCT("work","swhite@example.net")],[STRUCT("personal","abc")],false,"938578",CAST(NULL AS STRING),CAST(NULL AS STRING),"focus",CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),STRUCT("Male","Male"),CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>), [STRUCT("India","IN","Bangalore",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))], STRUCT("Bangalore","IN-LOCATION-01",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING)),[STRUCT("Customer","Successful Strategic Customer in the Cloud!","Strategic Cloud Engineer",CAST(NULL AS STRING),"Cloud Professional Services Organization (PSO)",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS ARRAY<STRUCT<name STRING, description STRING, role STRING>>))],CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),CAST(NULL AS STRUCT<personId STRING>)) AS structData),
    STRUCT('jharris' as id, STRUCT("jharris", STRUCT("Harris","James","James Harris","jharris"),[STRUCT("work","jharris@example.net")],[STRUCT("personal","abc")],false,"723457",CAST(NULL AS STRING),CAST(NULL AS STRING),"focus",CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),CAST(NULL AS DATETIME),STRUCT("Male","Male"),CAST(NULL AS STRUCT<url STRING, imageBinary STRING, format STRING>), [STRUCT("India","IN","Bangalore",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING))], STRUCT("Bangalore","IN-LOCATION-01",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING)),[STRUCT("Recruiting",CAST(NULL AS STRING),"Sr Recruiter",CAST(NULL AS STRING),"Hiring Committee",CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS STRING),CAST(NULL AS ARRAY<STRUCT<name STRING, description STRING, role STRING>>))],CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, affinityScore NUMERIC>>),CAST(NULL AS ARRAY<STRUCT<personId STRING, email STRING>>),CAST(NULL AS ARRAY<STRUCT<type STRING, value STRING>>),CAST(NULL AS STRUCT<personId STRING>)) AS structData)
  ] AS all_records
)
SELECT
  record.id,
  record.structData
FROM records_to_insert, UNNEST(all_records) as record;

Carga útil de ejemplo para Cloud Storage

{"id":"person1","structData":{"working_from_home": "false", "personId":"person1","name":{"familyName":"Kumar","givenName":"person1","displayName":"person1 Kumar","username":"person1"},"emails":[{"type":"work","value":"person1@example.net"}],"phoneNumbers":[{"type":"personal","value":"1234"}],"suspended":false,"employeeId":"13","availabilityStatus":"focus","gender":{"addressMeAs":"Male","type":"Male"},"addresses":[{"country":"India","countryCode":"IN","locality":"Bangalore"}],"location":{"value":"Bangalore","buildingId":"IN-LOCATION-01","floorName":"7"},"organizations":[{"department":"Engineering","description":"Our mission is to help organizations be more productive by making contextually relevant information and collaborators accessible at the right time","jobTitle":"Software Engineer","location":"Bangalore","name":"Intranet search","projects":[{"name":"People Search","role":"Individual Contributor"}],"costCenter":"123"}],"directManager":{"personId":"manager1"},"managers":[{"personId":"manager1"},{"personId":"manager2"},{"personId":"manager3"}],"websites":[{"type":"personal","value":"https://person1.myownpersonaldomain.com"}],"displayPhoto":{"imageBinary":{"format":"image/png","data":"binary_content"}}}}