Поделиться через


Копирование и преобразование данных в Базе данных Azure для PostgreSQL с помощью Фабрики данных Azure или Synapse Analytics

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

В этой статье описано, как использовать действие Copy в конвейерах Фабрики данных Azure и Synapse Analytics для копирования данных в Базу данных Azure для PostgreSQL и из нее, а также как использовать Поток данных для преобразования данных в Базе данных Azure для PostgreSQL. Дополнительные сведения см. в вводных статьях о Фабрике данных Azure и Synapse Analytics.

Это важно

База данных Azure для PostgreSQL версии 2.0 обеспечивает улучшенную поддержку собственной базы данных Azure для PostgreSQL. Если вы используете базу данных Azure для PostgreSQL версии 1.0 в решении, рекомендуется обновить соединитель Базы данных Azure для PostgreSQL в ближайшее время.

Этот соединитель предназначен только для службы База данных Azure для PostgreSQL. Чтобы скопировать данные из универсальной базы данных PostgreSQL, расположенной в локальной среде или в облаке, используйте соединитель PostgreSQL.

Поддерживаемые возможности

Этот соединитель Базы данных Azure для PostgreSQL поддерживается для следующих возможностей.

Поддерживаемые возможности IR Управляемая частная конечная точка
Активность копирования (источник/приемник) (1) (2)
Сопоставление потоков данных (источник/приемник) 1.
Операция поиска (1) (2)

① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции

Три действия выполняются в Azure Database для PostgreSQL на Single Server и Flexible Server, а также в Azure Cosmos DB для PostgreSQL.

Это важно

Единый сервер Базы данных Azure для PostgreSQL будет прекращен 28 марта 2025 г. Перейдите на гибкий сервер по этой дате. Вы можете ознакомиться с этой статьей и часто задаваемыми вопросами о миграции.

Начало работы

Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:

Создание связанной службы для базы данных Azure для PostgreSQL с помощью интерфейса

Используйте следующие шаги, чтобы создать связанную службу для базы данных Azure PostgreSQL в пользовательском интерфейсе Azure Portal.

  1. Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":

  2. Выполните поиск "PostgreSQL" и выберите коннектор Azure для базы данных PostgreSQL.

    Выберите соединитель для базы данных Azure PostgreSQL.

  3. Настройте сведения о службе, проверьте подключение и создайте связанную службу.

    Настройка связанной службы для базы данных Azure для PostgreSQL.

Сведения о конфигурации соединителя

Следующие разделы содержат сведения о свойствах, которые используются для определения сущностей фабрики данных, относящихся к коннектору Azure Database для PostgreSQL.

Свойства связанного сервиса

Соединитель Базы данных Azure для PostgreSQL версии 2.0 поддерживает TLS 1.3 и несколько режимов SSL. Ознакомьтесь с этим разделом , чтобы обновить версию соединителя базы данных SQL Azure с версии 1.0. Чтобы узнать подробности о свойстве, см. соответствующие разделы.

Версия 2.0

Следующие свойства поддерживаются для связанной службы Базы данных Azure для PostgreSQL при применении версии 2.0.

