コピー アクティビティで Azure Database for PostgreSQL を設定する
この記事では、Data パイプラインのコピー アクティビティを使用して Azure Database for PostgreSQL から、または Azure Database for PostgreSQL にデータをコピーする方法について説明します。
サポートされている構成
Copy アクティビティの下の各タブの構成については、それぞれ次のセクションを参照してください。
全般
[全般設定] タブを構成するには、全般設定のガイダンスを参照してください。
Source
[ソース] タブに移動して、コピー アクティビティのソースを構成します。 詳細な構成については、次の内容を参照してください。
次の 3 つのプロパティが必要です。
- [データ ストアの種類]: [外部] を選択します。
- 接続: 接続リストで、Azure Database for PostgreSQL を選択します。 接続が存在しない場合は、[新規] を選択して新しい Azure Database for PostgreSQL を作成します。
- 接続タイプ: Azure Database for PostgreSQL を選択します。
- 使用クエリ: 特定のテーブルからデータを読み込むには [テーブル] を、クエリを使用してデータを読み込むには [クエリ] を選択します。
[テーブル] を選択した場合:
テーブル: ドロップダウン リストからテーブルを選択するか、[編集] を選択し手動入力でデータを読み込みます。
[クエリ] を選択した場合:
[クエリ]: カスタムの SQL クエリを使用してデータを読み取ります。 たとえば、
SELECT * FROM mytable
やSELECT * FROM "MyTable"
などです。Note
PostgreSQL で、エンティティ名は引用符が付いていない限り、大文字と小文字が区別されます。
[詳細設定] では、次のフィールドを指定できます。
パーティション オプション: Azure Database for PostgreSQL からデータを読み込むために使用するデータ パーティション オプションを指定します。 パーティション オプションを有効にすると ([なし])、Azure Database for PostgreSQL から同時にデータを読み込む並列処理の程度は、コピー アクティビティ設定タブの [コピー並列処理の程度] で管理されます。
[なし] を選択すると、パーティションを使用しないと選択したことになります。
[テーブルの物理パーティション] を選択した場合:
パーティション名: コピーする必要がある物理パーティションのリストを指定します。
クエリを使用してソース データを取得する場合は、WHERE 句で
?AdfTabularPartitionName
をフックします。 例については、「Azure Database for PostgreSQL からの並列コピー」セクションを参照してください。
[ダイナミック レンジ] を選択した場合:
並列コピーでレンジ パーティションによって使用されるパーティション列名: ソース列の名前を整数または日付/日時タイプで指定します (
int
、smallint
、bigint
、date
、timestamp without time zone
、timestamp with time zone
、またはtime without time zone
)。 指定されていない場合は、テーブルの主キーが自動検出され、パーティション列として使用されます。クエリを使用してソース データを取得する場合は、WHERE 句で
?AdfRangePartitionColumnName
をフックします。 例については、「Azure Database for PostgreSQL からの並列コピー」セクションを参照してください。パーティションの上限: データをコピーするパーティション列の最大値を指定します。
クエリを使用してソース データを取得する場合は、WHERE 句で
?AdfRangePartitionUpbound
をフックします。 例については、「Azure Database for PostgreSQL からの並列コピー」セクションを参照してください。 .パーティションの下限: データをコピーするパーティション列の最小値を指定します。
クエリを使用してソース データを取得する場合は、WHERE 句で
?AdfRangePartitionLowbound
をフックします。 例については、「Azure Database for PostgreSQL からの並列コピー」セクションを参照してください。
[追加の列]: ソース ファイルの相対パスまたは静的値を格納するための追加のデータ列を追加します。 後者では式がサポートされています。
宛先
[コピー先] タブに移動して、コピー アクティビティのコピー先を構成します。 詳細な構成については、次の内容を参照してください。
次の 3 つのプロパティが必要です。
- [データ ストアの種類]: [外部] を選択します。
- 接続: 接続リストで、Azure Database for PostgreSQL を選択します。 接続が存在しない場合は、[新規] を選択して新しい Azure Database for PostgreSQL を作成します。
- 接続タイプ: Azure Database for PostgreSQL を選択します。
- テーブル: ドロップダウン リストからテーブルを選択するか、[編集] を選択し手動入力でデータを書き込みます。
[詳細設定] では、次のフィールドを指定できます。
書き込み方法: Azure Database for PostgreSQL にデータを書き込むために使用される方法を選択します。 [コマンドをコピー] (デフォルト、よりパフォーマンスが高い) または [一括挿入] を選択します。
事前コピー スクリプト: 各実行で Azure Database for PostgreSQL にデータを書き込む前に、コピー アクティビティを実行する SQL クエリを指定します。 このプロパティを使用して、事前に読み込まれたデータをクリーンアップできます。
[書き込みバッチ タイムアウト]: タイムアウトになるまでに一括挿入操作の完了を待つ時間です。許容される値は期間です。 デフォルト値は 00:30:00 (30 分) です。
書き込みバッチ サイズ: バッチごとに Azure Database for PostgreSQL に読み込まれる行の数を指定します。 許可される値は行数を表す整数です。 既定値は 1,000,000 です。
マッピング
[マッピング] タブの構成については、「[マッピング] タブでマッピングを構成する」をご覧ください。
設定
[設定] タブの構成については、「[設定] タブで他の設定を構成する」を参照してください。
Azure Database for PostgreSQL からの並列コピー
Azure Database for PostgreSQL コネクタでは、Copy アクティビティの際に、データを並列でコピーするための組み込みのデータ パーティション分割が提供されます。 データ パーティション分割オプションは、コピー アクティビティの [ソース] タブにあります。
パーティション分割されるコピーを有効にすると、Copy アクティビティによって Azure Database for PostgreSQL ソースに対する並列クエリが実行され、パーティションごとにデータが読み込まれます。 並列処理の程度は、コピー アクティビティ設定タブの [コピー並列処理の程度] によって管理されています。たとえば、[コピー並列処理の程度] を 4 に設定すると、サービスは指定したパーティション オプションと設定に基づき同時に 4 つのクエリを生成、実行します。また、各クエリは Azure Database for PostgreSQL からデータの一部を取得します。
Azure Database for PostgreSQL から大量のデータを読み込む場合は特に、データ パーティション分割を行う並列コピーを有効にすることが推奨されます。 さまざまなシナリオの推奨構成を以下に示します。 ファイルベースのデータ ストアにデータをコピーする場合は、複数のファイルとしてフォルダーに書き込む (フォルダー名のみを指定する) ことをお勧めします。この場合、1 つのファイルに書き込むよりもパフォーマンスが優れています。
シナリオ | 推奨設定 |
---|---|
物理パーティションに分割された大きなテーブル全体から読み込む。 | パーティション オプション: テーブルの物理パーティション。 実行中に、サービスによって物理パーティションが自動的に検出され、パーティションごとにデータがコピーされます。 |
物理パーティションがなく、データ パーティション分割用の整数列がある大きなテーブル全体から読み込む。 | パーティション オプション: ダイナミック レンジ。 パーティション列: データのパーティション分割に使用される列を指定します。 指定されていない場合は、主キー列が使用されます。 |
カスタム クエリを使用して大量のデータを読み込む (物理パーティションがある場合)。 | パーティション オプション: テーブルの物理パーティション。 クエリ: SELECT * FROM ?AdfTabularPartitionName WHERE <your_additional_where_clause> パーティション名: データのコピー元のパーティション名を指定します。 指定されていない場合は、PostgreSQL データセットで指定したテーブルの物理パーティションがサービスによって自動検出されます。 実行中に、サービスによって ?AdfTabularPartitionName が実際のパーティション名に置き換えられ、Azure Database for PostgreSQL に送信されます。 |
カスタム クエリを使用して大量のデータを読み込む (物理パーティションがなく、データ パーティション分割用の整数列がある場合)。 | パーティション オプション: ダイナミック レンジ。 クエリ: SELECT * FROM ?AdfTabularPartitionName WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause> パーティション列: データのパーティション分割に使用される列を指定します。 整数データ型または date/datetime データ型の列に対してパーティション分割を実行できます。 パーティションの上限 と パーティションの下限: データを取得するパーティション列を下限と上限の間でのみにフィルタリングする場合に指定します。 実行中に、 ?AdfRangePartitionColumnName 、?AdfRangePartitionUpbound 、?AdfRangePartitionLowbound が各パーティションの実際の列名と値の範囲に置き換えられ、Azure Database for PostgreSQL に送信されます。 たとえば、パーティション列 "ID" で下限が 1、上限が 80 に設定され、並列コピーが 4 に設定されている場合、サービスは 4 つのパーティションでデータを取得します。 これらの ID の範囲はそれぞれ [1, 20]、[21, 40]、[41, 60]、[61, 80] です。 |
パーティション オプションを使用してデータを読み込む場合のベスト プラクティス:
- データ スキューを回避するため、パーティション列 (主キーや一意キーなど) には特徴のある列を選択します。
- テーブルに組み込みパーティションがある場合は、パフォーマンスを向上させるためにパーティション オプションとして "テーブルの物理パーティション" を使用します。
表の概要
次のテーブルには、Azure Database for PostgreSQL のコピー アクティビティに関する詳細が含まれています。
ソース情報
名前 | Description | Value | 必須 | JSON スクリプト プロパティ |
---|---|---|---|---|
データ ストアの種類 | データ ストアの種類。 | 外部品目番号 | はい | / |
接続 | ソース データ ストアへの実際の接続。 | <ユーザーの Azure Database for PostgreSQL 接続> | はい | つながり |
接続の種類 | ソース接続の種類。 | Azure Database for PostgreSQL | はい | / |
[クエリの使用] | データを読み取る方法。 特定のテーブルからデータを読み込むには [テーブル] を、クエリを使用してデータを読み込むには [クエリ] を選択します。 | • [テーブル] • [クエリ] |
はい | • typeProperties (typeProperties ->source )- スキーマ - テーブル • クエリ |
パーティション名 | コピーする必要がある物理パーティションのリスト。 クエリを使用してソース データを取得する場合は、WHERE 句で ?AdfTabularPartitionName をフックします。 |
<ユーザーのパーティション名> | いいえ | partitionNames |
パーティション列名 | 並列コピーでレンジ パーティションによって使用される、整数または日付/日時でのソース列の名前 (int 、smallint 、bigint 、date 、timestamp without time zone 、timestamp with time zone 、または time without time zone )。 指定されていない場合は、テーブルの主キーが自動検出され、パーティション列として使用されます。 |
<ユーザーのパーティション列名> | いいえ | partitionColumnName |
パーティション上限 | データをコピーするパーティション列の最大値。クエリを使用してソース データを取得する場合は、WHERE 句で ?AdfRangePartitionUpbound をフックします。 |
<ユーザーのパーティションの上限> | いいえ | partitionUpperBound |
パーティション下限 | データをコピーするパーティション列の最小値。クエリを使用してソース データを取得する場合は、WHERE 句で ?AdfRangePartitionLowbound をフックします。 |
<ユーザーのパーティションの下限> | いいえ | partitionLowerBound |
追加の列 | ソース ファイルの相対パスまたは静的値を格納するための追加のデータ列を追加します。 後者では式がサポートされています。 | • 名前 • 値 |
いいえ | additionalColumns: • name • value |
コピー先の情報
名前 | Description | Value | 必須 | JSON スクリプト プロパティ |
---|---|---|---|---|
データ ストアの種類 | データ ストアの種類。 | 外部品目番号 | はい | / |
接続 | コピー先データ ストアへの接続。 | <ユーザーの Azure Database for PostgreSQL 接続> | はい | つながり |
接続の種類 | コピー先の接続の種類。 | Azure Database for PostgreSQL | はい | / |
テーブル | データの書き込み先のデータ テーブル。 | <コピー先のテーブルの名前> | はい | typeProperties (typeProperties ->sink の下):- スキーマ - テーブル |
書き込み方法 | Azure Database for PostgreSQL にデータを書き込むために使用するメソッド。 | • コピー コマンド (デフォルト) • 一括挿入 |
いいえ | writeMethod: • CopyCommand • BulkInsert |
コピー前スクリプト | 各実行で Azure Database for PostgreSQL にデータを書き込む前に実行するコピー アクティビティの SQL クエリ。 このプロパティを使用して、事前に読み込まれたデータをクリーンアップできます。 | <ユーザーの事前コピー スクリプト> | いいえ | preCopyScript |
[書き込みバッチ タイムアウト] | タイムアウトする前に一括挿入操作の完了を待つ時間です。 | TimeSpan (既定値は 00:30:00 - 30 分) |
いいえ | writeBatchTimeout |
[Write batch size](書き込みバッチ サイズ) | バッチごとに Azure Database for PostgreSQL に読み込まれる行の数。 | integer (デフォルトは 1,000,000 です) |
いいえ | writeBatchSize |