本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
WriteRecords
可讓您將時間序列資料寫入 Timestream。您可以指定要插入系統的單一資料點或一批資料點。Timestream 為您提供彈性結構描述,可根據您調用寫入資料庫時指定的資料點的維度名稱和資料類型,自動偵測 Timestream 資料表的資料欄名稱和資料類型。
Timestream 支援最終一致性僅供讀取語義。這表示當您在將一批資料寫入 Timestream 後立即查詢資料時,查詢結果可能不會反映最近完成的寫入操作的結果。結果也可能包含一些過時的資料。如果您在短時間內重複查詢請求,結果應傳回最新的資料。服務配額適用。
有關詳細資訊,請參閱程式碼範例。
Upserts
您可以在 WriteRecords
請求中使用 Version
參數來更新資料點。Timestream 會追蹤每個記錄的版本編號。 未針對請求中的記錄指定1
時, Version
預設為 。Timestream 會在收到寫入請求Version
時,更新現有記錄的測量值及其 ,該記錄的寫入請求具有較高的Version
數字。當它收到更新請求時,其測量值與現有記錄的值相同,如果其大於現有值 Version
,則 Timestream 仍會更新 Version
。只要 的值Version
持續增加,您就可以視需要更新資料點多次。
例如,假設您在請求Version
中沒有指示的情況下撰寫新記錄。Timestream 會儲存此記錄,並Version
設定為 1
。現在,假設您嘗試使用具有不同量值的相同記錄WriteRecords
請求來更新此記錄,但和之前一樣,不提供 Version
。在此情況下,Timestream 會使用 拒絕此更新,RejectedRecordsException
因為更新的記錄版本不大於 版本的現有值。
不過,如果您要重新傳送Version
設定為 的更新請求2
,則 Timestream 會成功更新記錄的值,而 Version
會設定為 2
。接下來,假設您已傳送具有相同記錄和相同量值的WriteRecords
請求,但將 Version
設定為 3
。在此情況下,Timestream 只會更新Version
為 3
。任何進一步的更新都需要傳送大於 的版本號碼3
,否則更新請求會收到 RejectedRecordsException
。
請求語法
{
"CommonAttributes": {
"Dimensions": [
{
"DimensionValueType": "string
",
"Name": "string
",
"Value": "string
"
}
],
"MeasureName": "string
",
"MeasureValue": "string
",
"MeasureValues": [
{
"Name": "string
",
"Type": "string
",
"Value": "string
"
}
],
"MeasureValueType": "string
",
"Time": "string
",
"TimeUnit": "string
",
"Version": number
},
"DatabaseName": "string
",
"Records": [
{
"Dimensions": [
{
"DimensionValueType": "string
",
"Name": "string
",
"Value": "string
"
}
],
"MeasureName": "string
",
"MeasureValue": "string
",
"MeasureValues": [
{
"Name": "string
",
"Type": "string
",
"Value": "string
"
}
],
"MeasureValueType": "string
",
"Time": "string
",
"TimeUnit": "string
",
"Version": number
}
],
"TableName": "string
"
}
請求參數
如需所有動作的一般參數資訊,請參閱《Common Parameters》。
請求接受 JSON 格式的下列資料。
- CommonAttributes
-
包含請求中所有記錄之間共用的常見量值、維度、時間和版本屬性的記錄。將資料寫入 Timestream 時,指定的量值和維度屬性會與記錄物件中的量值和維度屬性合併。維度可能不會重疊,或
ValidationException
會擲回 。換句話說,記錄必須包含具有唯一名稱的維度。類型:Record 物件
必要:否
- DatabaseName
-
Timestream 資料庫的名稱。
類型:字串
長度限制:長度下限為 3。長度上限為 256。
必要:是
- Records
-
包含每個時間序列資料點之唯一量值、維度、時間和版本屬性的記錄陣列。
類型:Record 物件陣列
陣列成員:項目數下限為 1。項目數上限為 100。
必要:是
- TableName
-
Timestream 資料表的名稱。
類型:字串
長度限制:長度下限為 3。長度上限為 256。
必要:是
回應語法
{
"RecordsIngested": {
"MagneticStore": number,
"MemoryStore": number,
"Total": number
}
}
回應元素
如果動作成功,服務會傳回 HTTP 200 回應。
服務會以 JSON 格式傳回下列資料。
- RecordsIngested
-
此請求擷取的記錄相關資訊。
類型:RecordsIngested 物件
錯誤
如需所有動作常見錯誤的資訊,請參閱常見錯誤。
- AccessDeniedException
-
您無權執行此動作。
HTTP狀態碼:400
- InternalServerException
-
由於內部伺服器錯誤,Timestream 無法完全處理此請求。
HTTP狀態碼:500
- InvalidEndpointException
-
請求的端點無效。
HTTP狀態碼:400
- RejectedRecordsException
-
在下列情況下, WriteRecords 會擲回此例外狀況:
-
具有重複資料的記錄,其中有多個記錄具有相同的維度、時間戳記和量值名稱,但:
-
測量值不同
-
請求中沒有版本,或新記錄中的版本值等於或低於現有值
在此情況下,如果 Timestream 拒絕資料,
RejectedRecords
回應中的ExistingVersion
欄位會指出目前記錄的版本。若要強制更新,您可以將記錄集的 版本 重新傳送請求,使其值大於ExistingVersion
。 -
-
時間戳記位於記憶體存放區保留期間以外的記錄。
-
維度或量值超過 Timestream 定義限制的記錄。
如需詳細資訊,請參閱 Amazon Timestream 開發人員指南中的配額。
HTTP狀態碼:400
-
- ResourceNotFoundException
-
操作嘗試存取不存在的資源。資源可能未正確指定,或其狀態可能不是 ACTIVE。
HTTP狀態碼:400
- ThrottlingException
-
使用者提出的請求太多,而且超過服務配額。請求受到調節。
HTTP狀態碼:400
- ValidationException
-
無效或格式不正確的請求。
HTTP狀態碼:400
另請參閱
如需在其中一種語言特定的 API 中使用此 AWS SDKs 的詳細資訊,請參閱下列內容: