ייבוא נתוני אנשים ממקור בהתאמה אישית

במקום לסנכרן נתוני אנשים מ-Google Workspace, אתם יכולים לייבא נתוני אנשים מ-Cloud Storage או מ-BigQuery. בדף הזה מוסבר איך ליצור מחבר לחיפוש אנשים ולייבא נתונים מותאמים אישית על אנשים מקטגוריה של Cloud Storage או מטבלה ב-BigQuery.

לפני שמתחילים

הטמעת נתוני אנשים ממקור מותאם אישית

כדי להטמיע נתוני אנשים באמצעות מסוף Google Cloud , פועלים לפי השלבים הבאים:

המסוף

  1. נכנסים לדף Gemini Enterprise במסוף Google Cloud .

    Gemini Enterprise

  2. נכנסים לדף Data Stores.

  3. ‫לוחצים על Create Data Store.

    הכפתור ליצירת מאגר נתונים.
    יוצרים מאגר נתונים חדש.

  4. בדף Select a data source, בקטע Cloud sources, בוחרים באפשרות People via Custom Connector.

    בוחרים מקור נתונים.
    בוחרים מקור נתונים.

  5. מייבאים את נתוני האנשים:

    • ייבוא במועד מאוחר יותר: אם עדיין לא ייבאתם את נתוני האנשים ל-Cloud SQL או ל-BigQuery, בחרו באפשרות ייבוא במועד מאוחר יותר.

    • ‫BigQuery: ייבוא הנתונים מטבלה ב-BigQuery.

    • ‫Cloud Storage: ייבוא הנתונים מטבלה ב-Cloud Storage.

    אפשרויות לייבוא נתוני אנשים, כולל ייבוא במועד מאוחר יותר, מ-BigQuery או מ-Cloud Storage.
    ייבוא נתוני אנשים.

  6. לוחצים על Continue.

  7. בוחרים אזור למאגר הנתונים.

  8. נותנים שם למאגר הנתונים.

  9. אופציונלי: אם צריך להגדיר בקרת גישה לנתונים, בוחרים באפשרות מאגר הנתונים הזה מכיל מידע על בקרת גישה. מידע נוסף על בקרת גישה למקורות נתונים

  10. לוחצים על יצירה.

    מגדירים ויוצרים את מחבר הנתונים.
    מגדירים את מחבר הנתונים.

  11. כדי לבדוק את סטטוס ההטמעה, נכנסים לדף Data Stores ולוחצים על שם מאגר הנתונים כדי לראות פרטים עליו בדף Data. כשהסטטוס בעמודה בכרטיסייה פעילות משתנה מבתהליך להייבוא הושלם, הטמעת הנתונים הסתיימה.

    בהתאם לגודל הנתונים, הטמעת הנתונים יכולה להימשך כמה דקות או כמה שעות.

התאמה אישית של תוצאות החיפוש

כדי לכלול מידע אישי בתוצאות החיפוש או להחריג אותו מהן, פועלים לפי השלבים הבאים:

  1. במאגר הנתונים, לוחצים על הכרטיסייה Entity ואז על Users.

  2. בדף משתמשים, לוחצים על הכרטיסייה סכימה.

  3. לוחצים על Edit.

  4. בוחרים או מבטלים את הבחירה במאפיינים, כמו מדינה, כדי לציין אם אפשר לאחזר אותם, לחפש אותם ולהוסיף אותם לאינדקס. כדי שהמשתמשים יוכלו לחפש את המאפיין, צריך לסמן אותו בתור Retrievable,‏ Indexable ו-Searchable.

  5. לוחצים על Save.

תצוגה מקדימה של תוצאות החיפוש של אנשים

  1. אם כבר קישרתם את מאגר הנתונים לאפליקציה, לוחצים על Apps ואז על שם האפליקציה.

  2. לוחצים על תצוגה מקדימה.

  3. חפשו אנשים בארגון באמצעות שורת החיפוש. בתוצאות החיפוש מוצגים פרטים כמו שם, תפקיד, כתובת אימייל ותמונת פרופיל.

    כדי לפתוח את אפליקציית האינטרנט של Gemini Enterprise בדפדפן, עיינו במאמר הצגת אפליקציית האינטרנט של החיפוש.

    צפייה בתצוגה מקדימה של תוצאות החיפוש.
    צופים בתצוגה מקדימה של תוצאות החיפוש.

    אם הפכתם מאפיינים מותאמים אישית לניתנים לחיפוש, אתם יכולים להשתמש במאפיינים בחיפושים, אבל המאפיינים עצמם לא מוחזרים בפרופילים. לדוגמה, אם team-position הוא מאפיין מותאם אישית שמסומן בסכימה כניתן לאחזור, לאינדוקס ולחיפוש, אפשר לחפש אנשים עם תפקיד ספציפי בצוות, כמו "מוביל טכני". תקבלו רשימה של אנשים בתפקיד הזה, אבל הפלט לא יכלול את המילים "ראש צוות טכני".