Свойство Описание: Обязательное поле
тип Для свойства type необходимо задать значение AzurePostgreSql. Да
версия Версия, которую вы указали. Значение равно 2.0. Да
тип аутентификации Выбор из базовой или служебной проверки подлинности Да
сервер Указывает имя узла и дополнительный порт, на котором запущена база данных Azure для PostgreSQL. Да
порт TCP-порт сервера Базы данных Azure для PostgreSQL. Значение по умолчанию — 5432. Нет
база данных Имя базы данных Azure Database for PostgreSQL, к которой нужно подключиться. Да
Режим SSL Определяет, используется ли SSL в зависимости от поддержки сервера.
- Отключить: SSL отключен. Если серверу требуется SSL, подключение завершится ошибкой.
- Разрешить: Предпочитать незашифрованные подключения, если сервер разрешает, но также разрешать SSL-подключения.
- Предпочитать: предпочитать SSL-подключения, если сервер разрешает их, но разрешать подключения без SSL.
- Требуется: подключение завершается ошибкой, если сервер не поддерживает SSL.
- Verify-ca: подключение завершается ошибкой, если сервер не поддерживает SSL. Также проверяет сертификат сервера.
- Полная проверка: Соединение не удастся, если сервер не поддерживает SSL. Также проверяет сертификат сервера по имени узла.
Параметры: Отключить (0) / Разрешить (1) / Предпочитать (2) (по умолчанию) / Требовать (3) / Verify-ca (4) / Verify-full (5)
Нет
connectVia Это свойство представляет среду integration runtime, используемую для подключения к хранилищу данных. Вы можете использовать среду выполнения интеграции Azure или локальную среду выполнения интеграции (если ваше хранилище данных расположено в частной сети). Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. Нет
Дополнительные свойства подключения:
схема Задает путь поиска схемы. Нет
Объединение Следует ли использовать пул подключений. Нет
время ожидания подключения Время ожидания (в секундах) при попытке установить подключение, прежде чем завершать попытку и создать ошибку. Нет
commandTimeout Время ожидания (в секундах) при попытке выполнить команду, прежде чем завершать попытку и создать ошибку. Установите значение в ноль для бесконечности. Нет
доверять серверному сертификату Следует ли доверять сертификату сервера, не проверяя его. Нет
размер_буфера_чтения Определяет размер внутреннего буфера Npgsql, используемого при чтении. Увеличение значения может улучшить производительность при передаче больших значений из базы данных. Нет
часовой пояс Устанавливает или возвращает часовой пояс сеанса. Нет
кодировка Возвращает или задает кодировку .NET, которая будет использоваться для кодирования и декодирования строковых данных PostgreSQL. Нет

Обычная проверка подлинности

Свойство Описание: Обязательное поле
имя пользователя Имя пользователя для подключения. Не требуется, если используется 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>" 
            }
        }
    }
}

Аутентификация служебного принципала

Свойство Описание: Обязательное поле
имя пользователя Отображаемое имя субъекта-службы Да
арендатор Клиент, на котором находится сервер Базы данных Azure для PostgreSQL Да
идентификаторОсновногоСервиса Идентификатор приложения субъекта-службы Да
servicePrincipalCredentialType Выберите, является ли сертификат субъекта-службы или ключ субъекта-службы нужным методом проверки подлинности
- ServicePrincipalCert: задайте для сертификата субъекта-службы сертификат субъекта-службы.
- ServicePrincipalKey: задайте для проверки подлинности ключа субъекта-службы ключ субъекта-службы.
Да
Ключ главной службы Значение клиентского секрета. Используется при выборе ключа субъекта-службы Да
тип облака Azure Выберите тип облака Azure сервера Базы данных Azure для PostgreSQL Да
servicePrincipalEmbeddedCert (встроенный сертификат для главного объекта службы) Файл сертификата служебного аккаунта Да
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

Следующие свойства поддерживаются для связанной службы Базы данных Azure для PostgreSQL при применении версии 1.0.

