Google Workspace からユーザーデータを同期する代わりに、Cloud Storage や BigQuery からユーザーデータをインポートできます。このページでは、ユーザー検索コネクタを作成し、Cloud Storage バケットまたは BigQuery テーブルからユーザーに関するカスタムデータをインポートする方法について説明します。
始める前に
- ユーザーデータは BigQuery テーブルまたは Cloud Storage バケットに含まれている必要があります。
- データは Google 指定のスキーマに含まれている必要があります。スキーマの詳細については、ユーザーデータに関する Google 指定のスキーマをご覧ください。
カスタムソースからユーザーデータを取り込む
Google Cloud コンソールを使用してユーザーデータを読み込むには、次の手順を行います。
Console
Google Cloud コンソールで、[Gemini Enterprise] ページに移動します。
[データストア] ページに移動します。
[データストアを作成] をクリックします。
新しいデータストアを作成します。 [データソースを選択] ページの [クラウド ソース] セクションで、[カスタム コネクタ経由のユーザー] を選択します。
データソースを選択します。 ユーザーデータをインポートします。
後でインポートする: ユーザーデータを Cloud SQL または BigQuery にまだインポートしていない場合は、[後でインポートする] を選択します。
BigQuery: BigQuery テーブルからデータをインポートします。
Cloud Storage: Cloud Storage テーブルからデータをインポートします。
ユーザーデータをインポートします。 [続行] をクリックします。
データストアのリージョンを選択します。
データストアの名前を入力します。
省略可: データへのアクセスを制御する必要がある場合は、[このデータストアにはアクセス制御に関する情報が含まれています] を選択します。詳細については、データソースへのアクセス制御をご覧ください。
[作成] をクリックします。
データコネクタを構成します。 取り込みのステータスを確認するには、[データストア] ページに移動し、データストア名をクリックして、[データ] ページで詳細を表示します。 [アクティビティ] タブのステータス列が [進行中] から [インポート完了] に変わると、取り込みが完了します。
取り込みには、データのサイズに応じて、数分から数時間かかることがあります。
検索結果をカスタマイズする
検索結果に個人情報を含めるのか、または除外するのかを指定する手順は、次のとおりです。
データストアで [エンティティ] タブをクリックし、[ユーザー] をクリックします。
[ユーザー] ページで、[スキーマ] タブをクリックします。
[編集] をクリックします。
国などの属性を選択または選択解除して、取得可能、検索可能、インデックス登録可能かどうかを指定します。検索可能にするには、属性を [取得可能]、[インデックス登録可能]、[検索可能] としてマークする必要があります。
[保存] をクリックします。
ユーザー検索の結果をプレビューする
データストアがアプリにすでに接続されている場合は、[アプリ] をクリックし、アプリの名前をクリックします。
[プレビュー] をクリックします。
検索バーを使用して、組織内のユーザーを検索します。検索結果には、名前、役職、メールアドレス、プロフィール写真などの詳細が表示されます。
ブラウザで Gemini Enterprise ウェブアプリを開くには、検索ウェブアプリを表示するをご覧ください。
検索結果をプレビューします。 カスタム属性を検索可能にした場合、検索で属性を使用できますが、属性自体はプロフィールで返されません。たとえば、
team-position
がカスタム属性で、取得可能、インデックス登録可能、検索可能としてスキーマでマークされている場合、「テクニカル リーダー」などの特定のチーム ポジションを持つユーザーを検索できます。その役職に就いているユーザーのリストを取得しますが、出力には「テクニカル リーダー」という単語は含まれません。
検索ウェブアプリを表示する
Gemini Enterprise ウェブアプリを表示する手順は次のとおりです。
ナビゲーション メニューで [統合] をクリックします。
[ウェブアプリの有効化] が有効になっていることを確認します。
[ウェブアプリへのリンク] セクションで、[コピー] をクリックして、ブラウザでリンクを開きます。
ユーザーデータの組織定義スキーマ フィールドの例
各ユーザーのデータセットは、次のスキーマに沿ってフォーマットする必要があります。Cloud Storage からインポートされたファイルの例では、JSONL ファイルの各行は 1 人のユーザーを表しています。有効な最小限のファイルは次のようになります。
{"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 |
ユーザーの一意の ID。必須フィールド。 |
name.familyName |
文字列 |
N |
Y |
○ |
Y |
ユーザーの姓(ラストネーム)。 |
name.givenName |
文字列 |
N |
Y |
○ |
Y |
ユーザーの名(ファースト ネーム)。 |
name.displayName |
文字列 |
N |
Y |
○ |
Y |
ユーザーの表示名。 |
name.username |
文字列 |
N |
Y |
○ |
Y |
ユーザーのユーザー名。 |
emails.type |
文字列 |
Y |
N |
N |
N |
メール アカウントのタイプ(「仕事」、「自宅」、「その他」、「カスタム」など)。 |
emails.value |
文字列 |
Y |
○ |
○ |
Y |
ユーザーのメールアドレス(「acruz@example.net」など)。 |
phoneNumbers.type |
文字列 |
Y |
○ |
○ |
Y |
電話番号の種類(「オフィス」、「モバイル」、「その他」など)。 |
phoneNumbers.value |
文字列 |
Y |
○ |
○ |
Y |
ユーザーの電話番号(「+1 800-555-1212」など)。 |
suspended |
ブール値 |
N |
N |
N |
N |
ユーザーが組織で停止されているかどうか。 |
employeeId |
文字列 |
N |
Y |
○ |
Y |
ユーザーの従業員 ID。 |
employeeType |
文字列 |
N |
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 |
ユーザーが希望する代名詞(「彼」、「彼女」、「あの方」など)。 |
gender.type |
文字列 |
N |
Y |
○ |
Y |
ユーザーの性別(「男性」、「女性」、「その他」など)。 |
displayPhoto.url |
文字列 |
N |
Y |
○ |
Y |
写真の URL。 |
displayPhoto.imageBinary |
文字列 |
N |
Y |
○ |
Y |
写真の画像バイナリの Base64 エンコード文字列。 |
displayPhoto.format |
文字列 |
N |
Y |
○ |
Y |
画像バイナリの形式(「png」など)。 |
addresses.country |
文字列 |
Y |
○ |
○ |
Y |
関連付けられている住所の国(「米国」など)。 |
addresses.countryCode |
文字列 |
Y |
N |
N |
N |
関連付けられている住所の国コード(「US」など)。 |
addresses.locality |
文字列 |
Y |
○ |
○ |
Y |
関連付けられている住所の地域区分(「マウンテンビュー」など)。 |
addresses.poBox |
文字列 |
Y |
N |
N |
N |
関連付けられている住所の私書箱(「PO Box 123」など)。 |
addresses.postalCode |
文字列 |
Y |
N |
N |
N |
関連付けられている住所の郵便番号(「94043」など)。 |
addresses.region |
文字列 |
Y |
N |
N |
N |
関連付けられている住所の地域(「CA」など)。 |
addresses.streetAddress |
文字列 |
Y |
○ |
○ |
Y |
関連付けられている住所の番地(「1800 Amphibious Blvd.」など)。 |
addresses.type |
文字列 |
Y |
N |
N |
N |
関連付けられている住所のタイプ(「自宅」、「仕事」、「その他」など)。 |
location.value |
文字列 |
N |
Y |
○ |
Y |
ユーザーのオフィス所在地(「London」など)。 |
location.buildingId |
文字列 |
N |
Y |
○ |
Y |
ユーザーのオフィス所在地の建物の ID(「London」など)。 |
location.deskCode |
文字列 |
N |
Y |
○ |
Y |
ユーザーのオフィス所在地のデスクコード(「5C1C」など)。 |
location.floorName |
文字列 |
N |
Y |
○ |
Y |
ユーザーのオフィス所在地のフロア名(「5 階」など)。 |
location.floorSection |
文字列 |
N |
Y |
○ |
Y |
所在地のフロア セクション(「セクション C」など)。 |
location.type |
文字列 |
N |
N |
N |
N |
所在地のタイプ(「デスク」、「建物」など)。 |
organizations.department |
文字列 |
Y |
○ |
○ |
Y |
組織の部門(「エンジニアリング」など)。 |
organizations.description |
文字列 |
Y |
N |
N |
N |
組織の説明。 |
organizations.jobTitle |
文字列 |
Y |
○ |
○ |
Y |
ユーザーの役職(「ソフトウェア エンジニア」など)。 |
organizations.location |
文字列 |
Y |
○ |
○ |
Y |
組織の所在地(「London」など)。 |
organizations.name |
文字列 |
Y |
○ |
○ |
Y |
組織の名前。 |
organizations.symbol |
文字列 |
Y |
N |
N |
N |
組織のティッカー シンボル。 |
organizations.costCenter |
文字列 |
Y |
○ |
○ |
Y |
組織のコストセンター(「75B」など)。 |
organizations.type |
文字列 |
Y |
N |
N |
N |
組織のタイプ(「仕事」、「その他」など)。 |
organizations.projects.name |
文字列 |
Y |
○ |
○ |
Y |
ユーザーに割り当てられているプロジェクトの名前(「ML Ops」など)。 |
organizations.projects.description |
文字列 |
Y |
N |
N |
N |
ユーザーに割り当てられているプロジェクトの説明(「世界最高の ML インフラストラクチャの構築」など)。 |
organizations.projects.role |
文字列 |
Y |
N |
N |
N |
プロジェクトにおけるユーザーのロール(「リード」など)。 |
managers.personId |
文字列 |
Y |
○ |
○ |
Y |
ユーザーの現在の管理系統(直属のマネージャーから最上位のマネージャーまで)の personId。 |
managers.email |
文字列 |
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 |
ユーザーの直属のマネージャーの personId。 |
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"}}}}