הצגת אפליקציית האינטרנט של החיפוש

כדי לראות את אפליקציית האינטרנט של Gemini Enterprise:

  1. בתפריט הניווט, לוחצים על Integration (שילוב).

  2. מוודאים שהאפשרות הפעלת אפליקציית האינטרנט מופעלת.

  3. בקטע The link to your web app, לוחצים על Copy ופותחים את הקישור בדפדפן.

דוגמה לשדות סכימה שמוגדרים על ידי הארגון לנתוני אנשים

קבוצת הנתונים של כל אדם צריכה להיות בפורמט של הסכימה הבאה. בדוגמה של קובץ שיובא מ-Cloud Storage, כל שורה בקובץ ה-JSONL מייצגת אדם. קובץ תקין אבל מינימלי יכול להיראות כך:

{"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"}}}

שם השדה

סוג

ניתן לחזרה

ניתן להוסיף לאינדקס

ניתן לאחזור

זמין בחיפוש

תיאור

personId

מחרוזת

N

Y

Y

Y

המזהה הייחודי של האדם. שדה חובה. הערך בשדה personId חייב להיות זהה לערך בשדה id של המסמך.

name.familyName

מחרוזת

N

Y

Y

Y

שם המשפחה של האדם.

name.givenName

מחרוזת

N

Y

Y

Y

השם הפרטי של האדם.

name.displayName

מחרוזת

N

Y

Y

Y

השם המוצג של המשתמש.

name.username

מחרוזת

N

Y

Y

Y

שם המשתמש של האדם.

emails.type

מחרוזת

Y

N

N

N

סוג חשבון האימייל, למשל "עבודה", "בית", "אחר" או "בהתאמה אישית".

emails.value

מחרוזת

Y

Y

Y

Y

כתובת האימייל של המשתמש, למשל "acruz@example.net".

phoneNumbers.type

מחרוזת

Y

Y

Y

Y

סוג מספר הטלפון, למשל "משרד", "נייד" או "אחר".

phoneNumbers.value

מחרוזת

Y

Y

Y

Y

מספר הטלפון של האדם, למשל "‎+1 800-555-1212".

suspended

בוליאני

N

N

N

N

אם המשתמש מושעה בארגון.

employeeId

מחרוזת

N

Y

Y

Y

מזהה העובד של האדם.

employeeType

מחרוזת

N

Y

Y

Y

סוג העובד, למשל "עובד במשרה מלאה", "מתמחה" או "עובד זמני".

employmentStatus

מחרוזת

N

N

N

N

סטטוס התעסוקה של האדם.

availabilityStatus

מחרוזת

N

N

N

N

סטטוס הזמינות של המשתמש, למשל "לא בעבודה", "עבודה מהבית" או "בפגישה".

creationDate

datetime

N

N

N

N

תאריך היצירה של האדם במערכת המקור.

modifiedDate

datetime

N

N

N

N

התאריך שבו בוצע השינוי האחרון בפרטי האדם במערכת המקור.

deletionDate

datetime

N

N

N

N

תאריך המחיקה של המשתמש במערכת המקור.

hireDate

datetime

N

Y

Y

N

התאריך שבו העובד התחיל לעבוד.

gender.addressMeAs

מחרוזת

N

Y

Y

Y

לשון הפנייה המועדפת על האדם, כמו  "הוא", "היא" או "הם".

gender.type

מחרוזת

N

Y

Y

Y

המגדר של האדם, למשל "זכר", "נקבה" או "אחר".

displayPhoto.url

מחרוזת

N

Y

Y

Y

כתובת ה-URL של התמונה.

displayPhoto.imageBinary

מחרוזת

N

Y

Y

Y

המחרוזת בקידוד Base64 של הקובץ הבינארי של התמונה.

displayPhoto.format

מחרוזת

N

Y

Y

Y

הפורמט של הקובץ הבינארי של התמונה, למשל png.

addresses.country

מחרוזת

Y

Y

Y

Y

המדינה שמוגדרת בכתובת המשויכת, למשל "ישראל".

addresses.countryCode

מחרוזת

Y

N

N

N

קוד המדינה של הכתובת המשויכת, למשל "US".

addresses.locality

מחרוזת

