個別匯入使用者 - Amazon Personalize

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

個別匯入使用者

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

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

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

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

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

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

  2. 在 [資料集群組] 頁面上,選擇含有要匯入使用者之使用者資料集的資料集群組。

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

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

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

  6. 在 [建立使用者記錄] 頁面上,若要輸入記錄,請以 JSON 格式輸入使用者詳細資訊。使用者的欄位名稱和值必須與您建立 Users 資料集時所使用的結構描述相符。Amazon Personalize 提供 JSON 範本,其中包含此結構描述中的欄位名稱和資料類型。

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

個別匯入使用者 (AWS CLI)

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

使用下列put-users命令來新增一個或多個使用者 AWS CLI。dataset arn以資料集的 Amazon 資源名稱 (ARN) 和user Id使用者的 ID 取代。如果您的使用者資料集中userId已有相同的使用者,Amazon Personalize 會以新的資料集取代該使用者。

對於properties,對於 Users 數據集中的每個字段,請以駝峰大小寫中的模式中的字段名稱替換。propertyName例如,性別將是gender和成員類型將是。membershipTypeuser data以使用者的資料取代。對於分類字串資料,若要包括單一性質的多個品類,請使用 pipe (|) 分隔每個品類。例如:\"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 SDK)

透過PutUsers作業將一或多個使用者新增至您的使用者資料集。如果您的使用者資料集中userId已有相同的使用者,Amazon Personalize 會以新的資料集取代該使用者。一次PutUsers通話最多可以匯入 10 個使用者。本節假設您已建立使用者資料集。如需建立資料集的詳細資訊,請參閱建立資料集和結構描述

下列程式碼會示範如何將一或多個使用者新增至您的使用者資料集。對於每個屬性名稱參數,請以駱駝大小寫從模式傳遞字段名稱。例如,性別將是gender和成員類型將是。membershipType對於每個屬性值參數,傳遞使用者的資料。

對於分類字串資料,若要包括使用 pipe (|) 分隔每個品類的單一性質的多個品類。例如:"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();