アイテム書き込み処理

オペレーション名

アイテム書き込み

機能概要

入力データをアイテムとして指定したAmazon SimpleDBのドメインに書き込みます。

データモデル

本コンポーネントのデータモデルはテーブルモデル型です。

プロパティ

変数の使用については、「変数」を参照してください。
基本設定
項目名 必須/省略可 変数の使用 説明 備考
名前 必須 使用不可 スクリプトキャンバス上での名前を入力します。  
入力データ 必須 使用不可 スクリプトキャンバス上にあるコンポーネントを選択します。  
必須設定
項目名 必須/省略可 変数の使用 説明 備考
接続先 必須 使用不可 グローバルリソースを選択します。
  • [追加]:
    新規にグローバルリソースを追加します。
  • [一覧の編集]:
    「リソース一覧の編集」画面にて、グローバルリソースの設定を編集することができます。
 
ドメイン名 必須 使用可 ドメインを指定します。  
属性一覧 必須 - 書き込み対象となるアイテムの属性名を設定します。

各属性は以下のボタンで操作することができます。
  • [追加]:
    属性を追加します。
  • [上へ]:
    選択している属性の順序を一つ上に上げます。
  • [下へ]:
    選択している属性の順序を一つ下に下げます。
  • [削除]:
    属性を削除します。
 
属性一覧/属性名 必須 使用可 属性名を入力します。

[アイテムを指定して属性一覧を設定]プロパティアクションで指定したアイテムの属性を属性名として設定できます。
 
プロパティアクション
項目名 説明 備考
アイテムを指定して属性一覧を設定 アイテムの選択ダイアログを起動して[アイテム]で指定した属性名の一覧を表示し、属性名を[属性一覧]にセットします。
  • [アイテム]の一覧に表示される件数は最大で500件になります。
  • 対象のアイテム名が[アイテム]の一覧にない場合、直接入力することで属性名の一覧を表示することが可能です。
  • [接続先]が選択されている場合、有効になります。
オプション設定
項目名 必須/省略可 変数の使用 説明 備考
期待値が一致しない、または存在しない場合エラーにする 省略可 - 期待値が一致しない、または[期待値属性]で指定した属性が存在しない場合エラーにするかどうかを選択します。
  • [チェックあり]:
    入力データで指定した期待値が既存の値と一致しない、または[期待値属性]で指定した属性が存在しない場合エラーになります。
  • [チェックなし]:(デフォルト)
    [期待値属性]は無効になり、入力データで期待値を指定することはできません。
期待値属性 省略可 - 期待値と比較対象となる値が格納されている属性の属性名を選択します。
書き込みに失敗したアイテムをスキップする 省略可 - 書き込みに失敗したアイテムをスキップして処理を継続するかどうかを選択します。
  • [チェックあり]:
    書き込みに失敗したアイテムをスキップして書き込み処理を継続します。
  • [チェックなし]:(デフォルト)
    書き込みに失敗したアイテムが発生した場合、エラーとして書き込み処理を終わらせます。
 
書き込みに失敗したアイテムを結果データで出力する 省略可 - 書き込みに失敗したアイテムを結果データで出力するかどうかを選択します。
  • [チェックあり]:
    書き込みに失敗したアイテムを、「出力スキーマ」にあるテーブルモデル型の結果データで出力します。
  • [チェックなし]:(デフォルト)
    結果データは出力しません。
  • [書き込みに失敗したアイテムをスキップする]にチェックを入れた場合、有効になります。
  • チェックを入れたアイテム書き込み処理で、書き込みに失敗したアイテムが存在しない場合、空のテーブルモデル型の結果データを出力します。
  • チェックを入れたアイテム書き込み処理から後続の処理にデータフローが引かれている場合、チェックを外してもデータフローは削除されません。この場合、手動でデータフローを削除してください。
プロパティアクション
項目名 説明 備考
期待値属性の更新 [期待値属性]の一覧に、[属性一覧][属性名]を設定します。
  • [期待値が一致しない、または存在しない場合エラーにする]にチェックを入れた場合、有効になります。
データ処理方式
項目名 必須/省略可 変数の使用 説明 備考
データ処理方式 必須 使用不可 データ処理方式を選択します。
  • [スクリプトの設定を使用する]:(デフォルト)
    スクリプトプロパティの大容量データ処理の設定をアダプタに使用します。
  • [大容量データ処理を行わない]:
    大容量データ処理を行いません。
  • [大容量データ処理を行う]:
    大容量データ処理を行います。
  • [削除に失敗したアイテムを結果データで出力する]にチェックが入って書き込みに失敗したアイテムが存在する場合、「出力スキーマ」にあるテーブルモデル型の結果データで出力します。
コメント
項目名 必須/省略可 変数の使用 説明 備考
コメント 省略可 使用不可 このアダプタの簡単な説明を記述することができます。
説明を記述すると、仕様書に反映させることができます。
 

スキーマ

入力スキーマ

<?xml version="1.0" ?>
<table>
  <row>
    <column>アイテム名</column>
    <column><期待値属性名>_expected</column>  ← [期待値が一致しない、または存在しない場合エラーにする]にチェックを入れた場合、出現します。<期待値属性>は[期待値属性]で選択した属性名になります。
    <column>属性名</column>
    :
  </row>
  <row>
    :
  </row>
</table>

出力スキーマ

[書き込みに失敗したアイテムを結果データで出力する]にチェックが入って書き込みに失敗したアイテムが存在する場合、以下のスキーマで結果データを出力します。
<?xml version="1.0" ?>
<table>
  <row>
    <column>書き込みに失敗したアイテムの入力スキーマ</column>
    :
    <column>エラーメッセージ</column>
    <column>エラーコード</column>
    <column>ステータスコード</column>
  </row>
  <row>
    :
  </row>
</table>

Mapperでのスキーマ読み込み

スキーマは自動で読み込まれます。
詳細については、「スキーマ編集」を参照してください。

大容量データ処理

大容量データ処理に対応しています。

トランザクション

トランザクションはサポートしていません。

PSPでの使用について

PSPで使用できます。
PSPについては、「パラレルストリーミング処理」を参照してください。

使用できるコンポーネント変数

コンポーネント変数名 説明 備考
count 書き込んだアイテムの件数が格納されます。
  • デフォルト値はnullです。
error_code エラー(AmazonServiceException)発生時、発生したエラーに対応する Amazon Web Servicesのエラーコードが格納されます。
  • デフォルト値はnullです。
status_code エラー(AmazonServiceException)発生時、通信時のHTTPステータスコードが格納されます。
  • デフォルト値はnullです。
error_count エラーが発生したアイテムの件数が格納されます。
  • デフォルト値はnullです。
  • [書き込みに失敗したアイテムをスキップする]にチェックを入れた場合、スキップしたアイテムの件数が格納されます。
message_category エラー発生時、発生したエラーに対応するメッセージコードのカテゴリが格納されます。
  • デフォルト値はnullです。
message_code エラー発生時、発生したエラーに対応するメッセージコードのコードが格納されます。
  • デフォルト値はnullです。
message_level エラー発生時、発生したエラーに対応するメッセージコードの重要度が格納されます。
  • デフォルト値はnullです。
error_type エラー発生時、発生したエラーの種類が格納されます。
  • デフォルト値はnullです。
  • エラーの種類は、以下のような形式となります。
    例:「java.io.FileNotFoundException」
  • DataSpider Cloudのバージョンにより、格納される内容が変わる可能性があります。
error_message エラー発生時、発生したエラーのメッセージが格納されます。
  • デフォルト値はnullです。
  • DataSpider Cloudのバージョンにより、格納される内容が変わる可能性があります。
error_trace エラー発生時、発生したエラーのトレース情報が格納されます。
  • デフォルト値はnullです。
  • DataSpider Cloudのバージョンや実行するクライアントアプリケーションにより、格納される内容が変わる可能性があります。

期待値を指定した書き込み処理について

[期待値が一致しない、または存在しない場合エラーにする]にチェックを入れた場合、楽観的並行性制御を実現することができます。
楽観的並行性制御は、排他制御は行わず、書き込み処理前に対象の値を読み取り、書き込み処理時は読み取った値と同じ値であることを条件として設定し、 値が異なれば他から更新されたとみなし書き込み処理は行わない(エラーになる)という機能です。

アイテム書き込み処理では、入力データで指定した値(期待値)と、[期待値属性]で指定した属性の既存の値が同じ値であることを条件として設定します。期待値の指定は、「入力スキーマ」にある「<期待値属性名>_expected」カラムに値をマッピングすることで可能です。

例: Amazon SimpleDBに格納されているバージョン番号を読み取り、その値に「1」を加算して更新する処理を、スクリプトAとスクリプトBで並行して実行した場合

仕様制限

主な例外

例外名 原因 対策
ResourceNotFoundException
リソース定義が見つかりませんでした。名前:[]
[接続先]が指定されていません。 [接続先]を指定してください。
ResourceNotFoundException
リソース定義が見つかりませんでした。名前:[<グローバルリソース名>]
[接続先]で選択されたリソース定義が見つかりません。 [接続先]で指定したグローバルリソースを確認してください。
InvalidPropertyConfigurationException
<プロパティ名>が指定されていません。
[<プロパティ名>]が指定されていません。 [<プロパティ名>]を指定してください。
Status Code: 400, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: NoSuchDomain, AWS Error Message: The specified domain does not exist [ドメイン名]で指定したドメインが存在しません。 [ドメイン名]で指定したドメイン名を確認してください。
Status Code: 400, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: InvalidParameterValue, AWS Error Message: Value (<属性値>) for parameter Value is invalid. Value exceeds maximum length of 1024 属性値のサイズが1024バイトを超えています。 入力データのカラムの値を確認してください。
Status Code: 400, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: InvalidParameterValue, AWS Error Message: Value (<属性名>) for parameter Name is invalid. Value exceeds maximum length of 1024 [属性一覧][属性名]で指定した文字列が1024バイトを超えています。 [属性一覧][属性名]を確認してください。
Status Code: 400, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: MissingParameter, AWS Error Message: The request must contain the parameter ItemName アイテム名が指定されていません。 入力データの1カラム目の値を確認してください。
Status Code: 400, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: InvalidParameterValue, AWS Error Message: Value (<アイテム名>) for parameter Item is invalid. Value exceeds max length of 1024 アイテム名のサイズが1024バイトを超えています。 入力データの1カラム目の値を確認してください。
Status Code: 409, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: NumberSubmittedAttributesExceeded, AWS Error Message: Too many attributes for item '<アイテム名>' in a single call. Up to 256 attributes per call allowed. 属性値の数が256を超えています。 [属性一覧][属性名]の数を確認してください。
Status Code: 409, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: ConditionalCheckFailed, AWS Error Message: Conditional check failed. Attribute (<属性名>) value is (<属性値>) but was expected (<期待値>) 入力データで指定した期待値と既存の値が異なっています。 入力データで指定した期待値を確認してください。また、ほかの処理で既存の値を書き換えた可能性がないか確認してください。
Status Code: 404, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: AttributeDoesNotExist, AWS Error Message: Attribute (<属性名>) does not exist [期待値属性]で指定した属性が存在しません。 [期待値属性]で指定した属性が存在するか確認してください。
Status Code: 400, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: InvalidParameterValue, AWS Error Message: Value () for parameter Name is invalid. The empty string is an illegal attribute name 属性名が指定されていません。 [属性一覧][属性名]が空になっているか、または[期待値属性]が指定されていないか確認してください。
Status Code: 409, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: MultiValuedAttribute, AWS Error Message: Attribute (<属性名>) is multi valued. Conditional check can only be performed on a single-valued attribute [期待値属性]で指定した属性に複数の値が格納されています。 [期待値属性]には単一の値が格納されている属性を指定してください。
Status Code: 400, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: MissingParameter, AWS Error Message: No attributes for item ='<アイテム名>' [属性一覧][属性名]が指定されていません。 [属性一覧][属性名]を指定してください。
Status Code: 400, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: TooLargeRequest, AWS Error Message: The request is larger than the maximum allowed size of 1048576 リクエストのサイズが1MBを超えています。 入力データを分割してください。
Status Code: 403, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: InvalidClientTokenId, AWS Error Message: The AWS Access Key Id you provided does not exist in our records. [接続先]で指定したグローバルリソースの[アクセスキーID]に誤りがあります。 [接続先]で指定したグローバルリソースの設定を確認してください。
Status Code: 403, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: SignatureDoesNotMatch, AWS Error Message: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. [接続先]で指定したグローバルリソースの[シークレットアクセスキー]に誤りがあります。 [接続先]で指定したグローバルリソースの設定を確認してください。
com.amazonaws.AmazonClientException
Unable to execute HTTP request: <エンドポイント>
[接続先]で指定したグローバルリソースの[エンドポイント]に誤りがあります。 [接続先]で指定したグローバルリソースの設定を確認してください。

注意事項