Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure
Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье описывается, как использовать действие копирования в конвейерах Фабрики данных 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 поддерживается для следующих возможностей.
Поддерживаемые возможности | ИНФРАКРАСНЫЙ | Управляемая частная конечная точка |
---|---|---|
Активность копирования (источник/приемник) | (1) (2) | ✓ |
Сопоставление потоков данных (источник/приемник) | 1. | ✓ |
Операция поиска | (1) (2) | ✓ |
① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции
Три действия выполняются в Azure Database for PostgreSQL Single Server, Flexible Server и Azure Cosmos DB для PostgreSQL.
Это важно
Единый сервер Базы данных Azure для PostgreSQL будет прекращен 28 марта 2025 г. Произведите миграцию на гибкий сервер до этой даты. Вы можете ознакомиться с этой статьей и часто задаваемыми вопросами о миграции.
Начало работы
Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:
- средство копирования данных;
- Портал Azure
- Пакет SDK для .NET
- Пакет SDK для Python
- Azure PowerShell
- The REST API
- шаблон Azure Resource Manager.
Создание связанной службы для базы данных Azure для PostgreSQL с помощью интерфейса
Используйте следующие шаги, чтобы создать связанную службу для базы данных Azure PostgreSQL в пользовательском интерфейсе Azure Portal.
Перейдите на вкладку "Управление" в Фабрике данных Azure или рабочей области Synapse и выберите "Связанные службы", затем щелкните "Создать".
Выполните поиск "PostgreSQL" и выберите коннектор 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>"
}
}
}
}
Проверка подлинности с помощью назначенного системой управляемого удостоверения
Фабрика данных или рабочая область Synapse может быть связана с управляемым удостоверением, назначаемое системой , которое представляет службу при проверке подлинности в других ресурсах в Azure. Это управляемое удостоверение можно использовать для аутентификации базы данных PostgreSQL в Azure. С помощью этого удостоверения назначенная рабочая область Фабрики или Synapse может обращаться к данным и копировать их из вашей базы данных или в нее.
Чтобы использовать управляемую идентичность, назначенную системой, выполните следующие шаги.
Фабрика данных или рабочая область Synapse может быть связана с управляемым удостоверением, назначенным системой. Дополнительные сведения, создание управляемого удостоверения, назначаемого системой
Данные базы данных Azure для PostgreSQL с системно назначенной управляемой идентичностью Включено.
В ресурсе Базы данных Azure для PostgreSQL в разделе "Безопасность"
Выберите аутентификацию
Выберите метод проверки подлинности только Microsoft Entra или аутентификация PostgreSQL и Microsoft Entra.
Выберите + Добавить администраторов Microsoft Entra
Добавьте системно назначаемое управляемое удостоверение для ресурса Azure Data Factory в качестве одного из администраторов Microsoft Entra
Настройка связанной службы Базы данных Azure для PostgreSQL.
Пример:
{
"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"
}
}
}
Замечание
Этот тип проверки подлинности не поддерживается в локальной среде выполнения интеграции.
Аутентификация с использованием управляемого удостоверения, назначенного пользователем
Фабрика данных или рабочая область Synapse может быть связана с управляемым удостоверением, назначаемое пользователем , которое представляет службу при проверке подлинности в других ресурсах в Azure. Это управляемое удостоверение можно использовать для аутентификации базы данных PostgreSQL в Azure. С помощью этого удостоверения назначенная рабочая область Фабрики или Synapse может обращаться к данным и копировать их из вашей базы данных или в нее.
Чтобы использовать назначаемую пользователем проверку подлинности с управляемым удостоверением, в дополнение к общим свойствам, описанным в предыдущем разделе, укажите следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
учетные данные | Укажите назначаемое пользователем управляемое удостоверение в качестве объекта учетных данных. | Да |
Кроме того, необходимо выполнить следующие действия.
Обязательно создайте ресурс управляемого удостоверения, назначаемого пользователем , на портале Azure. Дополнительные сведения см. в руководстве по управлению управляемыми удостоверениями, назначаемыми пользователем.
Назначьте пользовательское управляемое удостоверение для ресурса базы данных Azure PostgreSQL
В базе данных Azure для сервера PostgreSQL в разделе "Безопасность"
Выберите аутентификацию
Проверьте, является ли метод аутентификации только Microsoft Entra или PostgreSQL и Microsoft Entra
Выберите ссылку "Добавить администраторов Microsoft Entra" и выберите управляемое удостоверение, назначаемое пользователем
Назначьте управляемое удостоверение, назначенное пользователем вашему ресурсу Фабрики данных Azure
Настройка связанной службы Базы данных Azure для PostgreSQL.
Пример:
{
"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 для PostgreSQL | Да |
идентификаторОсновногоСервиса | Идентификатор приложения субъекта-службы | Да |
ТипУчетныхДанныхОсновногоСервиса | Выберите, является ли сертификат субъекта-службы или ключ субъекта-службы нужным методом проверки подлинности - ServicePrincipalCert: задайте для сертификата субъекта-службы сертификат субъекта-службы. - ServicePrincipalKey: задайте для проверки подлинности ключа субъекта-службы ключ субъекта-службы. |
Да |
Ключ главной службы | Значение клиентского секрета. Используется при выборе ключа субъекта-службы | Да |
тип облака Azure | Выберите тип облака Azure сервера Базы данных Azure для PostgreSQL | Да |
servicePrincipalEmbeddedCert (встроенный сертификат для главного объекта службы) | Файл сертификата служебного аккаунта | Да |
Интегрированный пароль сертификата службыPrincipal | При необходимости, пароль сертификата сервисного принципала | Нет |
Пример:
Ключ представителя службы
{
"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) |
время ожидания запроса | Время ожидания перед завершением попытки выполнения команды и создания ошибки по умолчанию составляет 120 минут. Если для этого свойства задан параметр, допустимые значения имеют интервал времени, например "02:00:00" (120 минут). Дополнительные сведения см. в разделе CommandTimeout. | Нет |
параметры разделов | Задает параметры секционирования данных, используемые для загрузки данных из Базы данных SQL Microsoft Azure. Допустимые значения: Нет (по умолчанию), PhysicalPartitionsOfTable и DynamicRange. Если параметр секционирования включен (то есть, не равен None ), степень одновременной загрузки данных из базы данных Microsoft Azure SQL управляется параметром parallelCopies в действии копирования. |
Нет |
настройки раздела | Позволяет указать группу параметров для секционирования данных. Применяется, если параметр секционирования имеет значение, отличное от None . |
Нет |
В разделе partitionSettings : |
||
имена разделов | Список физических секций, которые необходимо скопировать. Применяется, если параметр секции имеет значение PhysicalPartitionsOfTable . Если для получения исходных данных используется запрос, подключите ?AdfTabularPartitionName в предложении WHERE. Пример см. в разделе Параллельное копирование из Базы данных Azure для PostgreSQL. |
Нет |
имя столбца раздела | Укажите имя исходного столбца в виде целого числа или типа 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 приемника действия копирования должно иметь значение 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, то служба получает данные через четыре раздела. Для них будут применены следующие диапазоны значений идентификаторов: [1, 20], [21, 40], [41, 60] и [61, 80]. |
Ниже приведены рекомендации по загрузке данных с параметром секционирования.
- Чтобы избежать неравномерного распределения данных, выбирайте в качестве столбца секционирования отличительный столбец (например, первичный ключ или уникальный ключ).
- Если таблица имеет встроенную секцию, используйте параметр секционирования "Физические секции таблицы" для повышения производительности.
- Если для копирования данных используется Azure Integration Runtime, то в параметре Единицы интеграции данных (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>"
}
}
Сопоставление свойств потока данных
При преобразовании данных в потоке данных для сопоставления можно выполнять операции чтения и записи в таблицах из Базы данных 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 (чтение непроверенных данных) Повторяющееся чтение Сериализуемый НИКАКОЙ |
Уровень изоляции |
Пример сценария исходных данных для 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 |
удаляемый Вставляемый обновляемый подлежит апдейту или добавлению |
Ключевые столбцы | Для обновлений, апсёртов и удалений необходимо задать ключевые столбцы, чтобы определить, какую строку необходимо изменить. Имя столбца, выбранное в качестве ключа, используется в рамках последующих операций: обновления, вставки или обновления, и удаления. Поэтому необходимо выбрать столбец, существующий в сопоставлении приемных данных. |
Нет | Массив | ключи |
Пропустить запись ключевых столбцов | Если вы не хотите записывать значение в ключевой столбец, выберите "Skip writing key columns" (Пропустить запись ключевых столбцов). | Нет |
true или false |
skipKeyWrites |
Действие таблицы | Определяет, следует ли повторно создавать или удалять все строки из целевой таблицы перед записью. - Нет. С таблицей не производится никаких действий. - Повторное создание: таблица удаляется и воссоздается. Это действие необходимо, если новая таблица создается динамически. - Усечение: все строки из целевой таблицы удаляются. |
Нет |
true или false |
воссоздать усечь |
Размер пакета | Укажите, сколько строк записывается в каждый пакет. Более крупные размеры пакетов улучшают сжатие и оптимизацию памяти, но при кэшировании данных возникает риск нехватки памяти. | Нет | Целое | размер партии |
Выбрать схему базы данных пользователя | По умолчанию временная таблица создается в схеме приемника в качестве промежуточного этапа. Можно также снять флажок "Использовать схему приемника" и вместо этого указать имя схемы, под которой служба Data Factory создает промежуточную таблицу для загрузки данных из вышестоящего процесса и автоматической очистки их после завершения. Убедитесь, что у вас есть разрешение на создание таблицы в базе данных и разрешение на изменение для схемы. | Нет | Строка | stagingSchemaName |
SQL-скрипты предобработки и постобработки | Укажите многострочный скрипт SQL, который будет выполняться до (предварительной обработки) и после записи (после обработки) данных в базу данных Приемника. | Нет | Строка | preSQLs postSQLs |
Совет
- Разделение отдельных пакетных скриптов с несколькими командами на несколько пакетов.
- В качестве части пакета могут выполняться только инструкции языка описания данных 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.
Связанный контент
Список хранилищ данных, поддерживаемых в рамках функции копирования в качестве источников и приемников, см. в разделе Поддерживаемые хранилища данных.