適用対象: Azure Data Factory
Azure Synapse Analytics
ヒント
企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。
この記事では、Azure Data Factory と Synapse Analytics パイプラインでコピー アクティビティを使用して、Azure Database for PostgreSQL との間でデータをコピーする方法について説明します。 また、データ フローを使用して Azure Database for PostgreSQL のデータを変換する方法も説明します。 詳細については、Azure Data Factory および Azure Synapse Analytics の概要記事を参照してください。
重要
Azure Database for PostgreSQL バージョン 2.0 では、ネイティブの Azure Database for PostgreSQL サポートが強化されています。 ソリューションで Azure Database for PostgreSQL バージョン 1.0 を使用している場合は、できるだけ早く Azure Database for PostgreSQL コネクタをアップグレード することをお勧めします。
このコネクタは、Azure Database for PostgreSQL サービス用に特化しています。 オンプレミスまたはクラウドにある汎用 PostgreSQL データベースからデータをコピーするには、PostgreSQL コネクタを使用します。
サポートされる機能
この Azure Database for PostgreSQL コネクタは、以下の機能でサポートされています。
サポートされる機能 | IR | マネージド プライベート エンドポイント |
---|---|---|
Copy アクティビティ (ソース/シンク) | (1) (2) | ✓ |
マッピング データ フロー (ソース/シンク) | (1) | ✓ |
Lookup アクティビティ | (1) (2) | ✓ |
① Azure 統合ランタイム ② セルフホステッド統合ランタイム
3 つのアクティビティは、Azure Database for PostgreSQL 単一サーバー、 フレキシブル サーバー、 Azure Cosmos DB for PostgreSQL で動作します。
重要
Azure Database for PostgreSQL 単一サーバーは、2025 年 3 月 28 日に廃止されます。 その日までにフレキシブル サーバーに移行します。 移行ガイダンスについては、この 記事 と FAQ を参照してください。
作業の開始
パイプラインでコピー アクティビティを実行するには、次のいずれかのツールまたは SDK を使用します。
UI を使用して Azure Database for PostgreSQL へのリンク サービスを作成する
次の手順を使用して、Azure portal UI で Azure database for PostgreSQL のリンク サービスを作成します。
Azure Data Factory または Synapse ワークスペースの [管理] タブに移動し、[リンク サービス] を選択して、[新規] を選択します。
- Azureデータファクトリー
- Azure Synapse
PostgreSQL を検索し、Azure database for PostgreSQL コネクタを選択します。
サービスの詳細を構成し、接続をテストして、新しいリンク サービスを作成します。
コネクタの構成の詳細
以下のセクションでは、Azure Database for PostgreSQL コネクタに固有の Data Factory エンティティの定義に使用されるプロパティについて詳しく説明します。
リンクされたサービスのプロパティ
Azure Database for PostgreSQL コネクタ バージョン 2.0 では、トランスポート層セキュリティ (TLS) 1.3 モードと複数のセキュリティで保護されたソケット層 (SSL) モードがサポートされています。 Azure SQL Database コネクタのバージョンをバージョン 1.0 からアップグレードするには、この セクション を参照してください。 プロパティの詳細については、対応するセクションを参照してください。
バージョン 2.0
バージョン 2.0 を適用すると、Azure Database for PostgreSQL のリンクされたサービスで次のプロパティがサポートされます。
プロパティ | 内容 | 必須 |
---|---|---|
種類 | type プロパティは、次のように設定する必要があります:AzurePostgreSql | はい |
バージョン | 指定するバージョン。 値は 2.0 です。 |
はい |
認証タイプ | 基本、サービス プリンシパル、システム割り当てマネージド ID、またはユーザー割り当てマネージド ID 認証の種類から選択する | はい |
サーバー | Azure Database for PostgreSQL が実行されているホスト名と必要に応じてポートを指定します。 | はい |
港 | Azure Database for PostgreSQL サーバーの TCP ポート。 既定値は 5432 です。 |
いいえ |
データベース | 接続する Azure Database for PostgreSQL データベースの名前。 | はい |
SSLモード | サーバーのサポートに応じて、SSL を使用するかどうかを制御します。 - Disable: SSL が無効です。 サーバーで SSL が必要な場合、接続は失敗します。 - Allow: サーバーで許可されている場合は非 SSL 接続が優先されますが、SSL 接続も許可されます。 - Prefer: サーバーで許可されている場合は SSL 接続が優先されますが、SSL を使用しない接続も許可されます。 - 必須: サーバーが SSL をサポートしていない場合、接続は失敗します。 - Verify-ca: サーバーが SSL をサポートしていない場合、接続は失敗します。 サーバー証明書の検証も行われます。 - Verify-full: サーバーが SSL をサポートしていない場合、接続は失敗します。 ホスト名を含むサーバー証明書の検証も行われます。 オプション: Disable (0) / Allow (1) / Prefer (2) (既定値) / Require (3) / Verify-ca (4) / Verify-full (5) |
いいえ |
connectVia (接続ビア) | このプロパティは、データ ストアに接続するために使用される統合ランタイムを表します。 Azure 統合ランタイムまたは自己ホスト型統合ランタイム (データ ストアがプライベート ネットワークにある場合) を使用できます。 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。 | いいえ |
追加の接続プロパティ: | ||
スキーマ | スキーマ検索パスを設定します。 | いいえ |
プーリング | 接続プールを使用する必要があるかどうか。 | いいえ |
接続タイムアウト | 接続を確立する際、試行を終了してエラーを生成するまでに待機する時間 (秒)。 | いいえ |
commandTimeout | コマンドを実行しようとする際の試行中に、試行を打ち切ってエラーを生成するまでの待機時間 (秒数)。 無限の場合はゼロに設定されます。 | いいえ |
サーバー証明書を信頼する | サーバー証明書を検証せずに信頼するかどうか。 | いいえ |
リードバッファサイズ (readBufferSize) | Npgsql が読み込み時に使用する内部バッファーのサイズを決定します。 データベースから大きな値を転送する場合、この値を増やすとパフォーマンスが向上する可能性があります。 | いいえ |
タイムゾーン | セッション タイムゾーンを取得または設定します。 | いいえ |
エンコーディング | PostgreSQL 文字列データをエンコード/デコードするための .NET エンコードを取得または設定します。 | いいえ |
基本認証
プロパティ | 内容 | 必須 |
---|---|---|
ユーザー名 | 接続するためのユーザー名。 IntegratedSecurity を使用している場合は必要ありません。 | はい |
パスワード | 接続するためのパスワード。 IntegratedSecurity を使用している場合は必要ありません。 安全に保存するには、このフィールドを SecureString としてマークします。 また、Azure Key Vault に格納されているシークレットを参照することもできます。 | はい |
例:
{
"name": "AzurePostgreSqlLinkedService",
"properties": {
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": "5432",
"database": "<database name>",
"sslMode": 2,
"username": "<user name>",
"password": {
"type": "SecureString",
"value": "<password>"
}
}
}
}
例:
Azure Key Vault にパスワードを格納する
{
"name": "AzurePostgreSqlLinkedService",
"properties": {
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": "5432",
"database": "<database name>",
"sslMode": 2,
"username": "<user name>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
}
}
}
システム割り当てマネージド ID 認証
データ ファクトリまたは Synapse ワークスペースは、Azure 内の他のリソースに対する認証時にサービスを表す システム割り当てマネージド ID に関連付けることができます。 このマネージド ID は、Azure Database for PostgreSQL 認証に使用できます。 指定されたファクトリまたは Synapse ワークスペースでは、この ID を使用してデータベースにアクセスし、データベースとの間でデータをコピーできます。
システム割り当てマネージド ID を使用するには、次の手順に従います。
データ ファクトリまたは Synapse ワークスペースは、システム割り当てマネージド ID に関連付けることができます。 詳細については、 システム割り当てマネージド ID を生成する
システム割り当てマネージド ID がオンになっている PostgreSQL 用の Azure データ。
Azure Database for PostgreSQL リソースの [セキュリティ] で
PostgreSQL リンク サービス用に Azure データベースを構成します。
例:
{
"name": "AzurePostgreSqlLinkedService",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"annotations": [],
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": 5432,
"database": "<database name>",
"sslMode": 2,
"authenticationType": "SystemAssignedManagedIdentity"
}
}
}
ユーザー割り当てマネージド ID 認証
データ ファクトリまたは Synapse ワークスペースは、Azure 内の他のリソースに対する認証時にサービスを表す ユーザー割り当てマネージド ID に関連付けることができます。 このマネージド ID は、Azure Database for PostgreSQL 認証に使用できます。 指定されたファクトリまたは Synapse ワークスペースでは、この ID を使用してデータベースにアクセスし、データベースとの間でデータをコピーできます。
前のセクションで説明した汎用的なプロパティに加えて、ユーザー割り当てマネージド ID 認証を使用するには、次のプロパティを指定します。
プロパティ | 内容 | 必須 |
---|---|---|
資格情報 | ユーザー割り当てマネージド ID を資格情報オブジェクトとして指定します。 | はい |
また、次の手順に従う必要があります。
Azure portal の ユーザー割り当てマネージド ID リソースで作成してください。 詳細については、「ユーザー割り当てマネージド ID の管理」を参照してください
ユーザー割り当てマネージド ID を Azure Database for PostgreSQL リソースに割り当てる
ユーザー割り当てマネージド ID を Azure Data Factory リソースに割り当てる
PostgreSQL リンク サービス用に Azure データベースを構成します。
例:
{
"name": "AzurePostgreSqlLinkedService",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"annotations": [],
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": 5432,
"database": "<database name>",
"sslMode": 2,
"authenticationType": "UserAssignedManagedIdentity",
"credential": {
"referenceName": "<your credential>",
"type": "CredentialReference"
}
}
}
}
サービス プリンシパルの認証
プロパティ | 内容 | 必須 |
---|---|---|
ユーザー名 | サービス プリンシパルの表示名 | はい |
テナント | Azure Database for PostgreSQL サーバーが配置されているテナント | はい |
サービスプリンシパルID (servicePrincipalId) | サービス プリンシパルのアプリケーション ID | はい |
servicePrincipalCredentialType | サービス プリンシパル証明書またはサービス プリンシパル キーが必要な認証方法かどうかを選択する - ServicePrincipalCert: サービス プリンシパル証明書のサービス プリンシパル証明書に設定します。 - ServicePrincipalKey: サービス プリンシパル キー認証のサービス プリンシパル キーに設定します。 |
はい |
servicePrincipalKey(サービスプリンシパルキー) | クライアント シークレット値。 サービス プリンシパル キーが選択されている場合に使用されます | はい |
Azureクラウドタイプ | Azure Database for PostgreSQL サーバーの Azure クラウドの種類を選択する | はい |
サービスプリンシパル組み込み証明書 | サービス プリンシパル証明書ファイル | はい |
servicePrincipalEmbeddedCertPassword | 必要な場合はサービス プリンシパル証明書のパスワード | いいえ |
例:
サービス プリンシパル キー
{
"name": "AzurePostgreSqlLinkedService",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"annotations": [],
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": 5432,
"database": "<database name>",
"sslMode": 2,
"username": "<service principal name>",
"authenticationType": "<authentication type>",
"tenant": "<tenant>",
"servicePrincipalId": "<service principal ID>",
"azureCloudType": "<azure cloud type>",
"servicePrincipalCredentialType": "<service principal type>",
"servicePrincipalKey": "<service principal key>"
}
}
}
例:
サービス プリンシパル証明書
{
"name": "AzurePostgreSqlLinkedService",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"annotations": [],
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": 5432,
"database": "<database name>",
"sslMode": 2,
"username": "<service principal name>",
"authenticationType": "<authentication type>",
"tenant": "<tenant>",
"servicePrincipalId": "<service principal ID>",
"azureCloudType": "<azure cloud type>",
"servicePrincipalCredentialType": "<service principal type>",
"servicePrincipalEmbeddedCert": "<service principal certificate>",
"servicePrincipalEmbeddedCertPassword": "<service principal embedded certificate password>"
}
}
}
バージョン 1.0
バージョン 1.0 を適用すると、Azure Database for PostgreSQL のリンクされたサービスで次のプロパティがサポートされます。
プロパティ | 内容 | 必須 |
---|---|---|
種類 | type プロパティは、次のように設定する必要があります:AzurePostgreSql | はい |
バージョン | 指定するバージョン。 値は 1.0 です。 |
はい |
コネクションストリング | Azure Database for PostgreSQL に接続するための Npgsql 接続文字列。 パスワードを Azure Key Vault に格納して、接続文字列から password 構成をプルすることもできます。 詳細については、下記の例と、「Azure Key Vault への資格情報の格納」を参照してください。 |
はい |
connectVia (接続ビア) | このプロパティは、データ ストアに接続するために使用される統合ランタイムを表します。 Azure 統合ランタイムまたは自己ホスト型統合ランタイム (データ ストアがプライベート ネットワークにある場合) を使用できます。 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。 | いいえ |
一般的な接続文字列は host=<server>.postgres.database.azure.com;database=<database>;port=<port>;uid=<username>;password=<password>
です。 ケースごとにさらに多くのプロパティを設定できます。それらのプロパティを次に示します。
プロパティ | 内容 | オプション | 必須 |
---|---|---|---|
EncryptionMethod (EM) | ドライバーとデータベース サーバー間で送信されるデータを暗号化するためにドライバーが使用するメソッド。 たとえば、EncryptionMethod=<0/1/6>; |
0 (暗号化なし) (既定) /1 (SSL)/6 (RequestSSL) | いいえ |
ValidateServerCertificate (VSC) | SSL 暗号化が有効 (Encryption Method=1) になっているときに、データベース サーバーによって送信される証明書をドライバーが検証するかどうかを決定します。 たとえば、ValidateServerCertificate=<0/1>; |
0 (無効) (既定) / 1 (有効) | いいえ |
例:
{
"name": "AzurePostgreSqlLinkedService",
"properties": {
"type": "AzurePostgreSql",
"version": "1.0",
"typeProperties": {
"connectionString": "host=<server>.postgres.database.azure.com;database=<database>;port=<port>;uid=<username>;password=<password>"
}
}
}
例:
Azure Key Vault にパスワードを格納する
{
"name": "AzurePostgreSqlLinkedService",
"properties": {
"type": "AzurePostgreSql",
"version": "1.0",
"typeProperties": {
"connectionString": "host=<server>.postgres.database.azure.com;database=<database>;port=<port>;uid=<username>;",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
}
}
}
データセットのプロパティ
データセットの定義に使用できるセクションとプロパティの一覧については、データセットに関する記事をご覧ください。 このセクションでは、Azure Database for PostgreSQL がデータセットでサポートするプロパティの一覧を示します。
Azure Database for PostgreSQL からデータをコピーするには、データセットの type プロパティを AzurePostgreSqlTable に設定します。 次のプロパティがサポートされています。
プロパティ | 内容 | 必須 |
---|---|---|
種類 | データセットの type プロパティは 、AzurePostgreSqlTable に設定する必要があります。 | はい |
スキーマ | スキーマの名前。 | いいえ (アクティビティ ソースの "query" が指定されている場合) |
テーブル / 表 | テーブル/ビューの名前。 | いいえ (アクティビティ ソースの "query" が指定されている場合) |
テーブル名 | テーブルの名前。 このプロパティは下位互換性のためにサポートされています。 新しいワークロードでは、schema と table を使用します。 |
いいえ (アクティビティ ソースの "query" が指定されている場合) |
例:
{
"name": "AzurePostgreSqlDataset",
"properties": {
"type": "AzurePostgreSqlTable",
"linkedServiceName": {
"referenceName": "<AzurePostgreSql linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"schema": "<schema_name>",
"table": "<table_name>"
}
}
}
コピー アクティビティのプロパティ
アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインおよびアクティビティに関するページを参照してください。 このセクションでは、Azure Database for PostgreSQL ソースでサポートされるプロパティの一覧を示します。
ソースとしての Azure Database for PostgreSql
Azure Database for PostgreSQL からデータをコピーするには、コピー アクティビティのソースの種類を AzurePostgreSqlSource に設定します。 コピー アクティビティの source セクションでは、次のプロパティがサポートされます。
プロパティ | 内容 | 必須 |
---|---|---|
種類 | コピー アクティビティのソースの type プロパティは AzurePostgreSqlSource に設定する必要があります | はい |
問い合わせ | カスタム SQL クエリを使用してデータを読み取ります。 たとえば、SELECT * FROM mytable や SELECT * FROM "MyTable" などです。 PostgreSQL では、エンティティ名が引用符で囲まれていない場合、大文字と小文字が区別されません。 |
いいえ (データセットの tableName プロパティが指定されている場合) |
queryTimeout | コマンド実行の試行を終了してエラーを生成するまでの待機時間。既定値は 120 分です。 このプロパティにパラメーターを設定する場合、使用できる値は "02:00:00" (120 分) などの期間です。 詳細については、「CommandTimeout」を参照してください。 | いいえ |
パーティションオプション | Azure SQL Database からのデータの読み込みに使用されるデータ パーティション分割オプションを指定します。 使用できる値は、以下のとおりです。None (既定値)、PhysicalPartitionsOfTable、および DynamicRange。 パーティション オプションが有効になっている場合 (つまり、 None ではない場合)、Azure SQL Database から同時にデータを読み込む並列処理の次数は、コピー アクティビティの parallelCopies の設定によって制御されます。 |
いいえ |
パーティション設定 | データ パーティション分割の設定のグループを指定します。 パーティション オプションが None でない場合に適用されます。 |
いいえ |
partitionSettings の下: |
||
partitionNames | コピーする必要がある物理パーティションのリスト。 パーティション オプションが PhysicalPartitionsOfTable である場合に適用されます。 クエリを使用してソース データを取得する場合は、WHERE 句で ?AdfTabularPartitionName をフックします。 例については、「Azure Database for PostgreSQL からの並列コピー」セクションを参照してください。 |
いいえ |
パーティションカラム名 | 並列コピーの範囲パーティション分割で使用される整数型または日付/日時型 (int 、smallint 、bigint 、date 、timestamp without time zone 、timestamp with time zone または time without time zone ) のソース列の名前を指定します。 指定されていない場合は、テーブルの主キーが自動検出され、パーティション列として使用されます。パーティション オプションが DynamicRange である場合に適用されます。 クエリを使用してソース データを取得する場合は、WHERE 句で ?AdfRangePartitionColumnName をフックします。 例については、「Azure Database for PostgreSQL からの並列コピー」セクションを参照してください。 |
いいえ |
パーティション境界上限 | データをコピーするパーティション列の最大値。 パーティション オプションが DynamicRange である場合に適用されます。 クエリを使用してソース データを取得する場合は、WHERE 句で ?AdfRangePartitionUpbound をフックします。 例については、「Azure Database for PostgreSQL からの並列コピー」セクションを参照してください。 |
いいえ |
partitionLowerBound | データをコピーするパーティション列の最小値。 パーティション オプションが DynamicRange である場合に適用されます。 クエリを使用してソース データを取得する場合は、WHERE 句で ?AdfRangePartitionLowbound をフックします。 例については、「Azure Database for PostgreSQL からの並列コピー」セクションを参照してください。 |
いいえ |
例:
"activities":[
{
"name": "CopyFromAzurePostgreSql",
"type": "Copy",
"inputs": [
{
"referenceName": "<AzurePostgreSql input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "AzurePostgreSqlSource",
"query": "<custom query e.g. SELECT * FROM mytable>",
"queryTimeout": "00:10:00"
},
"sink": {
"type": "<sink type>"
}
}
}
]
シンクとしての Azure Database for PostgreSQL
データを Azure Database for PostgreSQL にコピーするために、コピー アクティビティの sink セクションでは以下のプロパティがサポートされています。
プロパティ | 内容 | 必須 |
---|---|---|
種類 | コピー アクティビティ シンクの type プロパティは 、AzurePostgreSqlSink に設定する必要があります。 | はい |
preCopyScript | コピー アクティビティの毎回の実行で、データを Azure Database for PostgreSQL に書き込む前に実行する SQL クエリを指定します。 このプロパティを使用して、事前に読み込まれたデータをクリーンアップできます。 | いいえ |
writeMethod | Azure Database for PostgreSQL にデータを書き込むために使用するメソッド。 使用できる値は、CopyCommand (規定値で、パフォーマンスがより高い)、BulkInsert です。 |
いいえ |
writeBatchSize | バッチごとに Azure Database for PostgreSQL に読み込まれる行の数。 許可される値は行数を表す整数です。 |
いいえ (既定値は 1,000,000) |
writeBatchTimeout | タイムアウトする前に一括挿入操作の完了を待つ時間です。 Timespan 文字列を値として使用できます。 たとえば "00:30:00" (30 分) を指定できます。 |
いいえ (既定値は 00:30:00) |
例:
"activities":[
{
"name": "CopyToAzureDatabaseForPostgreSQL",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure PostgreSQL output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzurePostgreSqlSink",
"preCopyScript": "<custom SQL script>",
"writeMethod": "CopyCommand",
"writeBatchSize": 1000000
}
}
}
]
Azure Database for PostgreSQL からの並列コピー
Azure Database for PostgreSQL コネクタでは、Copy アクティビティの際に、データを並列でコピーするための組み込みのデータ パーティション分割が提供されます。 データ パーティション分割オプションは、コピー アクティビティの [ソース] タブにあります。
パーティション分割されるコピーを有効にすると、Copy アクティビティによって Azure Database for PostgreSQL ソースに対する並列クエリが実行され、パーティションごとにデータが読み込まれます。 並列度は、コピー アクティビティの parallelCopies
設定によって制御されます。 たとえば、parallelCopies
を 4 に設定した場合、指定したパーティション オプションと設定に基づいて 4 つのクエリが同時に生成され、実行されます。各クエリでは、Azure Database for PostgreSQL からデータの一部を取得します。
特に Azure Database for PostgreSQL から大量のデータを読み込む場合は、データ パーティション分割を使用して並列コピーを有効にすることをお勧めします。 さまざまなシナリオの推奨構成を以下に示します。 ファイル ベースのデータ ストアにデータをコピーする場合は、フォルダーに複数のファイルとして書き込む (フォルダー名のみを指定する) ようにすることをお勧めします。その場合、パフォーマンスは 1 つのファイルに書き込むよりも優れています。
シナリオ | 推奨設定 |
---|---|
物理パーティションに分割された大きなテーブル全体から読み込む。 |
パーティション オプション: テーブルの物理パーティション。 実行中に、サービスによって物理パーティションが自動的に検出され、パーティションごとにデータがコピーされます。 |
物理パーティションがなく、データ パーティション分割用の整数列がある大きなテーブル全体から読み込む。 |
パーティション オプション: 動的範囲パーティション。 パーティション列: データのパーティション分割に使用される列を指定します。 指定されていない場合は、主キー列が使用されます。 |
カスタム クエリを使用して大量のデータを読み込む (物理パーティションがある場合)。 |
パーティション オプション: テーブルの物理パーティション。 クエリ: SELECT * FROM ?AdfTabularPartitionName WHERE <your_additional_where_clause> パーティション名: データのコピー元のパーティション名を 1 つ以上指定します。 指定されていない場合は、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 Integration Runtime を使用してデータをコピーする場合は、より大きな (4 より大きい) "データ統合単位 (DIU)" (>4) を設定すると、より多くのコンピューティング リソースを利用できます。 そこで、該当するシナリオを確認してください。
- "コピーの並列処理の次数" はパーティション番号を制御します。この数を大きすぎると、パフォーマンスが低下することがあります。 この数を (DIU またはセルフホステッド IR ノードの数) * (2 から 4) に設定することをお勧めします。
例: 複数の物理パーティションがある大きなテーブル全体から読み込む
"source": {
"type": "AzurePostgreSqlSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
例: 動的範囲パーティションを使用してクエリを実行する
"source": {
"type": "AzurePostgreSqlSource",
"query": "SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>",
"partitionOption": "DynamicRange",
"partitionSettings": {
"partitionColumnName": "<partition_column_name>",
"partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
"partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
}
}
Mapping Data Flow のプロパティ
マッピング データ フローでデータを変換する場合、Azure Database for PostgreSQL からテーブルの読み取りと書き込みを実行できます。 詳細については、マッピング データ フローのソース変換とシンク変換に関する記事をご覧ください。 ソースとシンクの種類として、Azure Database for PostgreSQL データセットまたはインライン データセットを使用することができます。
ソース変換
次の表に、Azure Database for PostgreSQL ソースでサポートされるプロパティの一覧を示します。 これらのプロパティは、 [ソース オプション] タブで編集できます。
名前 | 内容 | 必須 | 使用できる値 | データ フロー スクリプトのプロパティ |
---|---|---|---|---|
テーブル | [テーブル] を入力として選択した場合、データセットで指定されたテーブルからすべてのデータがデータ フローによってフェッチされます。 | いいえ | - |
(インライン データセットのみ) テーブル名 |
クエリ | [クエリ] を入力として選択した場合は、ソースからデータをフェッチする SQL クエリを指定します。これにより、データセットで指定したテーブルがオーバーライドされます。 テストまたはルックアップ対象の行を減らすうえで、クエリの使用は有効な手段です。 Order By 句はサポートされていませんが、完全な SELECT FROM ステートメントを設定できます。 ユーザー定義のテーブル関数を使用することもできます。 select * from udfGetData() は、データ フローで使用できるテーブルを返す SQL の UDF です。 クエリ例: select * from mytable where customerId > 1000 and customerId < 2000 または select * from "MyTable" 。 PostgreSQL では、エンティティ名が引用符で囲まれていない場合、大文字と小文字が区別されません。 |
いいえ | 糸 | 問い合わせ |
スキーマ名 | 入力としてストアド プロシージャを選択する場合、ストアド プロシージャのスキーマを指定するか、[更新] を選択し、スキーマ名を検出するようにサービスに要求します。 | いいえ | 糸 | スキーマ名 |
ストアド プロシージャ | 入力として [ストアド プロシージャ] を選択する場合、ソース テーブルからデータを読み込むストアド プロシージャの名前を指定するか、[更新] を選択し、プロシージャ名を検出するようにサービスに要求します。 | はい ([ストアド プロシージャ] を入力として選択した場合) | 糸 | 手順名 |
プロシージャのパラメーター | 入力として [ストアド プロシージャ] を選択した場合、プロシージャで設定された順序でストアド プロシージャの入力パラメーターを指定するか、[インポート] を選択し、フォーム @paraName を使用してすべてのプロシージャ パラメーターをインポートします。 |
いいえ | 配列 | 入力 |
バッチ サイズ | 大量データをバッチにまとめるバッチ サイズを指定します。 | いいえ | 整数 | バッチサイズ |
分離レベル | 次のいずれかの分離レベルを選択します。 - コミットされたものを読み取り - コミットされていないものを読み取り (既定値) - 反復可能読み取り - シリアル化可能 - なし (分離レベルを無視) |
いいえ | READ_COMMITTED READ_UNCOMMITTED REPEATABLE_READ シリアライズ可能 なし |
分離レベル (isolationLevel) |
Azure Database for PostgreSQL ソース スクリプトの例
ソースの種類として Azure Database for PostgreSQL を使用する場合、関連付けられているデータ フロー スクリプトは次のようになります。
source(allowSchemaDrift: true,
validateSchema: false,
isolationLevel: 'READ_UNCOMMITTED',
query: 'select * from mytable',
format: 'query') ~> AzurePostgreSQLSource
シンク変換
次の表に、Azure Database for PostgreSQL シンクでサポートされるプロパティの一覧を示します。 これらのプロパティは、 [シンク オプション] タブで編集できます。
名前 | 内容 | 必須 | 使用できる値 | データ フロー スクリプトのプロパティ |
---|---|---|---|---|
更新方法 | 対象となるデータベースに対して許可される操作を指定します。 既定では、挿入のみが許可されます。 行を更新、アップサート、または削除するには、それらのアクションに対して行をタグ付けするために行の変更変換が必要になります。 |
はい |
true または false |
削除可能 insertable updateable upsertable |
[キー列] | 更新、アップサート、および削除の場合は、変更する行を決定するためにキー列を設定する必要があります。 キーとして選択した列名は、後続の更新、アップサート、削除の一部として使用されます。 そのため、シンク マッピングに存在する列を選択する必要があります。 |
いいえ | 配列 | キー |
Skip writing key columns\(キー列の書き込みをスキップする) | キー列に値を書き込まない場合は、[Skip writing key columns](キー列の書き込みをスキップする) を選択します。 | いいえ |
true または false |
skipKeyWrites |
テーブル アクション | 書き込む前に、コピー先テーブルのすべての行を再作成するか削除するかを決定します。 - なし: テーブルに対するアクションは実行されません。 - 再作成: テーブルが削除され、再作成されます。 新しいテーブルを動的に作成する場合に必要です。 - 切り捨て: ターゲット テーブルのすべての行が削除されます。 |
いいえ |
true または false |
再現 切り捨てる |
バッチ サイズ | 各バッチで書き込まれる行の数を指定します。 バッチ サイズを大きくすると、圧縮とメモリの最適化が向上しますが、データをキャッシュする際にメモリ不足の例外が発生するリスクがあります。 | いいえ | 整数 | バッチサイズ |
ユーザー DB スキーマの選択 | 既定では、一時テーブルはステージングとしてシンク スキーマの下に作成されます。 または、[ シンク スキーマを使用 する] オプションをオフにして、代わりに、Data Factory がステージング テーブルを作成してアップストリーム データを読み込み、完了時に自動的にクリーンアップするスキーマ名を指定することもできます。 データベースにテーブルの作成権限があり、スキーマに対する変更権限があることを確認します。 | いいえ | 糸 | stagingSchemaName |
事前および事後の SQL スクリプト | データがシンク データベースに書き込まれる前 (前処理) および後 (後処理) に実行される複数行の SQL スクリプトを指定します。 | いいえ | 糸 | preSQLs postSQLs |
ヒント
- 複数のコマンドを含む 1 つのバッチ スクリプトを複数のバッチに分割します。
- バッチの一部として実行できるのは、単純に更新数を返すデータ操作言語 (DML) ステートメントおよびデータ定義言語 (DDL) ステートメントだけです。 詳細については、「バッチ操作の実行」を参照してください。
増分抽出を有効にする: このオプションを使用して、パイプラインが最後に実行されてから変更された行のみを処理するように ADF に指示します。
増分日付列: 増分抽出機能を使う場合は、ソース テーブルのウォーターマークとして使う日時列を選ぶ必要があります。
最初から読み取りを開始する: このオプションを増分抽出で設定すると、増分抽出が有効になっているパイプラインの最初の実行時にすべての行を読み取るよう ADF に指示されます。
Azure Database for PostgreSQL シンク スクリプトの例
シンクの種類として Azure Database for PostgreSQL を使用する場合、関連付けられているデータ フロー スクリプトは次のようになります。
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:false,
insertable:true,
updateable:true,
upsertable:true,
keys:['keyColumn'],
format: 'table',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> AzurePostgreSqlSink
Lookup アクティビティのプロパティ
プロパティの詳細については、ルックアップ アクティビティに関する記事を参照してください。
Azure Database for PostgreSQL コネクタをアップグレードする
[リンクされたサービスの編集] ページで、[バージョン] で 2.0 を選択し、リンクされたサービスプロパティバージョン 2.0 を参照してリンクされたサービスを構成します。
関連するコンテンツ
コピー アクティビティによってソース、シンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアに関するセクションを参照してください。