במקום לסנכרן נתוני אנשים מ-Google Workspace, אתם יכולים לייבא נתוני אנשים מ-Cloud Storage או מ-BigQuery. בדף הזה מוסבר איך ליצור מחבר לחיפוש אנשים ולייבא נתונים מותאמים אישית על אנשים מקטגוריה של Cloud Storage או מטבלה ב-BigQuery.
לפני שמתחילים
- נתוני האנשים צריכים להיות בטבלה ב-BigQuery או בקטגוריה של Cloud Storage.
- הנתונים צריכים להיות בסכימה ש-Google ציינה. לפרטים על הסכימה, קראו את המאמר סכימה שצוינה על ידי Google לנתוני אנשים.
הטמעת נתוני אנשים ממקור מותאם אישית
כדי להטמיע נתוני אנשים באמצעות מסוף Google Cloud , פועלים לפי השלבים הבאים:
המסוף
נכנסים לדף Gemini Enterprise במסוף Google Cloud .
נכנסים לדף Data Stores.
לוחצים על Create Data Store.
יוצרים מאגר נתונים חדש. בדף Select a data source, בקטע Cloud sources, בוחרים באפשרות People via Custom Connector.
בוחרים מקור נתונים. מייבאים את נתוני האנשים:
ייבוא במועד מאוחר יותר: אם עדיין לא ייבאתם את נתוני האנשים ל-Cloud SQL או ל-BigQuery, בחרו באפשרות ייבוא במועד מאוחר יותר.
BigQuery: ייבוא הנתונים מטבלה ב-BigQuery.
Cloud Storage: ייבוא הנתונים מטבלה ב-Cloud Storage.
ייבוא נתוני אנשים. לוחצים על Continue.
בוחרים אזור למאגר הנתונים.
נותנים שם למאגר הנתונים.
אופציונלי: אם צריך להגדיר בקרת גישה לנתונים, בוחרים באפשרות מאגר הנתונים הזה מכיל מידע על בקרת גישה. מידע נוסף על בקרת גישה למקורות נתונים
לוחצים על יצירה.
מגדירים את מחבר הנתונים. כדי לבדוק את סטטוס ההטמעה, נכנסים לדף Data Stores ולוחצים על שם מאגר הנתונים כדי לראות פרטים עליו בדף Data. כשהסטטוס בעמודה בכרטיסייה פעילות משתנה מבתהליך להייבוא הושלם, הטמעת הנתונים הסתיימה.
בהתאם לגודל הנתונים, הטמעת הנתונים יכולה להימשך כמה דקות או כמה שעות.
התאמה אישית של תוצאות החיפוש
כדי לכלול מידע אישי בתוצאות החיפוש או להחריג אותו מהן, פועלים לפי השלבים הבאים:
במאגר הנתונים, לוחצים על הכרטיסייה Entity ואז על Users.
בדף משתמשים, לוחצים על הכרטיסייה סכימה.
לוחצים על Edit.
בוחרים או מבטלים את הבחירה במאפיינים, כמו מדינה, כדי לציין אם אפשר לאחזר אותם, לחפש אותם ולהוסיף אותם לאינדקס. כדי שהמשתמשים יוכלו לחפש את המאפיין, צריך לסמן אותו בתור Retrievable, Indexable ו-Searchable.
לוחצים על Save.
תצוגה מקדימה של תוצאות החיפוש של אנשים
אם כבר קישרתם את מאגר הנתונים לאפליקציה, לוחצים על Apps ואז על שם האפליקציה.
לוחצים על תצוגה מקדימה.
חפשו אנשים בארגון באמצעות שורת החיפוש. בתוצאות החיפוש מוצגים פרטים כמו שם, תפקיד, כתובת אימייל ותמונת פרופיל.
כדי לפתוח את אפליקציית האינטרנט של Gemini Enterprise בדפדפן, עיינו במאמר הצגת אפליקציית האינטרנט של החיפוש.
צופים בתצוגה מקדימה של תוצאות החיפוש. אם הפכתם מאפיינים מותאמים אישית לניתנים לחיפוש, אתם יכולים להשתמש במאפיינים בחיפושים, אבל המאפיינים עצמם לא מוחזרים בפרופילים. לדוגמה, אם
team-positionהוא מאפיין מותאם אישית שמסומן בסכימה כניתן לאחזור, לאינדוקס ולחיפוש, אפשר לחפש אנשים עם תפקיד ספציפי בצוות, כמו "מוביל טכני". תקבלו רשימה של אנשים בתפקיד הזה, אבל הפלט לא יכלול את המילים "ראש צוות טכני".
הצגת אפליקציית האינטרנט של החיפוש
כדי לראות את אפליקציית האינטרנט של Gemini Enterprise:
בתפריט הניווט, לוחצים על Integration (שילוב).
מוודאים שהאפשרות הפעלת אפליקציית האינטרנט מופעלת.
בקטע 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 |
המזהה הייחודי של האדם. שדה חובה. הערך בשדה |
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 |
העובדים שמדווחים לעובד הזה באופן לא ישיר ( |
dottedLineReports.email |
מחרוזת |
Y |
N |
N |
N |
העובדים שמדווחים לאותו אדם באופן עקיף ( |
topCoworkers.personId |
מחרוזת |
Y |
N |
N |
N |
הקולגות של המשתמש ( |
topCoworkers.affinityScore |
מספר |
Y |
N |
N |
N |
ציון מידת הקרבה של האדם ביחס לקולגות (משמש לדירוג). |
admins.personId |
מחרוזת |
Y |
N |
N |
N |
האדמינים שהוקצו למשתמש ( |
admins.email |
מחרוזת |
Y |
N |
N |
N |
האדמינים שהוקצו למשתמש ( |
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"}}}}