Свойство Описание: Обязательное поле
тип Для свойства type необходимо задать значение AzurePostgreSql. Да
версия Версия, которую вы указали. Значение равно 1.0. Да
connectionString Строка подключения Npgsql для подключения к Базе данных Azure для PostgreSQL.
Вы можете также поместить пароль в Azure Key Vault и извлечь конфигурацию password из строки подключения. Для получения более подробной информации см. приведенные ниже примеры и статью Хранение учетных данных в Azure Key Vault.
Да
connectVia Это свойство представляет среду integration runtime, используемую для подключения к хранилищу данных. Вы можете использовать среду выполнения интеграции 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 (метод шифрования = 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 для PostgreSQL.

Чтобы скопировать данные из базы данных Azure для PostgreSQL, задайте для свойства type набора данных значение AzurePostgreSqlTable. Поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
тип Свойство типа набора данных должно иметь значение 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 для PostgreSQL.

База данных Azure для PostgreSQL в качестве источника

Чтобы скопировать данные из базы данных Azure для PostgreSQL, задайте для типа источника в действии копирования значение AzurePostgreSqlSource. В разделе действия копирования source поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
тип Свойство type источника действия копирования должно иметь значение AzurePostgreSqlSource Да
запрос Используйте пользовательский SQL-запрос для чтения данных. Пример: SELECT * FROM mytable или SELECT * FROM "MyTable". Обратите внимание, что в PostgreSQL регистр в названии сущности не учитывается, если оно не заключено в кавычки. Нет (если в наборе данных задано свойство tableName)
queryTimeout Время ожидания перед завершением попытки выполнения команды и создания ошибки по умолчанию составляет 120 минут. Если для этого свойства задан параметр, допустимые значения имеют интервал времени, например "02:00:00" (120 минут). Дополнительные сведения см. в разделе CommandTimeout. Нет
параметры разделов Задает параметры секционирования данных, используемые для загрузки данных из Базы данных SQL Microsoft Azure.
Допустимые значения: Нет (по умолчанию), PhysicalPartitionsOfTable и DynamicRange.
Если параметр секционирования включен (то есть, не равен None), степень одновременной загрузки данных из базы данных Microsoft Azure SQL управляется параметром parallelCopies в действии копирования.
Нет
настройки раздела Позволяет указать группу параметров для секционирования данных.
Применяется, если параметр секционирования имеет значение, отличное от None.
Нет
В разделе partitionSettings:
partitionNames Список физических секций, которые необходимо скопировать.
Применяется, если параметр секции имеет значение PhysicalPartitionsOfTable. Если для получения исходных данных используется запрос, подключите ?AdfTabularPartitionName в предложении WHERE. Пример см. в разделе Параллельное копирование из Базы данных Azure для PostgreSQL.
Нет
partitionColumnName Укажите имя исходного столбца в виде целого числа или типа date/datetime (int, smallint, bigint, date, timestamp without time zone, timestamp with time zone или time without time zone), которое будет использоваться для секционирования по диапазонам при параллельном копировании. Если значение не указано, автоматически определяется первичный ключ таблицы, который используется в качестве столбца секционирования.
Применяется, если параметр секции имеет значение DynamicRange. Если для получения исходных данных используется запрос, подключите ?AdfRangePartitionColumnName в предложении WHERE. Пример см. в разделе Параллельное копирование из Базы данных Azure для PostgreSQL.
Нет
верхняя граница раздела Максимальное значение столбца секционирования для выгрузки данных.
Применяется, если параметр секции имеет значение DynamicRange. Если для получения исходных данных используется запрос, подключите ?AdfRangePartitionUpbound в предложении WHERE. Пример см. в разделе Параллельное копирование из Базы данных Azure для PostgreSQL.
Нет
partitionLowerBound Минимальное значение столбца секционирования для копирования данных из системы.
Применяется, если параметр секции имеет значение DynamicRange. Если для получения исходных данных используется запрос, подключите ?AdfRangePartitionLowbound в предложении WHERE. Пример см. в разделе Параллельное копирование из Базы данных Azure для 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 для PostgreSQL в качестве приемника

Для копирования данных в Базу данных Azure для PostgreSQL можно использовать следующие свойства, поддерживаемые в разделе sink для действия копирования:

Свойство Описание: Обязательное поле
тип Свойство type приемника действия Copy должно иметь значение AzurePostgreSQLSink. Да
PreCopyScript Укажите SQL-запрос для выполнения операции копирования перед записью данных в базу данных Azure PostgreSQL при каждом запуске. Это свойство можно использовать для очистки предварительно загруженных данных. Нет
writeMethod Метод, используемый для записи данных в базу данных Azure для PostgreSQL.
Допустимые значения: CopyCommand (используется по умолчанию; это вариант с максимальной производительностью), BulkInsert.
Нет
writeBatchSize Число строк, загруженных в базу данных Azure для PostgreSQL, на пакет.
Допустимо целочисленное значение, представляющее количество строк.
Нет (значение по умолчанию — 1 000 000)
writeBatchTimeout Время ожидания завершения операции пакетной вставки перед истечением срока ожидания.
Допустимые значения — строки временных интервалов. Например, 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 для PostgreSQL

Соединитель Базы данных Azure для PostgreSQL при выполнении копирования данных производит встроенное секционирование для параллельного копирования данных. Параметры секционирования данных можно найти на вкладке Источник действия Copy.

Снимок экрана с параметрами секционирования

Если включено копирование с секционированием, действие Copy выполняет параллельные запросы к источнику Базы данных Azure для PostgreSQL для загрузки данных по секциям. Степень параллелизма определяется с помощью параметра parallelCopies для действия копирования. Например, если parallelCopies имеет значение 4, служба будет создавать и выполнять четыре запроса с учетом указанного способа и параметров секционирования, где каждый запрос извлекает часть данных из Базы данных Azure для PostgreSQL.

Рекомендуется включить параллельное копирование с секционированием данных, особенно при загрузке большого объема данных из Базы данных Azure для PostgreSQL. Ниже приведены рекомендуемые конфигурации для разных сценариев. Если данные копируются в файловое хранилище данных, то рекомендуется сохранять данные в папку несколькими файлами (указывая только имя папки), так как производительность в таком случае будет выше, чем при записи в один файл.

Сценарий Предлагаемые параметры
Полная загрузка из большой таблицы с физическими разделами. Параметр секционирования. Физические секции таблицы.

Во время выполнения служба автоматически определяет физические секции и копирует данные по секциям.
Полная загрузка из большой таблицы без физических секций, когда таблица содержит столбец целочисленного типа для секционирования данных. Параметры разделения: Динамическое разделение диапазона.
Столбец секционирования: укажите столбец, используемый для секционирования данных. Если значение не указано, то по умолчанию используется столбец с первичным ключом.
Загрузка большого объема данных с помощью пользовательского запроса с физическими секциями. Параметр секционирования. Физические секции таблицы.
Запрос: SELECT * FROM ?AdfTabularPartitionName WHERE <your_additional_where_clause>.
Имя секции: укажите имена секций, из которых следует копировать данные. Если не указано, служба автоматически обнаруживает физические секции в таблице, указанной в наборе данных PostgreSQL.

Во время выполнения служба данных заменяет ?AdfTabularPartitionName фактическим именем секции и отправляет данные в Базу данных Azure для PostgreSQL.
Загрузка большого объема данных пользовательским запросом без использования физических секций, однако с использованием столбца целочисленного типа для секционирования данных. Параметры разделения: Динамическое разделение диапазона.
Запрос: SELECT * FROM ?AdfTabularPartitionName WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
Столбец секционирования: укажите столбец, используемый для секционирования данных. Секционирование можно выполнять по столбцу с целочисленным типом данных или типом date/datetime.
Верхняя граница секции и Нижняя граница секции: укажите эти значения, если нужно добавить фильтрацию по столбцу секционирования, чтобы получить данные только в пределах между нижним и верхним значениями.

Во время выполнения служба заменяет ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound и ?AdfRangePartitionLowbound фактическим именем столбца и диапазонами значений для каждой секции, а затем отправляет их в Базу данных Azure для PostgreSQL.
Например, если указан столбец секционирования ID с нижней границей 1 и верхней границей 80 при этом для параллельного копирования указано значение 4, служба будет извлекать данные по 4 секциям. Для них будут применены следующие диапазоны значений идентификаторов: [1, 20], [21, 40], [41, 60] и [61, 80].

Ниже приведены рекомендации по загрузке данных с параметром секционирования.

  1. Чтобы избежать неравномерного распределения данных, выбирайте в качестве столбца секционирования отличительный столбец (например, первичный ключ или уникальный ключ).
  2. Если таблица имеет встроенную секцию, используйте параметр секционирования "Физические секции таблицы" для повышения производительности.
  3. Если для копирования данных используется Azure Integration Runtime, то в параметре Единицы интеграции данных (DIU) можно задать большее значение (>4), чтобы задействовать больше вычислительных ресурсов. Ознакомьтесь со сценариями использования этого механизма.
  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>"
    }
}

