במקום לסנכרן נתוני אנשים מ-Google Workspace, אפשר לייבא נתוני אנשים מ-Cloud Storage או מ-BigQuery. בדף הזה מוסבר איך ליצור מחבר לחיפוש אנשים ולייבא נתונים מותאמים אישית על אנשים מקטגוריה של Cloud Storage או מטבלה ב-BigQuery.
לפני שמתחילים
- נתוני העובדים צריכים להיות בטבלה ב-BigQuery או בקטגוריה של Cloud Storage.
- הנתונים צריכים להיות בפורמט סכימה שצוין על ידי Google. פרטים על הסכימה זמינים במאמר סכימה שצוינה על ידי Google לנתוני אנשים.
העברת נתוני אנשים ממקור מותאם אישית
כדי להשתמש במסוף Google Cloud להעברת נתוני אנשים, פועלים לפי השלבים הבאים:
המסוף
נכנסים לדף Gemini Enterprise במסוף Google Cloud .
עוברים לדף מאגרי נתונים.
לוחצים על יצירת מאגר נתונים.
יוצרים מאגר נתונים חדש. בדף Select a data source, בקטע Cloud sources, בוחרים באפשרות People via Custom Connector.
בוחרים מקור נתונים. מייבאים את נתוני האנשים:
ייבוא מאוחר יותר: אם עדיין לא ייבאתם את נתוני האנשים שלכם ל-Cloud SQL או ל-BigQuery, בוחרים באפשרות ייבוא מאוחר יותר.
BigQuery: ייבוא הנתונים מטבלה ב-BigQuery.
Cloud Storage: ייבוא הנתונים מטבלה ב-Cloud Storage.
ייבוא נתונים של אנשים. לוחצים על Continue.
בוחרים אזור למאגר הנתונים.
מזינים שם למאגר הנתונים.
אופציונלי: אם צריך להגדיר בקרת גישה לנתונים, בוחרים באפשרות מאגר הנתונים הזה מכיל מידע על בקרת גישה. מידע נוסף מופיע במאמר בנושא בקרת גישה למקורות נתונים.
לוחצים על יצירה.
מגדירים את מחבר הנתונים. כדי לבדוק את סטטוס ההטמעה, עוברים לדף מאגרי נתונים ולוחצים על השם של מאגר הנתונים כדי לראות את הפרטים שלו בדף נתונים. ההטמעה מסתיימת כשהסטטוס בעמודה סטטוס בכרטיסייה פעילות משתנה מבתהליך להייבוא הושלם.
בהתאם לגודל הנתונים, תהליך ההטמעה יכול להימשך כמה דקות או כמה שעות.
התאמה אישית של תוצאות החיפוש
כדי לכלול או להחריג מידע אישי מתוצאות החיפוש, פועלים לפי השלבים הבאים:
במאגר הנתונים, לוחצים על הכרטיסייה ישות ואז על משתמשים.
בדף משתמשים, לוחצים על הכרטיסייה סכימה.
לוחצים על Edit.
בוחרים או מבטלים את הבחירה במאפיינים, כמו מדינה, כדי לציין אם אפשר לאחזר אותם, לחפש אותם ולכלול אותם באינדקס. כדי שהמאפיין יהיה זמין לחיפוש, צריך לסמן אותו כניתן לאחזור, ניתן לאינדוקס וזמין לחיפוש.
לוחצים על Save.
תצוגה מקדימה של תוצאות חיפוש של אנשים
אם כבר קישרתם את מאגר הנתונים לאפליקציה, לוחצים על אפליקציות ואז על שם האפליקציה.
לוחצים על תצוגה מקדימה.
מחפשים אנשים בארגון באמצעות סרגל החיפוש. בתוצאות החיפוש מוצגים פרטים כמו שם, תפקיד, כתובת אימייל ותמונת פרופיל.
כדי לפתוח את אפליקציית האינטרנט של Gemini Enterprise בדפדפן, אפשר לעיין במאמר בנושא צפייה באפליקציית האינטרנט של החיפוש.
תצוגה מקדימה של תוצאות החיפוש. אם הגדרתם מאפיינים מותאמים אישית כמאפיינים שאפשר לחפש, תוכלו להשתמש במאפיינים האלה בחיפושים, אבל המאפיינים עצמם לא יופיעו בפרופילים. לדוגמה, אם
team-positionהוא מאפיין מותאם אישית ומסומן כמאפיין שאפשר לאחזר, להוסיף לאינדקס ולחפש בסכימה, אפשר לחפש אנשים עם תפקיד ספציפי בצוות, כמו 'ראש צוות טכני'. מקבלים רשימה של אנשים שמחזיקים בתפקיד הזה, אבל הפלט לא יכלול את המילים "ראש צוות טכני".
הצגת אפליקציית האינטרנט לחיפוש
כדי לראות את אפליקציית האינטרנט של Gemini Enterprise:
בתפריט הניווט, לוחצים על שילוב.
מוודאים שהאפשרות הפעלת אפליקציית האינטרנט מופעלת.
בקטע 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 |
בחירת לשון הפנייה המועדפת של האדם, כמו "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 |
הדוחות המקווקווים של האדם ( |
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;
מטען ייעודי לדוגמה ל-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"}}}}