

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# Amazon DynamoDB テーブルからのデータのロード
<a name="t_Loading-data-from-dynamodb"></a>

COPY コマンドで、1 つの Amazon DynamoDB テーブルのデータを使用してテーブルをロードすることができます。

**重要**  
[REGION](copy-parameters-data-source-s3.md#copy-region) オプションを使用して Amazon DynamoDB テーブルがある AWS リージョンを指定しない限り、データを提供する Amazon DynamoDB テーブルは、クラスターと同じ AWS リージョンに作成される必要があります。

COPY コマンドは Amazon Redshift の超並列処理 (MPP) アーキテクチャを使用して、Amazon DynamoDB テーブルからデータを並列でロードします。Amazon Redshift テーブルに分散方式を設定すれば、並列処理を最大限に活用できます。詳細については、「[クエリ最適化のためのデータのディストリビューション](t_Distributing_data.md)」を参照してください。

**重要**  
COPY コマンドで Amazon DynamoDB テーブルからデータを読み込むとき、結果として起こるデータ転送はそのテーブルにプロビジョンドスループットの一部になります。

プロビジョニングされた読み込みスループットの過度の消費を避けるために、本稼働環境にある Amazon DynamoDB テーブルからはデータをロードしないことをお勧めします。本稼働テーブルからデータをロードする場合、プロビジョニングされ、使用されていないスループットの平均パーセントよりかなり低く READRATIO オプションを設定することをお勧めします。READRATIO を低く設定すると、スロットルの問題が最小限に抑えられます。Amazon DynamoDB テーブルにプロビジョンドスループット全体を使用するには、READRATIO を 100 に設定します。

COPY コマンドは以下のルールを使用し、DynamoDB テーブルから取得された項目の属性名と既存の Amazon Redshift テーブルの列名を照合します。
+ Amazon Redshift テーブルの列と Amazon DynamoDB 項目の属性が大文字と小文字を区別せずに照合されます。DynamoDB テーブルの項目に、Price と PRICE のように、大文字/小文字だけが異なる複数の属性が含まれる場合、COPY コマンドは失敗します。
+ Amazon Redshift テーブルの属性と一致しない Amazon DynamoDB テーブル列は、[COPY](r_COPY.md) コマンドの EMPTYASNULL オプションで指定された値に基づき、NULL または空としてロードされます。
+ Amazon Redshift テーブルの列に一致しない Amazon DynamoDB 属性は破棄されます。属性は照合の前に読み込まれます。そのため、破棄された属性もそのテーブルにプロビジョニングされたスループットの一部を消費します。
+ データ型がスカラー STRING と NUMBER の Amazon DynamoDB 属性のみがサポートされます。Amazon DynamoDB BINARY および SET データ型はサポートされません。COPY コマンドがサポートされないデータ型を持つ属性をロードしようとすると失敗します。属性が Amazon Redshift テーブル列に一致しない場合、COPY はロードを試行せず、エラーを発行しません。

COPY コマンドは次の構文を使用し、Amazon DynamoDB テーブルからデータをロードします。

```
COPY <redshift_tablename> FROM 'dynamodb://<dynamodb_table_name>'
authorization
readratio '<integer>';
```

**authorization の値は、Amazon DynamoDB テーブルにアクセスするために必要な AWS の認証情報です。これらの認証情報がユーザーと対応する場合、このユーザーは、ロードする Amazon DynamoDB テーブルに SCAN と DESCRIBE を実行するアクセス許可が必要です。

**authorization の値は、クラスターが Amazon DynamoDB テーブルにアクセスする際に必要な AWS 認証を提供します。許可には、ロードする Amazon DynamoDB テーブルに対する SCAN および DESCRIBE が含まれている必要があります。必要なアクセス権限の詳細については、「[COPY、UNLOAD、CREATE LIBRARY のための IAM のアクセス許可](copy-usage_notes-access-permissions.md#copy-usage_notes-iam-permissions)」を参照してください。推奨の認証方法は、IAM\$1ROLE パラメータを指定して、必要なアクセス権限がある IAM ロールの Amazon リソースネーム (ARN) を提供することです。詳細については、「[ロールベースアクセスコントロール](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based)」を参照してください。

IAM\$1ROLE パラメータを使用して認証するには、次の構文で示すように、*<aws-account-id>* および *<role-name>* を置き換えます。

```
IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'
```

次の例で、IAM ロールを使用した認証を示します。

```
COPY favoritemovies 
FROM 'dynamodb://ProductCatalog'
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

他の認証オプションの詳細については、「[認可パラメータ](copy-parameters-authorization.md)」を参照してください。

テーブルを実際にロードせずにデータを検証する場合、[COPY](r_COPY.md) コマンドに NOLOAD オプションを指定します。

次の例では、「my-favorite-movies-table」という名前の DynamoDB テーブルから FAVORITEMOVIES テーブルにデータをロードします。読み取りアクティビティでは、プロビジョニングされたスループットの最大 50% が消費されます。

```
COPY favoritemovies FROM 'dynamodb://my-favorite-movies-table' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
READRATIO 50;
```

スループットを最大化するために、COPY コマンドはクラスターのコンピューティングノード全体で並列で Amazon DynamoDB テーブルからデータをロードします。

## 自動圧縮のあるプロビジョニングされたスループット
<a name="t_Loading-data-from-dynamodb-provisioned-throughput-with-automatic-compression"></a>

デフォルトでは、圧縮エンコーディングなしで空のターゲットテーブルを指定したとき、COPY コマンドは自動圧縮を適用します。自動圧縮分析は、最初に Amazon DynamoDB テーブルから大量の行をサンプリングします。サンプルサイズは、COMPROWS パラメータの値に基づきます。デフォルトはスライスごとに 100,000 行です。

サンプリングの後、サンプル行は破棄され、テーブル全体がロードされます。結果として、多くの行が 2 回読み取られます。自動圧縮の仕組みについては、「[自動圧縮ありでテーブルをロードする](c_Loading_tables_auto_compress.md)」を参照してください。

**重要**  
COPY コマンドで Amazon DynamoDB テーブルからサンプリングで使われる行を含むデータを読み込むと、結果として起こるデータ転送はそのテーブルにプロビジョンドスループットの一部になります。

## Amazon DynamoDB からのマルチバイトデータのロード
<a name="t_Loading-data-from-dynamodb-loading-multibyte-data-from-amazon-dynamodb"></a>

データに ASCII 以外のマルチバイト文字 (漢字やキリル文字) が含まれる場合、データを VARCHAR 列にロードする必要があります。VARCHAR データ型は 4 バイトの UTF-8 文字をサポートしますが、CHAR データ型はシングルバイトの ASCII 文字のみを受け取ります。5 バイト以上の文字を Amazon Redshift テーブルにロードすることはできません。CHAR と VARCHAR に関する詳細は、「[データ型](c_Supported_data_types.md)」を参照してください。