Сопоставление свойств потока данных

При преобразовании данных в потоке данных для сопоставления можно выполнять операции чтения и записи в таблицах из Базы данных Azure для PostgreSQL. Дополнительные сведения см. в описаниях преобразования источника и преобразования приемника в разделе, посвященном потокам данных для сопоставления. Можно выбрать использование набора данных Базы данных Azure для PostgreSQL или встроенного набора данных в качестве типа источника и приемника.

Преобразование источника

В таблице ниже перечислены свойства, поддерживаемые источником Базы данных Azure для PostgreSQL. Изменить эти свойства можно на вкладке Source options (Параметры источника).

Имя Описание: Обязательное поле Допустимые значения Свойство скрипта для потока данных
Таблица Если выбрать таблицу в качестве входных данных, поток данных извлекает все данные из таблицы, указанной в наборе данных. Нет - (только для встроенного набора данных)
имя_таблицы
Запрос При выборе запроса в качестве входных данных укажите SQL-запрос для выборки данных из источника, переопределяющий любую таблицу, указанную в наборе данных. Использование запросов — отличный способ сокращения количества строк для тестирования или поиска.

Предложение Order By не поддерживается, но можно задать полную инструкцию SELECT FROM. Кроме того, можно использовать табличные функции, определяемые пользователем. select * from udfGetData() — пользовательская функция в SQL, возвращает таблицу для использования в потоке данных.
Пример запроса: select * from mytable where customerId > 1000 and customerId < 2000 или select * from "MyTable". Обратите внимание, что в PostgreSQL регистр в названии сущности не учитывается, если оно не заключено в кавычки.
Нет Строка запрос
Имя схемы Если в качестве типа входных данных выбран "Хранимая процедура", укажите имя схемы для хранимой процедуры или щелкните "Обновить", чтобы служба выполнила обнаружение имен схем. Нет Строка ИмяСхемы
Хранимая процедура Если для входных данных выбран тип "Хранимая процедура", укажите имя хранимой процедуры для чтения данных из исходной таблицы или нажмите кнопку "Обновить", чтобы служба выполнила обнаружение имен процедур. Да (при выборе типа входных данных "Хранимая процедура") Строка названиеПроцедуры
Параметры процедуры Если для входных данных выбран тип "Хранимая процедура", укажите входные параметры для хранимой процедуры в том порядке, в котором они заданы в используемой процедуре, или щелкните "Импорт", чтобы импортировать все параметры процедуры в формате @paraName. Нет Массив входные данные
Размер пакета Укажите размер пакета для разделения больших наборов данных на пакеты. Нет Целое размер партии
Уровень изоляции Выберите один из следующих уровней изоляции:
- Read Committed (чтение зафиксированных данных)
- Чтение без фиксации (по умолчанию)
- Повторяемое чтение
- Serializable (сериализуемый)
- Нет (игнорировать уровень изоляции)
Нет УРОВЕНЬ_ИЗОЛЯЦИИ_ЧТЕНИЕ_ПОДТВЕРЖДЕНО
READ_UNCOMMITTED (чтение непроверенных данных)
Повторяющееся чтение
Сериализуемый
NONE
Уровень изоляции

Пример сценария исходных данных для Azure Database for PostgreSQL

При использовании Базы данных Azure для PostgreSQL в качестве типа источника связанным сценарием потока данных будет:

source(allowSchemaDrift: true,
    validateSchema: false,
    isolationLevel: 'READ_UNCOMMITTED',
    query: 'select * from mytable',
    format: 'query') ~> AzurePostgreSQLSource

Преобразование приемника

В таблице ниже перечислены свойства, поддерживаемые приемником Базы данных Azure для PostgreSQL. Вы можете изменить эти свойства на вкладке Параметры приемника.

Имя Описание: Обязательное поле Допустимые значения Свойство скрипта потока данных
Метод обновления Укажите, какие операции разрешены в целевой базе данных. По умолчанию разрешены только операции вставки.
Для обновления, обновления или вставки (upsert) либо удаления строк требуется преобразование Alter row, которое помечает строки для этих действий.
Да true или false удаляемый
Вставляемый
обновляемый
подлежит апдейту или добавлению
Ключевые столбцы Для выполнения обновлений, вставок или удалений (updates, upserts, deletes) должны быть установлены ключевые столбцы для определения изменяемой строки.
Имя столбца, которое вы выберете в качестве ключа, будет использоваться в качестве части последующих операций обновления, вставки (upsert) и удаления. Поэтому необходимо выбрать столбец, существующий в сопоставлении приемных данных.
Нет Массив ключи
Пропустить запись ключевых столбцов Если вы не хотите записывать значение в ключевой столбец, выберите "Skip writing key columns" (Пропустить запись ключевых столбцов). Нет true или false skipKeyWrites
Действие таблицы Определяет, следует ли повторно создавать или удалять все строки в целевой таблице перед записью.
- Нет: никакие действия с таблицей не будут выполнены.
- Создать повторно: таблица будет удалена и создана повторно. Это действие необходимо, если новая таблица создается динамически.
- Удалить: все строки из целевой таблицы будут удалены.
Нет true или false воссоздать
усечь
Размер пакета Укажите, сколько строк записывается в каждый пакет. Более крупные размеры пакетов улучшают сжатие и оптимизацию памяти, но при кэшировании данных возникает риск нехватки памяти. Нет целое число размер партии
Выбрать схему базы данных пользователя По умолчанию в схеме приемника будет создана временная таблица для промежуточного этапа. Кроме того, можно отменить выбор параметра Использовать схему приемника и вместо этого указать имя схемы, с которым Фабрика данных создаст промежуточную таблицу для загрузки вышестоящих данных и автоматической их очистки после завершения. Убедитесь, что у вас есть разрешение на создание таблицы в базе данных и разрешение на изменение для схемы. Нет Строка stagingSchemaName
SQL-скрипты предобработки и постобработки Укажите многострочные скрипты SQL, которые будут выполняться до (предобработка) и после (постобработка) записи данных в базу данных-приемник. Нет Строка preSQLs
postSQLs

