Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ПРИМЕНИМО К:
Фабрика данных Azure
Azure Synapse Analytics
Совет
Data Factory в Microsoft Fabric — это следующее поколение Фабрика данных Azure с более простой архитектурой, встроенным ИИ и новыми функциями. Если вы не знакомы с интеграцией данных, начните с Fabric Data Factory. Существующие рабочие нагрузки ADF могут обновляться до Fabric для доступа к новым возможностям в области обработки и анализа данных, аналитики в режиме реального времени и отчетов.
В этой статье описывается, как использовать действие копирования в конвейерах Фабрика данных Azure или Synapse для копирования данных из Azure Synapse Analytics и использования Поток данных для преобразования данных в Azure Data Lake Storage 2-го поколения. Дополнительные сведения о Фабрика данных Azure см. в статье introductory.
Примечание.
Этот соединитель также доступен в Data Factory в Microsoft Fabric. Сведения о конфигурации и функциях Fabric см. в документации по соединителю Fabric Azure Synapse Analytics.
Поддерживаемые возможности
Этот соединитель Azure Synapse Analytics поддерживается для следующих возможностей:
| Поддерживаемые возможности | IR | Управляемая частная конечная точка |
|---|---|---|
| Копирование данных (источник/приемник) | (1) (2) | ✓ |
| Поток данных для сопоставления (источник/приемник) | (1) | ✓ |
| Операция поиска | (1) (2) | ✓ |
| Активность получения метаданных | (1) (2) | ✓ |
| Действие скрипта | (1) (2) | ✓ |
| Активность хранимой процедуры | (1) (2) | ✓ |
(1) Azure среды выполнения интеграции (2) локальная среда выполнения интеграции
Для действие Copy этот соединитель Azure Synapse Analytics поддерживает следующие функции:
- Копирование данных с помощью аутентификации SQL и аутентификации токена приложения Microsoft Entra с помощью основного пользователя службы или управляемых удостоверений для ресурсов Azure.
- извлечение данных с использованием SQL-запроса или хранимой процедуры (в качестве источника); Вы также можете выбрать параллельное копирование из источника Azure Synapse Analytics. Смотрите раздел Parallel copy from Azure Synapse Analytics для получения подробной информации.
- В дополнение к этому загружайте данные с помощью инструкции COPY, PolyBase либо массовой вставки. Для повышения производительности копирования рекомендуется использовать инструкцию COPY или PolyBase. Соединитель также поддерживает автоматическое создание целевой таблицы с параметром DISTRIBUTION = ROUND_ROBIN, если она не существует в исходной схеме.
Внимание
При копировании данных с помощью Azure Integration Runtime настройте правило брандмауэра серверного уровня, чтобы службы Azure могли получить доступ к серверу logical SQL Server. При копировании данных с помощью локальной среды выполнения интеграции настройте брандмауэр таким образом, чтобы разрешить соответствующий диапазон IP-адресов. Этот диапазон включает IP-адрес компьютера, используемый для подключения к Azure Synapse Analytics.
Начало работы
Совет
Чтобы обеспечить оптимальную производительность, используйте инструкцию PolyBase или COPY для загрузки данных в Azure Synapse Analytics. Инструкции Use PolyBase для загрузки данных в Azure Synapse Analytics и Use COPY для загрузки данных в разделы Azure Synapse Analytics содержат подробные сведения. Пошаговое руководство по сценарию использования см. в разделе Загрузка 1 ТБ в Azure Synapse Analytics за 15 минут с помощью Фабрика данных Azure.
Для выполнения действия копирования с конвейером можно использовать один из следующих средств или пакетов SDK:
- Средство копирования данных
- портал Azure
- SDK .NET
- пакет SDK Python
- Azure PowerShell
- REST API
- шаблон Azure Resource Manager
Создание связанной службы Azure Synapse Analytics с помощью пользовательского интерфейса
Выполните следующие действия, чтобы создать связанную службу Azure Synapse Analytics в пользовательском интерфейсе портала Azure.
Перейдите на вкладку "Управление" в рабочей области Фабрика данных Azure или Synapse и выберите "Связанные службы", а затем нажмите кнопку "Создать".
Найдите Synapse и выберите соединитель Azure Synapse Analytics.
Настройте сведения о службе, проверьте подключение и создайте связанную службу.
Сведения о конфигурации соединителя
В следующих разделах содержатся подробности о свойствах, которые определяют сущности конвейера Фабрики данных и конвейера Synapse, имеющие отношение к соединителю Azure Synapse Analytics.
Свойства связанной службы
Коннектор Azure Synapse Analytics Рекомендуемая версия поддерживает TLS 1.3. Обратитесь к этой section для обновления версии соединителя Azure Synapse Analytics с Legacy. Сведения о свойстве см. в соответствующих разделах.
Совет
При создании связанной службы для безсерверного пула SQL в Azure Synapse на портале Azure:
- В поле Метод выбора учетной записи выберите Ввести вручную.
- Вставьте полное доменное имя бессерверной конечной точки. Вы можете найти это на странице Обзор портала Azure для рабочей области Synapse в свойствах под разделом Конечная точка SQL без сервера. Например,
myserver-ondemand.sql-azuresynapse.net. - В поле Имя базы данных укажите имя базы данных в бессерверном пуле SQL.
Совет
Если вы столкнулись с ошибкой с кодом "UserErrorFailedToConnectToSqlServer" и сообщением, например: "Ограничение сеанса для базы данных равно XXX и достигнуто", добавьте Pooling=false в строку подключения и повторите попытку.
Рекомендуемая версия
Эти универсальные свойства поддерживаются для связанной службы Azure Synapse Analytics при выборе версии Recommended.
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| тип | Для свойства type необходимо задать значение AzureSqlDW. | Да |
| server | Имя или сетевой адрес экземпляра SQL Server, к которому требуется подключиться. | Да |
| база данных | Имя базы данных. | Да |
| тип аутентификации | Тип, используемый для проверки подлинности. Допустимые значения: SQL (по умолчанию), ServicePrincipal, SystemAssignedManagedIdentity, UserAssignedManagedIdentity. Перейдите в соответствующий раздел проверки подлинности по определенным свойствам и предварительным требованиям. | Да |
| шифрование | Указывает, требуется ли шифрование TLS для всех данных, отправляемых между клиентом и сервером. Параметры: обязательный (для true, по умолчанию)/необязательный (для false)/строгий. | Нет |
| доверятьСертификатуСервера | Укажите, будет ли канал зашифрован при обходе цепочки сертификатов для проверки доверия. | Нет |
| hostNameInCertificate | Имя узла, используемое при проверке сертификата сервера для подключения. Если он не указан, имя сервера используется для проверки сертификата. | Нет |
| connectVia | Среда выполнения интеграции, используемая для подключения к хранилищу данных. Вы можете использовать Azure Integration Runtime или локальную интеграционную среду выполнения, если хранилище данных находится в частной сети. Если он не указан, используется Azure Integration Runtime по умолчанию. | Нет |
Дополнительные свойства подключения см. в следующей таблице:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| applicationIntent | Тип рабочей нагрузки приложения при подключении к серверу. Допустимые значения — ReadOnly и ReadWrite. |
Нет |
| connectTimeout | Длина времени (в секундах) для ожидания подключения к серверу перед завершением попытки и создания ошибки. | Нет |
| connectRetryCount | Количество попыток повторного подключения после выявления сбоя из-за бездействия подключения. Значение должно быть целым числом от 0 до 255. | Нет |
| connectRetryInterval | Время (в секундах) между каждой попыткой повторного подключения после выявления сбоя бездействия подключения. Значение должно быть целым числом от 1 до 60. | Нет |
| таймаут_балансировки_нагрузки | Минимальное время (в секундах), в течение которого соединение существует в пуле соединений перед уничтожением. | Нет |
| commandTimeout | Время ожидания по умолчанию (в секундах) перед завершением попытки выполнения команды и создания ошибки. | Нет |
| интегрированнаябезопасность | Допустимые значения: true или false. При указании false укажите, указаны ли в подключении имя пользователя и пароль. При указании true указывает, используются ли текущие учетные данные учетной записи Windows для проверки подлинности. |
Нет |
| failoverPartner | Имя или адрес сервера партнера, к которому нужно подключиться, если основной сервер отключен. | Нет |
| maxPoolSize | Максимальное количество подключений, разрешенных в пуле подключений для конкретного подключения. | Нет |
| minPoolSize (минимальный размер пула) | Минимальное количество подключений, разрешенных в пуле подключений для конкретного подключения. | Нет |
| multipleActiveResultSets (множественные активные наборы результатов) | Допустимые значения: true или false. При указании trueприложение может поддерживать несколько активных результирующих наборов (MARS). При указании falseприложение должно обрабатывать или отменять все результирующие наборы из одного пакета, прежде чем он сможет выполнять любые другие пакеты в этом соединении. |
Нет |
| multiSubnetFailover | Допустимые значения: true или false. Если ваше приложение подключается к группе доступности AlwaysOn, расположенной в разных подсетях, установка этого свойства на true ускоряет обнаружение и подключение к текущему активному серверу. |
Нет |
| Размер пакета | Размер в байтах сетевых пакетов, используемых для взаимодействия с экземпляром сервера. | Нет |
| Пуллинг | Допустимые значения: true или false. При указании trueподключение будет объединяться в пул. При указании falseподключение будет явно открыто при каждом запросе подключения. |
Нет |
Проверка подлинности SQL
Чтобы использовать проверку подлинности SQL, помимо универсальных свойств, описанных в предыдущем разделе, укажите следующие свойства:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| userName | Имя пользователя, используемое для подключения к серверу. | Да |
| пароль | Пароль для имени пользователя. Пометьте это поле как SecureString для безопасного хранения. Кроме того, можно сослаться на секрет, хранящийся в Azure Key Vault. | Да |
Пример. Использование проверки подлинности SQL
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "SQL",
"userName": "<user name>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Example: пароль в Azure Key Vault
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "SQL",
"userName": "<user name>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Аутентификация субъекта-службы
Чтобы использовать проверку подлинности субъекта-службы, в дополнение к универсальным свойствам, описанным в предыдущем разделе, укажите следующие свойства:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| servicePrincipalId | Укажите идентификатора клиента приложения. | Да |
| servicePrincipalCredential | Учетные данные субъекта-службы. Укажите ключ приложения. Пометьте это поле как SecureString для безопасного хранения или для обращения к секрету, хранящемуся в Azure Key Vault. | Да |
| клиент | Укажите сведения о клиенте (доменное имя или идентификатор клиента), в котором находится приложение. Его можно получить, наведите указатель мыши в правом верхнем углу портала Azure. | Да |
| azureCloudType | Для проверки подлинности субъекта-службы укажите тип облачной среды Azure, в которой зарегистрировано приложение Microsoft Entra. Допустимые значения — AzurePublic, AzureChina, AzureUsGovernment и AzureGermany. По умолчанию используется облачная среда Фабрики данных Azure или конвейера Synapse. |
Нет |
Вам также необходимо выполнить следующие шаги:
Создайте приложение Microsoft Entra в портале Azure. Запишите имя приложения и следующие значения, которые используются для определения связанной службы:
- Идентификатор приложения
- ключ приложения.
- Идентификатор клиента
Назначьте администратора Microsoft Entra для вашего сервера в портале Azure, если вы еще этого не сделали. Администратор Microsoft Entra может быть пользователем Microsoft Entra или группой Microsoft Entra. Если вы предоставляете группе с управляемым удостоверением роль администратора, пропустите шаги 3 и 4. Администратор будет иметь полный доступ к базе данных.
Создайте пользователей встраиваемой базы данных для служебного субъекта. Подключитесь к хранилищу данных, из которого или в которое требуется скопировать данные, используя такие инструменты, как SSMS, с учетной записью Microsoft Entra, имеющей как минимум разрешение ALTER ANY USER. Выполните следующий код T-SQL:
CREATE USER [your_application_name] FROM EXTERNAL PROVIDER;Предоставьте субъекту-службе необходимые разрешения точно так же, как вы предоставляете разрешения пользователям SQL или другим пользователям. Выполните следующий код или посмотрите другие варианты здесь. Если вы хотите загружать данные с помощью PolyBase, изучите необходимые разрешения базы данных.
EXEC sp_addrolemember db_owner, [your application name];Настройте связанную службу Azure Synapse Analytics в рабочей области Фабрика данных Azure или Synapse.
Пример связанной службы, использующей аутентификацию на основе основного служебного объекта
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
"servicePrincipalId": "<service principal id>",
"servicePrincipalCredential": {
"type": "SecureString",
"value": "<application key>"
},
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Назначаемые системой управляемые удостоверения для проверки подлинности Azure ресурсов
Фабрика данных или рабочая область Synapse может быть связана с назначенным системой управляемым удостоверением для ресурсов Azure, которое представляет ресурс. Это управляемое удостоверение можно использовать для аутентификации в Azure Synapse Analytics. Используя этот идентификатор, назначенный ресурс может получить доступ к данным и скопировать их из вашего хранилища данных или в него.
Чтобы использовать назначаемую системой проверку подлинности с управляемым удостоверением, укажите общие свойства, описанные в предыдущем разделе, и выполните следующие действия.
Назначьте администратора Microsoft Entra для вашего сервера на портале Azure, если это еще не сделано. Администратор Microsoft Entra может быть пользователем Microsoft Entra или группой Microsoft Entra. Если вы предоставляете группе с управляемым удостоверением, назначаемым системой, роль администратора, пропустите шаги 3 и 4. Администратор будет иметь полный доступ к базе данных.
Создайте пользователей автономной базы данных для управляемого удостоверения, назначаемого системой. Подключитесь к хранилищу данных, из которого или в которое требуется скопировать данные, используя такие инструменты, как SSMS, с учетной записью Microsoft Entra, имеющей как минимум разрешение ALTER ANY USER. Выполните следующую инструкцию T-SQL.
CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;Предоставьте управляемому удостоверению, назначаемому системой, необходимые разрешения точно так же, как вы предоставляете разрешения пользователям SQL и другим пользователям. Выполните следующий код или посмотрите другие варианты здесь. Если вы хотите загружать данные с помощью PolyBase, изучите необходимые разрешения базы данных.
EXEC sp_addrolemember db_owner, [your_resource_name];Настройка связанной службы Azure Synapse Analytics.
Пример:
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "SystemAssignedManagedIdentity"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Аутентификация пользовательской управляемой идентичностью
Фабрика данных или рабочая область Synapse может быть связана с пользовательскими управляемыми удостоверениями, которые представляют ресурс. Это управляемое удостоверение можно использовать для аутентификации в Azure Synapse Analytics. Используя этот идентификатор, назначенный ресурс может получить доступ к данным и скопировать их из вашего хранилища данных или в него.
Чтобы использовать назначаемую пользователем проверку подлинности с управляемым удостоверением, в дополнение к общим свойствам, описанным в предыдущем разделе, укажите следующие свойства:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| учетные данные | Укажите назначаемое пользователем управляемое удостоверение в качестве объекта учетных данных. | Да |
Вам также необходимо выполнить следующие шаги:
Назначьте администратора Microsoft Entra для вашего сервера на портале Azure, если это еще не сделано. Администратор Microsoft Entra может быть пользователем Microsoft Entra или группой Microsoft Entra. Если вы предоставляете группе с управляемым удостоверением, назначаемым пользователем, роль администратора, пропустите шаг 3. Администратор будет иметь полный доступ к базе данных.
Создайте пользователей контейнерной базы данных для управляемой идентичности, назначаемой пользователем. Подключитесь к хранилищу данных, из которого или в которое требуется скопировать данные, используя такие инструменты, как SSMS, с учетной записью Microsoft Entra, имеющей как минимум разрешение ALTER ANY USER. Выполните следующую инструкцию T-SQL.
CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;Создайте одно или несколько управляемых удостоверений, назначенных пользователем, и предоставьте удостоверению, назначенному пользователем, необходимые разрешения, как обычно делаете для пользователей SQL и других. Выполните следующий код или посмотрите другие варианты здесь. Если вы хотите загружать данные с помощью PolyBase, изучите необходимые разрешения базы данных.
EXEC sp_addrolemember db_owner, [your_resource_name];Назначьте одну или несколько пользовательских управляемых идентичностей вашей фабрике данных и создайте учетные данные для каждой из них.
Настройка связанной службы Azure Synapse Analytics.
Пример
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "UserAssignedManagedIdentity",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Устаревшая версия
Эти универсальные свойства поддерживаются для связанной службы Azure Synapse Analytics при применении Legacy версии:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| тип | Для свойства type необходимо задать значение AzureSqlDW. | Да |
| connectionString | Укажите информацию, необходимую для подключения к экземпляру Azure Synapse Analytics в параметре connectionString. Пометьте это поле как SecureString для безопасного хранения. Вы также можете поместить ключ доверенного лица службы в Azure Key Vault, и если используется аутентификация SQL, извлеките конфигурацию password из строки подключения. Дополнительные сведения см. в статье Store credentials in Azure Key Vault. |
Да |
| connectVia | Среда выполнения интеграции, используемая для подключения к хранилищу данных. Вы можете использовать Azure Integration Runtime или локальную интеграционную среду выполнения, если хранилище данных находится в частной сети. Если он не указан, используется Azure Integration Runtime по умолчанию. | Нет |
Сведения о различных типах проверки подлинности см. в следующих разделах по определенным свойствам и предварительным требованиям соответственно:
- Проверка подлинности SQL для устаревшей версии
- Аутентификация учетной записи службы для устаревшей версии
- Проверка подлинности назначаемого системой управляемого удостоверения для устаревшей версии
- Аутентификация управляемой идентификации, назначаемой пользователем, для старой версии
Проверка подлинности SQL для устаревшей версии
Чтобы использовать проверку подлинности SQL, укажите универсальные свойства, описанные в предыдущем разделе.
Аутентификация служебного принципала для старой версии
Чтобы использовать проверку подлинности субъекта-службы, в дополнение к универсальным свойствам, описанным в предыдущем разделе, укажите следующие свойства:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| servicePrincipalId | Укажите идентификатора клиента приложения. | Да |
| servicePrincipalKey | Укажите ключ приложения. Пометьте это поле как SecureString, чтобы безопасно хранить его, или ссылаться на секрет, хранящийся в Azure Key Vault. | Да |
| клиент | Укажите сведения о клиенте, например доменное имя или идентификатор клиента, в котором находится приложение. Чтобы получить его, наведите указатель мыши на правый верхний угол портала Azure. | Да |
| azureCloudType | Для проверки подлинности субъекта-службы укажите тип облачной среды Azure, в которой зарегистрировано приложение Microsoft Entra. Допустимые значения: AzurePublic, AzureChina, AzureUsGovernment и AzureGermany. По умолчанию используется облачная среда Фабрики данных Azure или конвейера Synapse. |
Нет |
Кроме того, необходимо выполнить действия, описанные в аутентификации субъекта услуги, чтобы предоставить соответствующее разрешение.
Проверка подлинности назначаемого системой управляемого удостоверения для устаревшей версии
Чтобы использовать проверку подлинности управляемого удостоверения, назначаемого системой, выполните тот же шаг для рекомендуемой версии в проверке подлинности управляемого удостоверения, назначаемого системой.
Аутентификация назначаемого пользователем управляемого удостоверения для устаревшей версии
Чтобы использовать проверку подлинности управляемого удостоверения, назначенного пользователем, выполните тот же шаг для рекомендованной версии, указанный в проверке подлинности управляемого удостоверения, назначенного пользователем.
Свойства набора данных
Полный список разделов и свойств, доступных для определения наборов данных, см. в статье о наборах данных.
Для набора данных Azure Synapse Analytics поддерживаются следующие свойства:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| тип | Свойство type для набора данных должно иметь значение: AzureSqlDWTable. | Да |
| схема | Имя схемы. | "Нет" для источника, "Да" для приемника |
| таблица | Имя таблицы или представления. | "Нет" для источника, "Да" для приемника |
| tableName | Имя таблицы или представления со схемой. Это свойство поддерживается только для обеспечения обратной совместимости. Для новой рабочей нагрузки используйте schema и table. |
"Нет" для источника, "Да" для приемника |
Пример свойств набора данных
{
"name": "AzureSQLDWDataset",
"properties":
{
"type": "AzureSqlDWTable",
"linkedServiceName": {
"referenceName": "<Azure Synapse Analytics linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"typeProperties": {
"schema": "<schema_name>",
"table": "<table_name>"
}
}
}
Свойства действия копирования
Полный список разделов и свойств, используемых для определения действий, обратитесь к статье Конвейеры. В этом разделе представлен список свойств, поддерживаемых источником и приемником Azure Synapse Analytics.
Azure Synapse Analytics в качестве источника
Совет
Чтобы эффективно загружать данные из Azure Synapse Analytics с помощью секционирования данных, узнавайте больше из Параллельное копирование из Azure Synapse Analytics.
Чтобы скопировать данные из Azure Synapse Analytics, задайте для свойства type в источнике действия копирования значение SqlDWSource. В разделе source действия копирования поддерживаются следующие свойства:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| тип | Свойство type источника действия копирования должно иметь значение SqlDWSource. | Да |
| sqlReaderQuery | Используйте пользовательский SQL-запрос для чтения данных. Пример: select * from MyTable. |
Нет |
| sqlReaderStoredProcedureName | Имя хранимой процедуры, которая считывает данные из исходной таблицы. Последней инструкцией SQL должна быть инструкция SELECT в хранимой процедуре. | Нет |
| параметры хранимой процедуры | Параметры для хранимой процедуры. Допустимые значения: пары имен или значений. Имена и регистр параметров должны совпадать с именами и регистром параметров хранимой процедуры. |
Нет |
| уровень изоляции | Задает режим блокировки транзакций для источника данных SQL. Допустимые значения: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Если значение не указано, используется уровень изоляции базы данных по умолчанию. Дополнительные сведения см. в разделе system.data.isolationlevel. | Нет |
| параметры_разбиения | Задает параметры секционирования данных, используемые для загрузки данных из Azure Synapse Analytics. Допустимые значения: Нет (по умолчанию), PhysicalPartitionsOfTable и DynamicRange. Если опция разделения включена (то есть не None), степень параллелизма для параллельной загрузки данных из Azure Synapse Analytics управляется настройкой parallelCopies в действии копирования. |
Нет |
| настройки раздела | Позволяет указать группу параметров для секционирования данных. Применяется, если параметр секционирования имеет значение, отличное от None. |
Нет |
В разделе partitionSettings: |
||
| partitionColumnName | Укажите имя исходного столбца в виде целого числа или типа date/datetime (int, smallint, bigint, date, smalldatetime, datetime, datetime2 или datetimeoffset), которое будет использоваться для секционирования по диапазонам при параллельном копировании. Если значение не указано, то индекс или первичный ключ таблицы определяется автоматически и используется в качестве столбца секционирования.Применяется, если параметр секции имеет значение DynamicRange. Если для получения исходных данных используется запрос, подключите ?DfDynamicRangePartitionCondition в предложении WHERE. Пример можно найти в разделе Параллельное копирование из базы данных SQL. |
Нет |
| верхняя граница раздела | Максимальное значение столбца секционирования для разделения диапазона секционирования. Это значение используется для выбора шага секционирования, а не для фильтрации строк в таблице. Все строки в таблице или результатах запроса будут секционированы и скопированы. Если значение не указано, действие копирования автоматически определяет значение. Применяется, если параметр секции имеет значение DynamicRange. Пример можно найти в разделе Параллельное копирование из базы данных SQL. |
Нет |
| partitionLowerBound | Минимальное значение столбца секционирования для разделения диапазона секционирования. Это значение используется для выбора шага секционирования, а не для фильтрации строк в таблице. Все строки в таблице или результатах запроса будут секционированы и скопированы. Если значение не указано, действие копирования автоматически определяет значение. Применяется, если параметр секции имеет значение DynamicRange. Пример можно найти в разделе Параллельное копирование из базы данных SQL. |
Нет |
Обратите внимание на следующие моменты.
- При использовании в источнике хранимой процедуры для получения данных посмотрите, разработана ли хранимая процедура таким образом, чтобы возвращать разные схемы при передаче разных значений параметра. При импорте схемы из пользовательского интерфейса или при копировании данных в базу данных SQL путем автоматического создания таблиц может возникнуть сбой или появиться непредвиденный результат.
Пример. Использование SQL-запроса
"activities":[
{
"name": "CopyFromAzureSQLDW",
"type": "Copy",
"inputs": [
{
"referenceName": "<Azure Synapse Analytics input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlDWSource",
"sqlReaderQuery": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Пример. Использование хранимой процедуры
"activities":[
{
"name": "CopyFromAzureSQLDW",
"type": "Copy",
"inputs": [
{
"referenceName": "<Azure Synapse Analytics input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlDWSource",
"sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
"storedProcedureParameters": {
"stringData": { "value": "str3" },
"identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
Пример хранимой процедуры:
CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
@stringData varchar(20),
@identifier int
)
AS
SET NOCOUNT ON;
BEGIN
select *
from dbo.UnitTestSrcTable
where dbo.UnitTestSrcTable.stringData != stringData
and dbo.UnitTestSrcTable.identifier != identifier
END
GO
Azure Synapse Analytics в качестве приемника
конвейеры Фабрика данных Azure и Synapse поддерживают три способа загрузки данных в Azure Synapse Analytics.
- Используйте инструкцию COPY
- Использование PolyBase
- Использование массовой вставки
Наиболее быстрым и масштабируемым способом загрузки данных является использование инструкции COPY или PolyBase.
Чтобы скопировать данные в Azure Synapse Analytics, задайте тип приемника в действии копирования SqlDWSink. Следующие свойства поддерживаются в разделе действия копирования sink:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| тип | Свойство type приемника действия копирования должно иметь значение SqlDWSink. | Да |
| разрешить PolyBase | Указывает, следует ли использовать PolyBase для загрузки данных в Azure Synapse Analytics. Свойства allowCopyCommand и allowPolyBase не могут одновременно иметь значение true. Сведения об ограничениях и деталях см. в разделе Use PolyBase для загрузки данных в Azure Synapse Analytics. Допустимые значения: true и false (по умолчанию). |
№ Применяется при использовании PolyBase. |
| polyBaseSettings | Группа свойств, которые можно задать, если свойство allowPolybase имеет значение true. |
№ Применяется при использовании PolyBase. |
| командаКопированияРазрешена | Указывает, следует ли использовать инструкцию COPY для загрузки данных в Azure Synapse Analytics. Свойства allowCopyCommand и allowPolyBase не могут одновременно иметь значение true. Сведения об ограничениях и деталях см. в инструкции Use COPY для загрузки данных в Azure Synapse Analytics. Допустимые значения: true и false (по умолчанию). |
№ Применяется при использовании инструкции COPY. |
| настройки команды копирования | Группа свойств, которые можно задать, если свойство allowCopyCommand имеет значение TRUE. |
№ Применяется при использовании инструкции COPY. |
| writeBatchSize | Число строк для вставки в таблицу SQL в одном пакете. Допустимое значение: целое число (количество строк). По умолчанию эта служба динамически определяет соответствующий размер пакета в зависимости от размера строки. |
№ Применяется при использовании массовой вставки. |
| writeBatchTimeout | Время ожидания завершения операции вставки, upsert или хранимой процедуры до истечения времени отведенного на выполнение. Допустимые значения приведены для интервала времени. Например, 00:30:00 (30 минут). Если значение не указано, время ожидания по умолчанию равно "00:30:00". |
№ Применяется при использовании массовой вставки. |
| preCopyScript | Укажите SQL-запрос для выполнения действия копирования перед записью данных в Azure Synapse Analytics в каждом запуске. Это свойство используется для очистки предварительно загруженных данных. | Нет |
| настройка таблицы | Указывает, следует ли автоматически создавать таблицу приемника, если она не существует, на основе исходной схемы. Допустимые значения: none (по умолчанию), autoCreate. |
Нет |
| отключить сбор метрик | Служба собирает такие метрики, как Azure Synapse Analytics DWUs для оптимизации производительности копирования и рекомендаций, которые вводят дополнительный доступ к главной базе данных. Если вас не устраивает такое поведение, укажите true, чтобы отключить его. |
Нет (значение по умолчанию — false) |
| максимальное количество одновременных подключений | Верхний предел одновременных подключений, установленных в хранилище данных при запуске задачи. Указывайте значение только при необходимости ограничить количество одновременных подключений. | Нет |
| WriteBehavior | Укажите поведение записи при выполнении операции копирования для загрузки данных в Azure Synapse Analytics. Допустимые значения: Insert и Upsert. По умолчанию служба использует режим Insert для загрузки данных. |
Нет |
| upsertSettings | Укажите группу параметров для режима записи. Применяется, если параметр WriteBehavior имеет значение Upsert. |
Нет |
В разделе upsertSettings: |
||
| ключи | Укажите имена столбцов для уникальной идентификации строк. Можно использовать один ключ или ряд ключей. Если значение не указано, то используется первичный ключ. | Нет |
| interimSchemaName (временноеНазваниеСхемы) | Укажите промежуточную схему для создания промежуточной таблицы. Примечание. Пользователь должен иметь разрешение на создание и удаление таблиц. По умолчанию промежуточная таблица будет использовать ту же схему, что и таблица приемника. | Нет |
Пример 1. приемник Azure Synapse Analytics
"sink": {
"type": "SqlDWSink",
"allowPolyBase": true,
"polyBaseSettings":
{
"rejectType": "percentage",
"rejectValue": 10.0,
"rejectSampleValue": 100,
"useTypeDefault": true
}
}
Пример 2. Операция Upsert с данными
"sink": {
"type": "SqlDWSink",
"writeBehavior": "Upsert",
"upsertSettings": {
"keys": [
"<column name>"
],
"interimSchemaName": "<interim schema name>"
},
}
Параллельная копия из Azure Synapse Analytics
Соединитель Azure Synapse Analytics в задании копирования обеспечивает встроенное секционирование данных для параллельного копирования данных. Параметры секционирования данных можно найти на вкладке Источник действия Copy.
При включении секционированного копирования действие копирования выполняет параллельные запросы к источнику Azure Synapse Analytics для загрузки данных по секциям. Степень параллелизма определяется с помощью параметра parallelCopies для действия копирования. Например, если установить значение parallelCopies равным четырём, служба одновременно создает и выполняет четыре запроса, исходя из указанного параметра разделения и настроек, и каждый запрос получает часть данных из Azure Synapse Analytics.
Рекомендуется включить параллельную копию с секционированием данных, особенно при загрузке большого объема данных из Azure Synapse Analytics. Ниже приведены рекомендуемые конфигурации для разных сценариев. Если данные копируются в файловое хранилище данных, то рекомендуется сохранять данные в папку несколькими файлами (указывая только имя папки), так как производительность в таком случае будет выше, чем при записи в один файл.
| Сценарий | Предлагаемые параметры |
|---|---|
| Полная загрузка из большой таблицы с физическими разделами. |
Параметр секционирования. Физические секции таблицы. Во время выполнения служба автоматически определяет физические секции и копирует данные по секциям. Чтобы проверить, имеет ли таблица физическую секцию, выполните следующий запрос. |
| Полная загрузка из большой таблицы без физических разделов, при том, что таблица содержит столбец целочисленного типа или типа даты и времени для секционирования данных. |
Варианты разделов: раздел динамического диапазона. Столбец секционирования (необязательно). Укажите столбец для секционирования данных. Если значение не указано, то используется столбец с индексом или первичным ключом. Верхняя граница секционирования и Нижняя граница секционирования (необязательно). Указывайте, если необходимо определить шаг секционирования. Эти значения не предназначены для фильтрации строк в таблице. Все строки в таблице будут секционированы и скопированы. Если значения не указаны, действие Copy автоматически определяет эти значения. К примеру, если ваш столбец раздела "Идентификатор" имеет диапазон значений от 1 до 100 и вы установили нижнюю границу как 20, а верхнюю границу как 80 с параллельным копированием как 4, служба извлекает данные по 4 разделам — идентификаторы в диапазоне <=20, [21, 50], [51, 80] и >=81 соответственно. |
| Загрузка большого объема данных с помощью пользовательского запроса без использования физических разделов, но с использованием столбца целочисленного типа или типа даты/времени для секционирования данных. |
Варианты разделов: раздел динамического диапазона. Запрос: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.Столбец секционирования: укажите столбец, используемый для секционирования данных. Верхняя граница секционирования и Нижняя граница секционирования (необязательно). Указывайте, если необходимо определить шаг секционирования. Эти значения не предназначены для фильтрации строк в таблице. Все строки в результатах запроса будут секционированы и скопированы. Если значение не указано, действие копирования автоматически определяет значение. К примеру, если ваш столбец раздела "Идентификатор" имеет диапазон значений от 1 до 100, и вы установили нижнюю границу равной 20, а верхнюю границу равной 80, с параллельным копированием равным 4, служба извлекает данные по 4 разделам — идентификаторы в диапазоне <=20, [21, 50], [51, 80] и >=81 соответственно. Ниже приведены дополнительные примеры запросов для различных сценариев. 1. Запросите всю таблицу: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition2. Запрос из таблицы с выбором столбцов и дополнительными фильтрами с условиями where. SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>3. Запрос с вложенными запросами: SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>4. Запрос с разделом в подзапросе: SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T |
Ниже приведены рекомендации по загрузке данных с параметром секционирования.
- Чтобы избежать неравномерного распределения данных, выбирайте в качестве столбца секционирования отличительный столбец (например, первичный ключ или уникальный ключ).
- Если таблица имеет встроенную секцию, используйте параметр секционирования "Физические секции таблицы" для повышения производительности.
- Если вы используете Azure Integration Runtime для копирования данных, можно задать больше "Data Integration Units (DIU)" (>4) для использования дополнительных вычислительных ресурсов. Ознакомьтесь со сценариями использования этого механизма.
- Параметр "Степень параллелизма копирования" контролирует номера секций. Если это число слишком велико, это может существенно сказаться на производительности. Рекомендуется задавать это число следующим образом: (DIU или число узлов локальной среды IR) * (от 2 до 4).
- Обратите внимание, что Azure Synapse Analytics может одновременно выполнять не более 32 запросов; установка слишком высокого значения "Степень параллелизма копирования" может привести к проблеме ограничения Synapse.
Пример. Полная загрузка из большой таблицы с физическими секциями
"source": {
"type": "SqlDWSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
Пример: запрос с секционированием по динамическому диапазону
"source": {
"type": "SqlDWSource",
"query": "SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition 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>"
}
}
Пример запроса для проверки физического раздела
SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, c.name AS ColumnName, CASE WHEN c.name IS NULL THEN 'no' ELSE 'yes' END AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.types AS y ON c.system_type_id = y.system_type_id
WHERE s.name='[your schema]' AND t.name = '[your table name]'
Если таблица имеет физический раздел, то параметр "ИмеетРаздел" будет иметь значение "да".
Использование инструкции COPY для загрузки данных в Azure Synapse Analytics
Использование инструкции COPY — это простой и гибкий способ загрузки данных в Azure Synapse Analytics с высокой пропускной способностью. Дополнительные сведения см. в статье Массовая загрузка данных с помощью инструкции COPY.
- Если ваши исходные данные находятся в Azure Blob или Azure Data Lake Storage 2-го поколения, и формат совместим с инструкцией COPY, вы можете использовать действие копирования для прямого вызова инструкции COPY, чтобы Azure Synapse Analytics извлекал данные из источника. Дополнительные сведения см. в разделе Прямое копирование с помощью инструкции COPY.
- Если хранилище и формат исходных данных изначально не поддерживаются инструкцией COPY, то можно использовать функцию промежуточного копирования с помощью инструкции COPY. Пошаговое копирование также обеспечивает лучшую пропускную способность. Он автоматически преобразует данные в формат, совместимый с инструкцией COPY, сохраняет данные в Azure хранилище BLOB-объектов, а затем вызывает инструкцию COPY для загрузки данных в Azure Synapse Analytics.
Совет
При использовании инструкции COPY с Azure Integration Runtime эффективные Data Integration Units (DIU) всегда равны 2. Настройка DIU не влияет на производительность, так как загрузка данных из хранилища осуществляется с помощью подсистемы Azure Synapse.
Прямое копирование с помощью инструкции COPY
Оператор Azure Synapse Analytics COPY напрямую поддерживает Azure Blob-хранилище и Azure Data Lake Storage 2-го поколения. Если исходные данные соответствуют критериям, описанным в этом разделе, используйте инструкцию COPY для копирования непосредственно из исходного хранилища данных в Azure Synapse Analytics. В противном случае используйте Промежуточное копирование с помощью инструкции COPY. Служба проверяет параметры и завершает выполнение действия копирования, если критерии не выполнены.
Связанная служба и формат источника могут иметь следующие типы и методы проверки подлинности.
Поддерживаемые типы хранилища данных источника Поддерживаемые форматы Поддерживаемые типы проверки подлинности источника BLOB-объект Azure Текст с разделителями Проверка подлинности ключа учетной записи, проверка подлинности с общей подписью доступа, проверка подлинности главного пользователя службы (с помощью ServicePrincipalKey), назначаемая системой проверка подлинности управляемого удостоверения Parquet Проверка подлинности с использованием ключа учетной записи, проверка подлинности с использованием подписанного общего доступа ORC Проверка подлинности с использованием ключа учетной записи, проверка подлинности с использованием подписанного общего доступа Azure Data Lake Storage 2-го поколения Текст с разделителями
Parquet
ORCПроверка подлинности ключа учетной записи, проверка подлинности субъекта-службы (с помощью ServicePrincipalKey), проверка подлинности с использованием общей подписи доступа, аутентификация управляемой удостоверенности, назначенной системой Внимание
- При использовании аутентификации с управляемым удостоверением для связанной службы хранилища, изучите необходимые конфигурации для Azure Blob и Azure Data Lake Storage 2-го поколения соответственно.
- Если ваш служба хранилища Azure настроен с конечной точкой службы VNet, необходимо использовать аутентификацию с управляемым удостоверением и включенным параметром "Разрешить доверенные службы Microsoft" на учетной записи хранения. См. раздел Влияние использования конечных точек службы VNet с хранилищем Azure.
Параметры формата следующие:
- Для Parquet: в параметре
compressionможет быть задано Без сжатия, Snappy илиGZip. - Для ORC: в параметре
compressionможет быть задано без сжатия,zlibили Snappy. - Для текста с разделителями:
- В параметре
rowDelimiterможет быть явно задан один символ или "\r\n", значение по умолчанию не поддерживается. - В параметре
nullValueможет быть оставлено значение по умолчанию или задана пустая строка (""). - В параметре
encodingNameможет быть оставлено значение по умолчанию или задано значение utf-8 или utf-16. - Параметр
escapeCharдолжен совпадать с параметромquoteCharи не быть пустым. - В параметре
skipLineCountможет быть оставлено значение по умолчанию или задано значение 0. - В параметре
compressionможет быть задано Без сжатия илиGZip.
- В параметре
- Для Parquet: в параметре
Если ваш источник — папка, параметр
recursiveв действии копирования должен быть установлен на true, аwildcardFilenameдолжен быть*или*.*.Параметры
wildcardFolderPath,wildcardFilename(кроме*и*.*),modifiedDateTimeStart,modifiedDateTimeEnd,prefix,enablePartitionDiscoveryиadditionalColumnsне указываются.
В разделе allowCopyCommand действия копирования поддерживаются следующие параметры инструкции COPY.
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| значения по умолчанию | Задает значения по умолчанию для каждого целевого столбца в Azure Synapse Analytics. Значения по умолчанию из этого свойства переопределяют ограничение DEFAULT, заданное в хранилище данных, а столбец идентификаторов не может иметь значение по умолчанию. | Нет |
| дополнительныеОпции | Дополнительные параметры, которые будут переданы инструкции Azure Synapse Analytics COPY непосредственно в предложении With в инструкции COPY. Значение необходимо заключать в кавычки для соответствия требованиям инструкции COPY. | Нет |
"activities":[
{
"name": "CopyFromAzureBlobToSQLDataWarehouseViaCOPY",
"type": "Copy",
"inputs": [
{
"referenceName": "ParquetDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "AzureSQLDWDataset",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "ParquetSource",
"storeSettings":{
"type": "AzureBlobStorageReadSettings",
"recursive": true
}
},
"sink": {
"type": "SqlDWSink",
"allowCopyCommand": true,
"copyCommandSettings": {
"defaultValues": [
{
"columnName": "col_string",
"defaultValue": "DefaultStringValue"
}
],
"additionalOptions": {
"MAXERRORS": "10000",
"DATEFORMAT": "'ymd'"
}
}
},
"enableSkipIncompatibleRow": true
}
}
]
Промежуточное копирование с помощью инструкции COPY
Если исходные данные не совместимы с инструкцией COPY, включите копирование данных с помощью промежуточного Azure BLOB-объекта или Azure Data Lake Storage 2-го поколения (невозможно Azure хранилище класса Premium). В таком случае служба автоматически преобразует данные, чтобы они соответствовали требованиям к формату данных инструкции COPY. Затем он вызывает инструкцию COPY для загрузки данных в Azure Synapse Analytics. Наконец, производится очистка временных данных из хранилища. Подробные сведения о копировании с использованием промежуточного процесса см. в разделе Промежуточное копирование.
Чтобы использовать эту функцию, создайте связанные службы Хранилище BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения с ключом учетной записи или удостоверением, управляемым системой, которые ссылаются на учетную запись хранения Azure в качестве промежуточного хранилища.
Внимание
- При использовании проверки подлинности с управляемой идентификацией для промежуточного связанного сервиса изучите необходимые конфигурации для Azure BLOB и Azure Data Lake Storage 2-го поколения соответственно. Вам также необходимо предоставить разрешения управляемому удостоверению рабочей области службы Azure Synapse Analytics в вашей промежуточной учётной записи Хранилище BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения. Чтобы узнать, как предоставить это разрешение, см. Предоставление разрешений для управляемого удостоверения рабочей области.
- Если ваш промежуточный служба хранилища Azure настроен с конечной точкой службы виртуальной сети (VNet), необходимо использовать аутентификацию с управляемыми удостоверениями, при этом в учетной записи хранения должен быть включен параметр "разрешить доступ доверенным службам Microsoft", смотрите Влияние использования конечных точек службы виртуальной сети с хранилищем Azure.
Внимание
Если ваш промежуточный служба хранилища Azure настроен с помощью управляемой частной конечной точки и включен фаервол хранилища, необходимо использовать проверку подлинности управляемого удостоверения и предоставить серверу Synapse SQL разрешения Storage Blob Data Reader, чтобы убедиться, что он может получить доступ к промежуточным файлам во время загрузки с помощью инструкции COPY.
"activities":[
{
"name": "CopyFromSQLServerToSQLDataWarehouseViaCOPYstatement",
"type": "Copy",
"inputs": [
{
"referenceName": "SQLServerDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "AzureSQLDWDataset",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlSource",
},
"sink": {
"type": "SqlDWSink",
"allowCopyCommand": true
},
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingStorage",
"type": "LinkedServiceReference"
}
}
}
}
]
Загрузка данных в Azure Synapse Analytics с помощью PolyBase
Использование PolyBase — это эффективный способ загрузки большого объема данных в Azure Synapse Analytics с высокой пропускной способностью. Используя PolyBase вместо стандартного механизма BULKINSERT, можно значительно увеличить пропускную способность.
- Если исходные данные находятся в Azure Blob или Azure Data Lake Storage 2-го поколения, и формат совместим с PolyBase, можно использовать действие копирования для непосредственного вызова PolyBase, позволяя Azure Synapse Analytics загружать данные с источника. Дополнительные сведения см. в разделе Прямое копирование с помощью PolyBase.
- Если хранилище и формат исходных данных изначально не поддерживаются PolyBase, то можно использовать функцию промежуточного копирования с помощью PolyBase. Пошаговое копирование также обеспечивает лучшую пропускную способность. Он автоматически преобразует данные в формат, совместимый с PolyBase, сохраняет данные в Azure хранилище BLOB-объектов, а затем вызывает PolyBase для загрузки данных в Azure Synapse Analytics.
Совет
Дополнительные сведения см. в разделе Рекомендации по использованию PolyBase. При использовании PolyBase с Azure Integration Runtime эффективные единицы интеграции данных Data Integration Units (DIU) для прямого подключения или поэтапной передачи данных в Synapse всегда равны 2. Настройка DIU не влияет на производительность, так как загрузка данных из хранилища осуществляется ядром Synapse.
Под polyBaseSettings в действии копирования поддерживаются следующие настройки PolyBase.
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| rejectValue | Указывает количество или процент строк, которые могут быть отклонены до того, как запрос завершится ошибкой. Дополнительные сведения о параметрах отклонения PolyBase см. в разделе "Аргументы" CREATE EXTERNAL TABLE (Transact-SQL). Допустимые значения: 0 (по умолчанию), 1, 2 и. т. д. |
Нет |
| тип_отказа | Указывает, является ли параметр rejectValue литеральным или процентным. Допустимые значения: Значение (по умолчанию) и Процент. |
Нет |
| rejectSampleValue | Определяет количество строк, которое PolyBase следует получить до повторного вычисления процента отклоненных строк. Допустимые значения: 1, 2, … |
Да, если rejectType имеет значение percentage. |
| useTypeDefault | Указывает способ обработки отсутствующих значений в текстовых файлах с разделителями, когда PolyBase извлекает данные из текстового файла. Дополнительные сведения об этом свойстве см. в разделе "Аргументы" в разделе CREATE EXTERNAL FILE FORMAT (Transact-SQL). Допустимые значения: true и false (по умолчанию). |
Нет |
Прямое копирование с помощью PolyBase
Azure Synapse Analytics PolyBase напрямую поддерживает Azure Blob и Azure Data Lake Storage 2-го поколения. Если исходные данные соответствуют критериям, описанным в этом разделе, используйте PolyBase для копирования непосредственно из исходного хранилища данных в Azure Synapse Analytics. В противном случае используйте этапное копирование с помощью PolyBase.
Совет
Чтобы эффективно копировать данные в Azure Synapse Analytics, узнайте больше о том, как Фабрика данных Azure делает процесс анализа данных более простым и удобным при использовании Озеро данных Store с Azure Synapse Analytics.
Если требования не выполняются, служба проверяет параметры и автоматически возвращается к механизму перемещения данных BULKINSERT.
Связанная служба источника имеет следующие типы и методы проверки подлинности.
Поддерживаемые типы хранилища данных источника Поддерживаемые типы проверки подлинности источника BLOB-объект Azure Аутентификация с использованием ключа учетной записи, назначенная системой аутентификация управляемого удостоверения Azure Data Lake Storage 2-го поколения Аутентификация с использованием ключа учетной записи, назначенная системой аутентификация управляемого удостоверения Внимание
- При использовании аутентификации с управляемым удостоверением для связанной службы хранилища, изучите необходимые конфигурации для Azure Blob и Azure Data Lake Storage 2-го поколения соответственно.
- Если ваш служба хранилища Azure настроен с конечной точкой службы VNet, необходимо использовать аутентификацию с управляемым удостоверением и включенным параметром "Разрешить доверенные службы Microsoft" на учетной записи хранения. См. раздел Влияние использования конечных точек службы VNet с хранилищем Azure.
Формат исходных данных — Parquet, ORC или текстовый файл с разделителями со следующими конфигурациями.
- Путь к папке не содержит фильтр с подстановочными знаками.
- Имя файла пустое или указывает на единственный файл. При указании подстановочного имени файла в действии копирования оно может быть только
*или*.*. - Параметр
rowDelimiterимеет значение по умолчанию, \n, \r\n или \r. - В параметре
nullValueоставляется значение по умолчанию или задается пустая строка (""), а в параметреtreatEmptyAsNullоставляется значение по умолчанию или задается значение true. - В параметре
encodingNameоставляется значение по умолчанию или задается значение utf-8. - Параметры
quoteChar,escapeCharиskipLineCountне задаются. Поддержка PolyBase позволяет пропустить строку заголовка, которую можно настроить какfirstRowAsHeader. - Параметр
compressionможет иметь значение Без сжатия,GZipили Сжатие.
Если источником является папка, параметр
recursiveв действии копирования должен иметь значение true.Параметры
wildcardFolderPath,wildcardFilename,modifiedDateTimeStart,modifiedDateTimeEnd,prefix,enablePartitionDiscoveryиadditionalColumnsне указываются.
Примечание.
Обратите внимание, что если источником является папка, то PolyBase извлекает файлы из этой папки и всех вложенных в нее папок, но не извлекает данные из файлов, имена которых начинаются с подчеркивания (_) или точки (.) (см. описание аргумента LOCATION здесь).
"activities":[
{
"name": "CopyFromAzureBlobToSQLDataWarehouseViaPolyBase",
"type": "Copy",
"inputs": [
{
"referenceName": "ParquetDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "AzureSQLDWDataset",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "ParquetSource",
"storeSettings":{
"type": "AzureBlobStorageReadSettings",
"recursive": true
}
},
"sink": {
"type": "SqlDWSink",
"allowPolyBase": true
}
}
}
]
Поэтапное копирование с помощью PolyBase
Если исходные данные не совместимы с PolyBase, включите копирование данных через промежуточный Azure Blob или Azure Data Lake Storage 2-го поколения (не может быть Azure хранилище класса Premium). В таком случае служба автоматически преобразует данные, чтобы они соответствовали требованиям к формату данных PolyBase. Затем он вызывает PolyBase для загрузки данных в Azure Synapse Analytics. Наконец, производится очистка временных данных из хранилища. Подробные сведения о копировании с использованием промежуточного процесса см. в разделе Промежуточное копирование.
Чтобы воспользоваться этой функцией, создайте связанную службу Хранилище BLOB-объектов Azure или связанную службу Azure Data Lake Storage 2-го поколения с аутентификацией через ключ учетной записи или управляемое удостоверение, которая ссылается на учетную запись хранения Azure в качестве временного хранилища.
Внимание
- При использовании проверки подлинности с управляемой идентификацией для промежуточного связанного сервиса изучите необходимые конфигурации для Azure BLOB и Azure Data Lake Storage 2-го поколения соответственно. Вам также необходимо предоставить разрешения управляемому удостоверению рабочей области службы Azure Synapse Analytics в вашей промежуточной учётной записи Хранилище BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения. Чтобы узнать, как предоставить это разрешение, см. Предоставление разрешений для управляемого удостоверения рабочей области.
- Если ваш промежуточный служба хранилища Azure настроен с конечной точкой службы виртуальной сети (VNet), необходимо использовать аутентификацию с управляемыми удостоверениями, при этом в учетной записи хранения должен быть включен параметр "разрешить доступ доверенным службам Microsoft", смотрите Влияние использования конечных точек службы виртуальной сети с хранилищем Azure.
Внимание
Если ваш промежуточный служба хранилища Azure настроен с помощью управляемой частной конечной точки и включен брандмауэр хранилища, необходимо использовать аутентификацию с управляемым удостоверением и предоставить Серверу Synapse SQL разрешения для чтения данных хранилища Blob, чтобы обеспечить доступ к промежуточным файлам во время загрузки PolyBase.
"activities":[
{
"name": "CopyFromSQLServerToSQLDataWarehouseViaPolyBase",
"type": "Copy",
"inputs": [
{
"referenceName": "SQLServerDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "AzureSQLDWDataset",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlSource",
},
"sink": {
"type": "SqlDWSink",
"allowPolyBase": true
},
"enableStaging": true,
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingStorage",
"type": "LinkedServiceReference"
}
}
}
}
]
Советы и рекомендации по использованию PolyBase
В следующих разделах представлены лучшие практики в дополнение к тем методикам, упомянутым в Лучшие практики для Azure Synapse Analytics.
Необходимые разрешения базы данных
Чтобы использовать PolyBase, пользователь, загружающий данные в Azure Synapse Analytics, должен иметь разрешение "CONTROL в целевой базе данных. Один из способов достижения этого — добавить пользователя в качестве участника роли db_owner. Узнайте, как это сделать в Azure Synapse Analytics обзоре.
Ограничение размера строки и типа данных
Загрузки PolyBase ограничены записями размером менее 1 МБ. Нельзя использовать для загрузки в типы данных VARCHR(MAX), NVARCHAR(MAX) или VARBINARY(MAX). Дополнительные сведения см. в разделе ограничения возможностей службы Azure Synapse Analytics.
Если исходные данные имеют записи размером более 1 МБ, можно попробовать вертикально разбить исходные таблицы на несколько небольших. Убедитесь, что максимальный размер каждой строки не превышает установленный лимит. Затем небольшие таблицы можно загрузить с помощью PolyBase и объединить их в Azure Synapse Analytics.
Кроме того, для данных с такими широкими столбцами можно обойтись без использования PolyBase и загружать их, отключив параметр "allow PolyBase".
класс ресурсов Azure Synapse Analytics
Чтобы обеспечить оптимальную пропускную способность, назначьте пользователю более крупный класс ресурсов, который загружает данные в Azure Synapse Analytics через PolyBase.
Устранение неполадок c PolyBase
Загрузка в столбец с типом данных Decimal
Если ваши исходные данные хранятся в текстовом формате или в других хранилищах, несовместимых с PolyBase (используя поэтапное копирование и PolyBase), и они содержат пустое значение для загрузки в десятичный столбец в Azure Synapse Analytics, может появиться следующая ошибка:
ErrorCode=FailedDbOperation, ......HadoopSqlException: Error converting data type VARCHAR to DECIMAL.....Detailed Message=Empty string can't be converted to DECIMAL.....
Решение заключается в том, чтобы снять флажок Использовать тип по умолчанию (т. е. установить для этого параметра значение false) в разделе "Параметры PolyBase" приемника действия копирования. "USE_TYPE_DEFAULT" — собственная конфигурация PolyBase, которая указывает способ обработки отсутствующих значений в текстовых файлах с разделителями, когда PolyBase извлекает данные из текстового файла.
Проверьте свойство tableName в Azure Synapse Analytics
В следующей таблице приведены примеры того, как указать свойство tableName в наборе данных JSON. В ней показаны несколько сочетаний имен схем и таблиц.
| Схема базы данных | Имя таблицы | Свойство tableName в JSON |
|---|---|---|
| dbo | MyTable | MyTable или dbo.MyTable либо [dbo].[MyTable] |
| dbo1 | MyTable | dbo1.MyTable или [dbo1].[MyTable] |
| dbo | My.Table | [My.Table] или [dbo].[My.Table] |
| dbo1 | My.Table | [dbo1].[My.Table] |
Если вы видите следующую ошибку, это может указывать на неправильное значение свойства tableName. Правильные значения для свойства tableName в JSON см. в таблице выше.
Type=System.Data.SqlClient.SqlException,Message=Invalid object name 'stg.Account_test'.,Source=.Net SqlClient Data Provider
Столбцы со значениями по умолчанию
Сейчас для PolyBase требуется такое же количество столбцов, как и в целевой таблице. Примером может служить таблица с четырьмя столбцами, и один из них определен со значением по умолчанию. Входные данные по-прежнему должны иметь четыре столбца. Если входной набор данных будет содержать три столбца, мы получим ошибку, похожую на следующую:
All columns of the table must be specified in the INSERT BULK statement.
Значение NULL рассматривается как вариант значения по умолчанию. Если столбец допускает значение NULL, входные данные BLOB для этого столбца могут быть пустыми. Но они не могут отсутствовать во входном наборе данных. PolyBase вставляет значение NULL для отсутствующих значений в Azure Synapse Analytics.
Ошибка доступа к внешнему файлу
Если вы получите следующую ошибку, убедитесь, что используете аутентификацию с управляемыми удостоверениями и предоставили разрешения на чтение данных Blob хранилища управляемому удостоверению рабочей области Azure Synapse.
Job failed due to reason: at Sink '[SinkName]': shaded.msdataflow.com.microsoft.sqlserver.jdbc.SQLServerException: External file access failed due to internal error: 'Error occurred while accessing HDFS: Java exception raised on call to HdfsBridge_IsDirExist. Java exception message:\r\nHdfsBridge::isDirExist
Дополнительные сведения см. в разделе Предоставление разрешений управляемому удостоверению после создания рабочей области.
Сопоставление свойств потока данных
При преобразовании данных в процессе сопоставления данных можно считывать и записывать в таблицы из Azure Synapse Analytics. Дополнительные сведения см. в описаниях преобразования источника и преобразования приемника в разделе, посвященном потокам данных для сопоставления.
Преобразование источника
Параметры, относящиеся к Azure Synapse Analytics, доступны на вкладке Source Options преобразования источника.
Входные данные. Выберите, будете ли источник указывать на таблицу (аналогично Select * from <table-name>) или вводится пользовательский SQL-запрос.
Enable Staging Настоятельно рекомендуется использовать этот параметр в рабочих нагрузках с Azure Synapse Analytics источниками. При выполнении действия потока данных data с источниками Azure Synapse Analytics из конвейера вам будет предложено указать учетную запись хранения промежуточного расположения и использовать её для загрузки данных в несколько этапов. Это самый быстрый механизм загрузки данных из Azure Synapse Analytics.
- При использовании аутентификации с управляемым удостоверением для связанной службы хранилища, изучите необходимые конфигурации для Azure Blob и Azure Data Lake Storage 2-го поколения соответственно.
- Если ваш служба хранилища Azure настроен с конечной точкой службы VNet, необходимо использовать аутентификацию с управляемым удостоверением и включенным параметром "Разрешить доверенные службы Microsoft" на учетной записи хранения. См. раздел Влияние использования конечных точек службы VNet с хранилищем Azure.
- Если вы используете безсерверный пул SQL Azure Synapse в качестве источника, включение промежуточной стадии не поддерживается.
Запрос. Если выбрать запрос в поле ввода, введите SQL-запрос для источника. Этот параметр переопределяет любую таблицу, выбранную в наборе данных. Здесь не поддерживаются предложения Order By, но можно задать полноценный оператор SELECT FROM. Кроме того, можно использовать табличные функции, определяемые пользователем. В SQL функция select * from udfGetData() является UDF и возвращает таблицу. Этот запрос создаст исходную таблицу, которую можно использовать в потоке данных. Использование запросов — также отличный способ сокращения количества строк для тестирования или поиска.
Пример SQL: Select * from MyTable where customerId > 1000 and customerId < 2000
Размер пакета: введите количество для разделения больших объемов данных на части для чтения. В потоках данных этот параметр используется для установки кэширования Spark по столбцам. Это необязательное поле. Если оно пусто, то будут использоваться параметры Spark по умолчанию.
Уровень изоляции: значение по умолчанию для источников SQL в потоке данных сопоставления — чтение без фиксации. Здесь можно изменить уровень изоляции на одно из следующих значений.
- Read Committed (чтение зафиксированных данных)
- Read Uncommitted (чтение незафиксированных данных)
- Повторяющаяся операция чтения
- Сериализуемый
- Нет — игнорировать уровень изоляции
Преобразование приемника
Параметры, относящиеся к Azure Synapse Analytics, доступны на вкладке Settings преобразования приемника.
Метод обновления. Определяет, какие операции разрешены в назначении базы данных. По умолчанию разрешены только операции вставки. Для обновления, вставки с изменением (upsert) или удаления строк требуется преобразование alter-row для пометки строк, предназначенных для этих действий. Для обновлений, вставок и удалений ключевой столбец или столбцы должны быть заданы, чтобы определить, какие строки изменять.
Действие таблицы: определяет, следует ли повторно создавать или удалять все строки из целевой таблицы перед записью.
- Нет: никаких действий с таблицей не будет предпринято.
- Создать повторно: таблица будет удалена и создана повторно. Это действие необходимо, если новая таблица создается динамически.
- Усечь: из целевой таблицы будут удалены все строки.
Включить промежуточное хранение: Это позволяет загрузку в пулы SQL Azure Synapse Analytics с помощью команды COPY и рекомендуется для большинства загрузок в Synapse. Промежуточное хранилище настраивается в действии Execute Поток данных.
- При использовании аутентификации с управляемым удостоверением для связанной службы хранилища, изучите необходимые конфигурации для Azure Blob и Azure Data Lake Storage 2-го поколения соответственно.
- Если ваш служба хранилища Azure настроен с конечной точкой службы VNet, необходимо использовать аутентификацию с управляемым удостоверением и включенным параметром "Разрешить доверенные службы Microsoft" на учетной записи хранения. См. раздел Влияние использования конечных точек службы VNet с хранилищем Azure.
Размер пакета: определяет количество строк, записываемых в каждом контейнере. Более крупные размеры пакетов улучшают сжатие и оптимизацию памяти, но при кэшировании данных возникает риск нехватки памяти.
Использовать схему приемника. По умолчанию в схеме приемника будет создана временная таблица в качестве промежуточной. Кроме того, можно отменить выбор параметра Использовать схему приемника и вместо этого указать в параметре Выбрать схему базы данных пользователя имя схемы, с которым Фабрика данных создаст промежуточную таблицу для загрузки вышестоящих данных и автоматической их очистки после завершения. Убедитесь, что у вас есть разрешение на создание таблицы в базе данных и разрешение на изменение для схемы.
Скрипты предварительной и последующей обработки SQL: введите многострочные скрипты SQL, которые будут выполняться до (предварительная обработка) и после (последующая обработка) записи данных в принимающую базу данных.
Совет
- Рекомендуется разбивать пакетные скрипты с несколькими командами на несколько пакетов.
- В качестве части пакета могут выполняться только инструкции языка описания данных DDL и языка обработки данных DML, возвращающие простой счетчик обновлений. Узнайте больше о выполнении пакетных операций.
Обработка строк с ошибками
При записи в Azure Synapse Analytics некоторые строки данных могут завершиться ошибкой из-за ограничений, заданных местом назначения. Ниже перечислены некоторые распространенные ошибки.
- Символьные или двоичные данные будут усечены в таблице.
- Не удалось вставить значение NULL в столбец.
- Ошибка преобразования значения в тип данных.
По умолчанию выполнение потока данных завершается сбоем при получении первой ошибки. Можно выбрать параметр Продолжить при возникновении ошибки, который позволяет завершить поток данных даже при возникновении ошибок в отдельных строках. Сервис предоставляет различные варианты обработки этих строк с ошибками.
Фиксация транзакции: выберите вариант записи данных — в отдельной транзакции или пакетами. При использовании отдельной транзакции производительность будет выше, однако записанные данные не будут видны другим пользователям до тех пор, пока не завершится транзакция. У пакетных транзакций производительность ниже, но они подходят для больших наборов данных.
Вывод отклоненных данных: Если включено, вы можете выводить ошибочные строки в файл CSV в Хранилище BLOB-объектов Azure или выбранное вами хранилище Azure Data Lake Storage 2-го поколения. При этом строки с ошибками будут записаны с тремя дополнительными столбцами: операции SQL, например INSERT или UPDATE, код ошибки потока данных и сообщение об ошибке в строке.
Сообщать об успешном выполнении при ошибке. Если этот параметр включен, поток данных будет помечен как успешно выполненный даже при обнаружении строк с ошибками.
Свойства операции поиска
Подробные сведения об этих свойствах см. в разделе Действие поиска.
Свойства активности GetMetadata
Подробные сведения об этих свойствах см. в статье Действие GetMetadata.
Сопоставление типов данных для Azure Synapse Analytics
При копировании данных в Azure Synapse Analytics или из Azure Synapse Analytics используются следующие сопоставления типов данных из Azure Synapse Analytics к подходящим промежуточным типам данных Фабрика данных Azure. Эти сопоставления также используются при копировании данных из Azure Synapse Analytics с помощью конвейеров Synapse, так как конвейеры также реализуют Фабрика данных Azure в Azure Synapse. Как действие копирования сопоставляет исходную схему и типы данных с приемником, см. в разделе сопоставление схем и типов данных.
Совет
Сведения о поддерживаемых типах данных Table см. в статье Azure Synapse Analytics о поддерживаемых типах данных Azure Synapse Analytics и обходных решениях для неподдерживаемых.
| тип данных Azure Synapse Analytics | Тип промежуточных данных службы Data Factory |
|---|---|
| bigint | Int64 |
| двоичный | Byte[] |
| бит | Логический |
| char | Строка, символ[] |
| Дата | ДатаВремя |
| Дата и время | ДатаВремя |
| datetime2 | ДатаВремя |
| Datetimeoffset | DateTimeOffset (датайм оффсет) |
| Десятичное число | Десятичное число |
| Атрибут FILESTREAM (varbinary(max)) | Byte[] |
| Тип с плавающей запятой | Двойной |
| Изображение | Byte[] |
| INT | Int32 |
| деньги | Десятичное число |
| nchar | Строка, символ[] |
| числовой | Десятичное число |
| nvarchar | Строка, символ[] |
| реальный | Одна |
| rowversion (версия строки) | Byte[] |
| smalldatetime | ДатаВремя |
| smallint | Int16 |
| smallmoney | Десятичное число |
| Время | TimeSpan |
| tinyint | Байт |
| уникальный идентификатор | GUID |
| varbinary | Byte[] |
| varchar | Строка, символ[] |
Обновление версии Azure Synapse Analytics
Чтобы обновить версию Azure Synapse Analytics, на странице Редактирование связанной службы выберите Рекомендуемая в разделе Версия и настройте связанную службу, указав свойства связанной службы для рекомендуемой версии.
Различия между рекомендуемой и устаревшей версией
В таблице ниже показаны различия между Azure Synapse Analytics с использованием рекомендуемой и устаревшей версии.
| Рекомендуемая версия | Устаревшая версия |
|---|---|
Поддерживать TLS 1.3 через encrypt в качестве strict. |
TLS 1.3 не поддерживается. |
Связанный контент
Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия копирования, приведен в таблице Поддерживаемые хранилища данных и форматы.