Daripada menyelaraskan data pengguna dari Google Workspace, Anda dapat mengimpor data pengguna dari Cloud Storage atau BigQuery. Halaman ini menjelaskan cara membuat konektor penelusuran orang dan mengimpor data kustom tentang orang dari bucket Cloud Storage atau tabel BigQuery.
Sebelum memulai
- Anda harus memiliki data orang di tabel BigQuery atau bucket Cloud Storage.
- Anda harus memiliki data dalam skema yang ditentukan Google. Untuk mengetahui detail tentang skema, lihat Skema yang ditentukan Google untuk data orang.
Menyerap data orang dari sumber kustom
Untuk menggunakan konsol Google Cloud guna menyerap data orang, ikuti langkah-langkah berikut:
Konsol
Di konsol Google Cloud , buka halaman Gemini Enterprise.
Buka halaman Data Stores.
Klik
Create Data Store.Buat penyimpanan data baru. Di halaman Pilih sumber data, di bagian Sumber cloud, pilih Orang melalui Konektor Kustom.
Pilih sumber data. Impor data orang:
Impor nanti: Jika Anda belum mengimpor data orang ke Cloud SQL atau BigQuery, pilih Impor nanti.
BigQuery: Impor data dari tabel BigQuery.
Cloud Storage: Impor data dari tabel Cloud Storage.
Impor data orang. Klik Lanjutkan.
Pilih region untuk penyimpanan data Anda.
Masukkan nama untuk penyimpanan data Anda.
Opsional: Jika data perlu dikontrol aksesnya, pilih This data store contains access control information. Untuk mengetahui informasi selengkapnya, lihat Kontrol akses sumber data.
Klik Buat.
Konfigurasi konektor data. Untuk memeriksa status penyerapan, buka halaman Data Stores dan klik nama penyimpanan data Anda untuk melihat detailnya di halaman Data. Saat kolom status di tab Aktivitas berubah dari Sedang berlangsung menjadi Impor selesai, penyerapan selesai.
Bergantung pada ukuran data Anda, penyerapan dapat memerlukan waktu beberapa menit atau beberapa jam.
Menyesuaikan hasil penelusuran
Untuk menyertakan atau mengecualikan informasi pribadi dari hasil penelusuran, ikuti langkah-langkah berikut:
Di penyimpanan data Anda, klik tab Entitas, lalu klik Pengguna.
Di halaman Pengguna, klik tab Skema.
Klik Edit.
Pilih atau hapus atribut, seperti negara, untuk menentukan apakah atribut tersebut dapat diambil, dapat ditelusuri, dan dapat diindeks. Agar dapat ditelusuri, atribut harus ditandai Dapat Diambil, Dapat Diindeks, dan Dapat Ditelusuri.
Klik Simpan.
Melihat pratinjau hasil penelusuran orang
Jika Anda telah menghubungkan penyimpanan data ke aplikasi, klik Aplikasi, lalu klik nama aplikasi Anda.
Klik Pratinjau.
Telusuri orang-orang di organisasi Anda menggunakan kotak penelusuran. Hasil penelusuran menampilkan detail seperti nama, jabatan, email, dan foto profil.
Untuk membuka aplikasi web Gemini Enterprise di browser, lihat Melihat aplikasi web penelusuran.
Melihat pratinjau hasil penelusuran. Jika Anda telah membuat atribut kustom dapat ditelusuri, Anda dapat menggunakan atribut dalam penelusuran, tetapi atribut itu sendiri tidak ditampilkan dalam profil. Misalnya, jika
team-position
adalah atribut kustom dan ditandai dapat diambil, diindeks, dan dapat ditelusuri dalam skema, maka Anda dapat menelusuri orang dengan posisi tim tertentu, seperti "pemimpin teknis". Anda akan mendapatkan daftar orang yang memiliki posisi tersebut, tetapi output tidak akan menyertakan kata "tech lead".
Melihat aplikasi web penelusuran
Untuk melihat aplikasi web Gemini Enterprise Anda, lakukan hal berikut:
Di menu navigasi, klik Integrasi.
Pastikan Aktifkan Aplikasi Web diaktifkan.
Di bagian The link to your web app, klik Copy, lalu buka link di browser Anda.
Contoh kolom skema yang ditentukan Organisasi untuk data orang
Set data untuk setiap orang harus diformat sesuai dengan skema berikut. Dalam contoh file yang diimpor dari Cloud Storage, setiap baris file JSONL mewakili satu orang. File yang valid tetapi minimal mungkin terlihat seperti berikut:
{"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"}}}
Nama Kolom |
Jenis |
Dapat diulang |
Indexable |
Dapat diambil |
Dapat ditelusuri |
Deskripsi |
---|---|---|---|---|---|---|
personId |
string |
N |
Y |
Y |
Y |
ID unik orang tersebut. Kolom wajib diisi. Nilai
kolom |
name.familyName |
string |
N |
Y |
Y |
Y |
Nama keluarga/nama belakang orang tersebut. |
name.givenName |
string |
N |
Y |
Y |
Y |
Nama depan orang tersebut. |
name.displayName |
string |
N |
Y |
Y |
Y |
Nama tampilan orang tersebut. |
name.username |
string |
N |
Y |
Y |
Y |
Nama pengguna orang tersebut. |
emails.type |
string |
Y |
N |
N |
N |
Jenis akun email, seperti "kantor", "rumah", "lainnya", atau "kustom". |
emails.value |
string |
Y |
Y |
Y |
Y |
Alamat email orang tersebut, seperti "acruz@example.net". |
phoneNumbers.type |
string |
Y |
Y |
Y |
Y |
Jenis nomor telepon, seperti "kantor", "seluler", atau "lainnya". |
phoneNumbers.value |
string |
Y |
Y |
Y |
Y |
Nomor telepon orang tersebut, seperti "+1 800-555-1212". |
suspended |
boolean |
N |
N |
N |
N |
Apakah orang tersebut ditangguhkan di organisasi. |
employeeId |
string |
N |
Y |
Y |
Y |
ID karyawan orang tersebut. |
employeeType |
string |
N |
Y |
Y |
Y |
Jenis karyawan orang tersebut, seperti "FTE", "Intern", atau "Temp". |
employmentStatus |
string |
N |
N |
N |
N |
Status pekerjaan orang tersebut. |
availabilityStatus |
string |
N |
N |
N |
N |
Status ketersediaan orang tersebut, seperti "OOO", "WFH", atau "Sedang Rapat". |
creationDate |
datetime |
N |
N |
N |
N |
Tanggal pembuatan orang tersebut di sistem sumber. |
modifiedDate |
datetime |
N |
N |
N |
N |
Tanggal terakhir diubah orang tersebut di sistem sumber. |
deletionDate |
datetime |
N |
N |
N |
N |
Tanggal penghapusan orang tersebut di sistem sumber. |
hireDate |
datetime |
N |
Y |
Y |
N |
Tanggal saat orang tersebut dipekerjakan. |
gender.addressMeAs |
string |
N |
Y |
Y |
Y |
Pilihan kata ganti orang yang disukai orang tersebut, seperti "dia/ia", "dia/ia", atau "mereka/mereka". |
gender.type |
string |
N |
Y |
Y |
Y |
Gender orang tersebut, seperti "laki-laki", "perempuan", atau "lainnya". |
displayPhoto.url |
string |
N |
Y |
Y |
Y |
URL foto. |
displayPhoto.imageBinary |
string |
N |
Y |
Y |
Y |
String berenkode Base64 dari biner gambar foto. |
displayPhoto.format |
string |
N |
Y |
Y |
Y |
Format biner gambar, seperti “png”. |
addresses.country |
string |
Y |
Y |
Y |
Y |
Negara alamat terkait, seperti "Amerika Serikat". |
addresses.countryCode |
string |
Y |
N |
N |
N |
Kode negara alamat terkait, seperti "US". |
addresses.locality |
string |
Y |
Y |
Y |
Y |
Lokalitas alamat terkait, seperti "Mountain View". |
addresses.poBox |
string |
Y |
N |
N |
N |
PO Box alamat terkait, seperti "PO Box 123". |
addresses.postalCode |
string |
Y |
N |
N |
N |
Kode pos alamat terkait, seperti "94045". |
addresses.region |
string |
Y |
N |
N |
N |
Wilayah alamat terkait, seperti "CA". |
addresses.streetAddress |
string |
Y |
Y |
Y |
Y |
Alamat jalan terkait, seperti "1800 Amphibious Blvd". |
addresses.type |
string |
Y |
N |
N |
N |
Jenis alamat terkait, seperti "rumah", "kantor", atau "lainnya". |
location.value |
string |
N |
Y |
Y |
Y |
Lokasi kantor orang tersebut, seperti "London". |
location.buildingId |
string |
N |
Y |
Y |
Y |
ID gedung lokasi kantor orang tersebut, seperti "London". |
location.deskCode |
string |
N |
Y |
Y |
Y |
Kode meja lokasi kantor orang tersebut, seperti "5C1C". |
location.floorName |
string |
N |
Y |
Y |
Y |
Nama lantai lokasi kantor orang tersebut, seperti "Lantai 5". |
location.floorSection |
string |
N |
Y |
Y |
Y |
Bagian lantai lokasi, seperti "Bagian C". |
location.type |
string |
N |
N |
N |
N |
Jenis lokasi, seperti "meja", atau "gedung". |
organizations.department |
string |
Y |
Y |
Y |
Y |
Departemen organisasi, seperti "Engineering". |
organizations.description |
string |
Y |
N |
N |
N |
Deskripsi organisasi. |
organizations.jobTitle |
string |
Y |
Y |
Y |
Y |
Jabatan orang tersebut, seperti "Software Engineer". |
organizations.location |
string |
Y |
Y |
Y |
Y |
Lokasi organisasi, seperti "London". |
organizations.name |
string |
Y |
Y |
Y |
Y |
Nama organisasi. |
organizations.symbol |
string |
Y |
N |
N |
N |
Simbol ticker organisasi. |
organizations.costCenter |
string |
Y |
Y |
Y |
Y |
Pusat biaya organisasi, seperti "75B". |
organizations.type |
string |
Y |
N |
N |
N |
Jenis organisasi, seperti "kantor" atau "lainnya". |
organizations.projects.name |
string |
Y |
Y |
Y |
Y |
Nama project yang ditetapkan untuk orang tersebut, seperti "ML Ops". |
organizations.projects.description |
string |
Y |
N |
N |
N |
Deskripsi project yang ditetapkan untuk orang tersebut, seperti "Membangun infrastruktur ML terbaik di dunia". |
organizations.projects.role |
string |
Y |
N |
N |
N |
Peran orang tersebut dalam project, seperti "Pemimpin". |
managers.personId |
string |
Y |
Y |
Y |
Y |
PersonId dari rantai manajemen saat ini orang tersebut, mulai dari manajer langsung hingga manajer tertinggi. |
managers.email |
string |
Y |
Y |
Y |
Y |
Alamat email setiap pengelola dalam hierarki pengelolaan orang tersebut saat ini, mulai dari pengelola langsung dan berakhir di pengelola tertinggi. |
dottedLineReports.personId |
string |
Y |
N |
N |
N |
Laporan garis putus-putus orang tersebut ( |
dottedLineReports.email |
string |
Y |
N |
N |
N |
Laporan garis putus-putus orang tersebut ( |
topCoworkers.personId |
string |
Y |
N |
N |
N |
Rekan kerja orang tersebut ( |
topCoworkers.affinityScore |
angka |
Y |
N |
N |
N |
Skor afinitas orang tersebut relatif terhadap rekan kerja (digunakan dalam pemberian peringkat). |
admins.personId |
string |
Y |
N |
N |
N |
Admin yang ditetapkan untuk orang tersebut ( |
admins.email |
string |
Y |
N |
N |
N |
Admin yang ditetapkan untuk orang tersebut ( |
websites.type |
string |
Y |
N |
N |
N |
Jenis situs orang, seperti "kantor", "blog", atau "lainnya". |
websites.value |
string |
Y |
N |
N |
N |
Jenis situs, seperti "https://example-pet-store.com". |
directManager.personId |
string |
N |
Y |
Y |
Y |
personId dari pengelola langsung/segera orang tersebut. |
Contoh payload untuk 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;
Contoh payload untuk 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"}}}}