Совет

  1. Рекомендуется разбивать пакетные скрипты с несколькими командами на несколько пакетов.
  2. В качестве части пакета могут выполняться только инструкции языка описания данных DDL и языка обработки данных DML, возвращающие простой счетчик обновлений. Узнайте больше о выполнении пакетных операций.
  • Включить добавочное извлечение. Используйте этот параметр, чтобы ADF обрабатывала только строки, которые изменились с момента последнего выполнения конвейера.

  • Добавочный столбец. При использовании функции добавочного извлечения необходимо выбрать дату и время или числовый столбец, который вы хотите использовать в качестве подложки в исходной таблице.

  • Начать чтение с самого начала: При установке этого параметра вместе с инкрементальным извлечением ADF будет считывать все строки при первом запуске конвейера с включенным инкрементальным извлечением.

Пример сценария приемника Базы данных Azure для PostgreSQL

Сценарий потока данных, связанный с использованием базы данных Azure для PostgreSQL в качестве типа приемника, будет следующим:

IncomingStream sink(allowSchemaDrift: true,
    validateSchema: false,
    deletable:false,
    insertable:true,
    updateable:true,
    upsertable:true,
    keys:['keyColumn'],
    format: 'table',
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> AzurePostgreSQLSink

Свойства операции поиска данных

Дополнительные сведения о свойствах см. в статье об действии поиска.

Обновление коннектора базы данных Azure для PostgreSQL

На странице "Изменить связанную службу " выберите 2.0 в разделе "Версия " и настройте связанную службу, указав свойства связанной службы версии 2.0.

Список хранилищ данных, поддерживаемых в рамках функции копирования в качестве источников и приемников, см. в разделе Поддерживаемые хранилища данных.