個別匯入使用者 - Amazon Personalize

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

個別匯入使用者

完成建立結構描述和資料集建立使用者資料集後,您可以個別將一或多個新使用者匯入資料集。個別匯入使用者可讓您隨著目錄的增長,透過小批次匯入來保持使用者資料集的最新狀態。您一次最多可以匯入 10 個使用者。如果您有大量新使用者,建議您先大量匯入資料,然後視需要個別匯入使用者資料。請參閱 使用資料集匯入任務將大量資料匯入 Amazon Personalize

您可以使用 Amazon Personalize 主控台、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs來匯入使用者。如果您匯入的使用者與使用者資料集中已存在的使用者userId相同,Amazon Personalize 會將使用者取代為新的使用者。您一次最多可以匯入 10 個使用者。

如需有關 Amazon Personalize 如何更新新記錄篩選條件以及新記錄如何影響建議的資訊,請參閱 將個別記錄匯入 Amazon Personalize 資料集

個別匯入使用者 (主控台)

您一次最多可以匯入 10 個使用者。此程序假設您已建立使用者資料集。如需建立資料集的詳細資訊,請參閱建立結構描述和資料集

個別匯入使用者 (主控台)
  1. https://console.aws.amazon.com/personalize/home:// 開啟 Amazon Personalize 主控台並登入您的帳戶。

  2. 資料集群組頁面上,選擇具有您要匯入使用者之使用者資料集的資料集群組。

  3. 在導覽窗格中,選擇資料集

  4. 資料集頁面上,選擇使用者資料集。

  5. 在資料集詳細資訊頁面的右上角,選擇修改資料集,然後選擇建立記錄

  6. 建立使用者記錄 (Audit User Record) 頁面上,針對記錄輸入,以 JSON 格式輸入使用者詳細資訊。使用者的欄位名稱和值必須符合您在建立使用者資料集時所使用的結構描述。Amazon Personalize 提供 JSON 範本,其中包含來自此結構描述的欄位名稱和資料類型。

  7. 選擇建立記錄 (Create record)。在回應中,會列出匯入的結果,並顯示成功或失敗訊息。

個別匯入使用者 (AWS CLI)

使用 PutUsers操作將一或多個使用者新增至您的使用者資料集。您最多可以使用單一PutUsers呼叫匯入 10 個使用者。本節假設您已建立使用者資料集。如需建立資料集的詳細資訊,請參閱建立結構描述和資料集

使用下列put-users命令,透過 新增一或多個使用者 AWS CLI。dataset arn 將 取代為資料集的 Amazon Resource Name (ARN),並將 user Id取代為使用者 ID。如果具有相同的使用者userId已存在於您的使用者資料集,Amazon Personalize 會將其取代為新的資料集。

對於 properties,對於使用者資料集中的每個欄位,將 取代propertyName為駱駝案例結構描述中的欄位名稱。例如,GENDER 為 gender,而 MEMBERSHIP_TYPE 為 membershipTypeuser data 將 取代為 使用者的資料。對於分類字串資料,若要包含單一屬性的多個類別,請使用管道 () 分隔每個類別|。例如 \"Premium Class|Legacy Member\"

aws personalize-events put-users \ --dataset-arn dataset arn \ --users '[{ "userId": "user Id", "properties": "{\"propertyName\": "\user data\"}" }, { "userId": "user Id", "properties": "{\"propertyName\": "\user data\"}" }]'

個別匯入使用者 (AWS SDKs)

使用 PutUsers操作將一或多個使用者新增至您的使用者資料集。如果具有相同的使用者userId已存在於您的使用者資料集,Amazon Personalize 會將它取代為新的資料集。您最多可以使用單一PutUsers呼叫匯入 10 個使用者。本節假設您已建立使用者資料集。如需建立資料集的詳細資訊,請參閱 建立結構描述和資料集

下列程式碼說明如何將一或多個使用者新增至您的使用者資料集。對於每個屬性名稱參數,請以駱駝案例從您的結構描述傳遞欄位名稱。例如,GENDER 為 gender,而 MEMBERSHIP_TYPE 為 membershipType。對於每個屬性值參數,傳遞使用者的資料。

針對分類字串資料,請針對單一屬性包含多個類別,並使用管道 () 分隔每個類別|。例如 "Premium class|Legacy Member"

SDK for Python (Boto3)
import boto3 personalize_events = boto3.client(service_name='personalize-events') personalize_events.put_users( datasetArn = 'dataset arn', users = [{ 'userId': 'user ID', 'properties': "{\"propertyName\": \"user data\"}" }, { 'userId': 'user ID', 'properties': "{\"propertyName\": \"user data\"}" }] )
SDK for Java 2.x
public static int putUsers(PersonalizeEventsClient personalizeEventsClient, String datasetArn, String user1Id, String user1PropertyName, String user1PropertyValue, String user2Id, String user2PropertyName, String user2PropertyValue) { int responseCode = 0; ArrayList<User> users = new ArrayList<>(); try { User user1 = User.builder() .userId(user1Id) .properties(String.format("{\"%1$s\": \"%2$s\"}", user1PropertyName, user1PropertyValue)) .build(); users.add(user1); User user2 = User.builder() .userId(user2Id) .properties(String.format("{\"%1$s\": \"%2$s\"}", user2PropertyName, user2PropertyValue)) .build(); users.add(user2); PutUsersRequest putUsersRequest = PutUsersRequest.builder() .datasetArn(datasetArn) .build(); responseCode = personalizeEventsClient.putUsers(putUsersRequest).sdkHttpResponse().statusCode(); System.out.println("Response code: " + responseCode); return responseCode; } catch (PersonalizeEventsException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return responseCode; }
SDK for JavaScript v3
import { PutUsersCommand, PersonalizeEventsClient, } from "@aws-sdk/client-personalize-events"; const personalizeEventsClient = new PersonalizeEventsClient({ region: "REGION", }); // set the put users parameters var putUsersParam = { datasetArn: "DATASET ARN", users: [ { userId: "userId", properties: '{"column1Name": "value", "column2Name": "value"}', }, { userId: "userId", properties: '{"column1Name": "value", "column2Name": "value"}', }, ], }; export const run = async () => { try { const response = await personalizeEventsClient.send( new PutUsersCommand(putUsersParam) ); console.log("Success!", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();