Y

Y

Y

Y

היישוב של הכתובת המשויכת, למשל "תל אביב".

addresses.poBox

מחרוזת

Y

N

N

N

תא הדואר של הכתובת המשויכת, למשל "תא דואר 123".

addresses.postalCode

מחרוזת

Y

N

N

N

המיקוד של הכתובת המשויכת, למשל "94045".

addresses.region

מחרוזת

Y

N

N

N

האזור של הכתובת המשויכת, למשל "CA".

addresses.streetAddress

מחרוזת

Y

Y

Y

Y

הרחוב ומספר הבית המשויכים, למשל "רחוב הזיתים 23".

addresses.type

מחרוזת

Y

N

N

N

סוג הכתובת המשויכת, למשל "בית", "עבודה" או "אחר".

location.value

מחרוזת

N

Y

Y

Y

מיקום המשרד של האדם, למשל "לונדון".

location.buildingId

מחרוזת

N

Y

Y

Y

מזהה הבניין של מיקום המשרד של המשתמש, למשל "לונדון".

location.deskCode

מחרוזת

N

Y

Y

Y

קוד השולחן של מיקום המשרד של האדם, למשל "5C1C".

location.floorName

מחרוזת

N

Y

Y

Y

שם הקומה שבה נמצא המשרד של המשתמש, למשל "קומה 5".

location.floorSection

מחרוזת

N

Y

Y

Y

האגף בקומה של המיקום, למשל "אגף ג'".

location.type

מחרוזת

N

N

N

N

סוג המיקום, למשל "שולחן עבודה" או "בניין".

organizations.department

מחרוזת

Y

Y

Y

Y

המחלקה בארגון, למשל "הנדסה".

organizations.description

מחרוזת

Y

N

N

N

תיאור הארגון.

organizations.jobTitle

מחרוזת

Y

Y

Y

Y

התפקיד של האדם, למשל "מהנדס תוכנה".

organizations.location

מחרוזת

Y

Y

Y

Y

המיקום של הארגון, למשל "לונדון".

organizations.name

מחרוזת

Y

Y

Y

Y

שם הארגון.

organizations.symbol

מחרוזת

Y

N

N

N

סמל המניה של הארגון.

organizations.costCenter

מחרוזת

Y

Y

Y

Y

מרכז העלויות של הארגון, למשל "75B".

organizations.type

מחרוזת

Y

N

N

N

סוג הארגון, למשל "עבודה" או "אחר".

organizations.projects.name

מחרוזת

Y

Y

Y

Y

שם הפרויקט שהוקצה לאדם, למשל "ML Ops".

organizations.projects.description

מחרוזת

Y

N

N

N

תיאור הפרויקט שהוקצה לאדם, למשל "בניית תשתית ה-ML הטובה בעולם".

organizations.projects.role

מחרוזת

Y

N

N

N

התפקיד של האדם בפרויקט, למשל "מוביל".

managers.personId

מחרוזת

Y

Y

Y

Y

ה-personId של שרשרת הניהול הנוכחית של המשתמש, החל מהמנהל הישיר ועד למנהל הבכיר ביותר.

managers.email

מחרוזת

Y

Y

Y

Y

כתובת האימייל של כל מנהל בשרשרת הניהול הנוכחית של האדם, החל מהמנהל הישיר ועד למנהל הבכיר ביותר.

dottedLineReports.personId

מחרוזת

Y

N

N

N

העובדים שמדווחים לעובד הזה באופן לא ישיר (personId).

dottedLineReports.email

מחרוזת

Y

N

N

N

העובדים שמדווחים לאותו אדם באופן עקיף (email).

topCoworkers.personId

מחרוזת

Y

N

N

N

הקולגות של המשתמש (personId).

topCoworkers.affinityScore

מספר

Y

N

N

N

ציון מידת הקרבה של האדם ביחס לקולגות (משמש לדירוג).

admins.personId

מחרוזת

Y

N

N

N

האדמינים שהוקצו למשתמש (personId).

admins.email

מחרוזת

Y

N

N

N

האדמינים שהוקצו למשתמש (email).

websites.type

מחרוזת

Y

N

N

N

סוג האתר של האדם, כמו "עבודה", "בלוג" או "אחר".

websites.value

מחרוזת

Y

N

N

N

סוג האתר, למשל "https://example-pet-store.com".

directManager.personId

מחרוזת

N

Y

Y

Y

מזהה המשתמש של המנהל הישיר של המשתמש.

דוגמה למטען ייעודי (payload) ב-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;

מטען ייעודי (payload) לדוגמה ב-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"}}}}