個別匯入項目 - Amazon Personalize

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

個別匯入項目

完成 建立結構描述和資料集 Items 資料集的建立之後,您可以個別將一或多個新項目匯入資料集。個別匯入項目可讓您隨著目錄的成長,透過小批次匯入,讓 Items 資料集保持在最新狀態。您一次最多可以匯入 10 個項目。如果您有大量的新物件,我們建議您先大量導入數据,然后根据需要分別導入物件數据。請參閱 透過資料集匯入任務將大量資料匯入 Amazon Personalize

您可以使用 Amazon Personalize 化控制台 AWS Command Line Interface (AWS CLI),或 AWS SDKs以匯入項目。如果您匯入的項目與項目資料集中已存在的項目相同itemId,Amazon Personalize 會以新項目取代該項目。

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

個別匯入項目 (主控台)

您一次最多可以將 10 個項目匯入至項目資料集。此程序假設您已經建立了 Items 資料集。如需建立資料集的詳細資訊,請參閱建立結構描述和資料集

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

  2. 在 [資料集群組] 頁面上,選擇包含您要匯入項目之 Items 資料集的資料集群組。

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

  4. 在 [資料集] 頁面上,選擇 [項目] 資料集。

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

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

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

個別匯入項目 (AWS CLI)

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

使用下面的put-items命令添加一個或多個項目 AWS CLI。 dataset arn以資料集的 Amazon 資源名稱 (ARN) 和項目item Id的 ID 取代。如果具有相同項目的項目itemId已經存在於您的項目數據集中,Amazon Personalize 化將其替換為新的數據集。

對於properties,針對 Items 資料集中的每個欄位,請以駱駝大小寫的結構描述中的欄位名稱取代。propertyName例如,GENRES將是genres和 CREATION _ TIMESTAMP 將是creationTimestamp。item data以項目的資料取代。 CREATION_TIMESTAMP數據必須採用 Unix 紀元時間格式,並以秒為單位。對於分類字串資料,若要包括單一性質的多個品類,請使用 pipe (|) 分隔每個品類。例如 \"Horror|Action\"

aws personalize-events put-items \ --dataset-arn dataset arn \ --items '[{ "itemId": "item Id", "properties": "{\"propertyName\": "\item data\"}" }, { "itemId": "item Id", "properties": "{\"propertyName\": "\item data\"}" }]'

個別匯入項目 (AWS SDKs)

使用PutItems作業將一或多個項目新增至項目資料集。一次PutItems通話最多可以匯入 10 個項目。如果具有相同項目的項目itemId已經存在於您的項目數據集中,Amazon Personalize 化將其替換為新的數據集。本節假設您已經建立了項目資料集。如需建立資料集的詳細資訊,請參閱建立結構描述和資料集

下列程式碼顯示如何將一或多個項目新增至 Items 資料集。對於每個屬性名稱參數,請以駱駝大小寫從模式傳遞字段名稱。例如,GENRES將是genres和 CREATION _ TIMESTAMP 將是creationTimestamp。針對每個屬性值參數,傳遞項目的資料。 CREATION_TIMESTAMP數據必須採用 Unix 紀元時間格式,並以秒為單位。

對於分類字串資料,若要包括單一性質的多個品類,請使用 pipe (|) 分隔每個品類。例如 "Horror|Action"

SDK for Python (Boto3)
import boto3 personalize_events = boto3.client(service_name='personalize-events') personalize_events.put_items( datasetArn = 'dataset arn', items = [{ 'itemId': 'item ID', 'properties': "{\"propertyName\": \"item data\"}" }, { 'itemId': 'item ID', 'properties': "{\"propertyName\": \"item data\"}" }] )
SDK for Java 2.x
public static int putItems(PersonalizeEventsClient personalizeEventsClient, String datasetArn, String item1Id, String item1PropertyName, String item1PropertyValue, String item2Id, String item2PropertyName, String item2PropertyValue) { int responseCode = 0; ArrayList<Item> items = new ArrayList<>(); try { Item item1 = Item.builder() .itemId(item1Id) .properties(String.format("{\"%1$s\": \"%2$s\"}", item1PropertyName, item1PropertyValue)) .build(); items.add(item1); Item item2 = Item.builder() .itemId(item2Id) .properties(String.format("{\"%1$s\": \"%2$s\"}", item2PropertyName, item2PropertyValue)) .build(); items.add(item2); PutItemsRequest putItemsRequest = PutItemsRequest.builder() .datasetArn(datasetArn) .items(items) .build(); responseCode = personalizeEventsClient.putItems(putItemsRequest).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 { PutItemsCommand, PersonalizeEventsClient, } from "@aws-sdk/client-personalize-events"; const personalizeEventsClient = new PersonalizeEventsClient({ region: "REGION", }); // set the put items parameters var putItemsParam = { datasetArn: "DATASET ARN", items: [ { itemId: "itemId", properties: '{"column1Name": "value", "column2Name": "value"}', }, { itemId: "itemId", properties: '{"column1Name": "value", "column2Name": "value"}', }, ], }; export const run = async () => { try { const response = await personalizeEventsClient.send( new PutItemsCommand(putItemsParam) ); console.log("Success!", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();