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

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

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

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

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

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

המסוף

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

    Gemini Enterprise

  2. עוברים לדף מאגרי נתונים.

  3. לוחצים על יצירת מאגר נתונים.

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

  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. כדי לבדוק את סטטוס ההטמעה, עוברים לדף מאגרי נתונים ולוחצים על השם של מאגר הנתונים כדי לראות את הפרטים שלו בדף נתונים. ההטמעה מסתיימת כשהסטטוס בעמודה סטטוס בכרטיסייה פעילות משתנה מבתהליך להייבוא הושלם.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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

בחירת לשון הפנייה המועדפת של האדם, כמו  "he/him",‏ "she/her" או "they/them".

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

היישוב של הכתובת המשויכת, למשל 'Mountain View'.

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

הכתובת המשויכת, למשל 'שדרות ירושלים 65'.

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

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

organizations.projects.role

מחרוזת

Y

N

N

N

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

managers.personId

מחרוזת

Y

Y

Y

Y

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

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;

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