Копирование данных из таблицы SAP и обратно с помощью Фабрики данных Azure или Azure Synapse Analytics
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье описывается, как с помощью действия копирования в Фабрике данных Azure и конвейерах Azure Synapse Analytics копировать данные из таблицы SAP. Дополнительные сведения см. в статье Общие сведения о действии копирования.
Совет
Сведения об общей поддержке сценария интеграции данных SAP см. в технической документации по интеграции данных SAP с помощью фабрики данных Azure, где приводятся подробная информация, сравнение и рекомендации для каждого соединителя SAP.
Поддерживаемые возможности
Соединитель таблиц SAP поддерживает следующие возможности:
Поддерживаемые возможности | IR |
---|---|
Действие копирования (источник/-) | (2) |
Действие поиска | (2) |
① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции
Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия копирования, приведен в таблице Поддерживаемые хранилища данных.
В частности, данный соединитель таблиц SAP поддерживает:
Копирование данных из таблицы SAP в:
- SAP ERP Central Component (SAP ECC) версии 7.01 или более поздней (в последнем стеке пакетов поддержки SAP, выпущенном после 2015 г.).
- SAP Business Warehouse (SAP BW) версии 7.01 или более поздней (в последнем стеке пакетов поддержки SAP, выпущенном после 2015 г.).
- SAP S/4HANA.
- Другие продукты SAP Business Suite версии 7.01 или более поздней (в последнем стеке пакетов поддержки SAP, выпущенном после 2015 г.).
Копирование данных из прозрачной таблицы SAP, таблицы из пула, кластеризованной таблицы и представления.
Копирование данных с использованием обычной проверки подлинности или защищенного сетевого подключения (SNC), если установлен SNC.
Подключение к серверу приложений SAP или серверу сообщений SAP.
Извлечение данных с помощью RFC — пользовательского или по умолчанию.
Версия 7.01 или более поздняя относится к версии SAP NetWeaver, а не к версии SAP ECC. Например, SAP ECC 6.0 EHP 7 обычно имеет версию NetWeaver >=7.4. Если неизвестно, какую версию имеет используемая система SAP, выполните следующие действия, чтобы выяснить это.
- С помощью графического интерфейса SAP подключитесь к системе SAP.
- Выберите Система ->Состояние.
- Проверьте выпуск SAP_BASIS, убедитесь, что он больше или равен 701.
Необходимые компоненты
Чтобы использовать данный соединитель таблиц SAP, выполните следующие действия.
Настройте локальную среду выполнения интеграции (версии 3.17 или более поздней). Дополнительные сведения см. в разделе Создание и настройка локальной среды выполнения интеграции.
Загрузите 64-разрядную версию соединителя SAP для Microsoft .NET 3.0 с веб-сайта SAP и установите ее на машине, где установлена локальная среда выполнения интеграции. Во время установки убедитесь, что в окне Необязательные шаги установки выбран параметр Установить сборки в глобальный кэш сборок.
Пользователь SAP, используемый в соединителе таблиц SAP, должен иметь следующие разрешения:
- Авторизация для использования назначений удаленного вызова функций (RFC).
- Разрешения на действие "Выполнить" для объекта авторизации S_SDSAUTH. Большинство объектов авторизации описано в примечании SAP 460089. Некоторые RFC являются обязательными для базового соединителя NCo, например RFC_FUNCTION_SEARCH.
Начать
Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:
- средство копирования данных;
- Портал Azure
- Пакет SDK для .NET
- Пакет SDK для Python
- Azure PowerShell
- The REST API
- шаблон Azure Resource Manager.
Создание связанной службы для таблицы SAP с помощью пользовательского интерфейса
Выполните следующие действия, чтобы создать связанную службу для таблицы SAP с помощью пользовательского интерфейса на портале Azure.
Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":
Найдите SAP и выберите соединитель таблицы SAP.
Настройте сведения о службе, проверьте подключение и создайте связанную службу.
Сведения о конфигурации соединителя
В следующих разделах содержатся сведения о свойствах, которые используются для определения сущностей, относящихся к соединителю таблицы SAP.
Свойства связанной службы
Следующие свойства поддерживаются для связанной службы SAP BW Open Hub:
Свойство | Описание: | Обязательное поле |
---|---|---|
type |
Свойство type должно иметь значение SapTable . |
Да |
server |
Имя сервера, на котором расположен экземпляр SAP. Используйте для подключения к серверу приложений SAP. |
No |
systemNumber |
Номер системы SAP. Используйте для подключения к серверу приложений SAP. Допустимые значения: двузначное десятичное число, представленное в виде строки. |
No |
messageServer |
Имя узла сервера сообщений SAP. Используйте для подключения к серверу сообщений SAP. |
No |
messageServerService |
Имя службы или номер порта сервера сообщений. Используйте для подключения к серверу сообщений SAP. |
No |
systemId |
Идентификатор системы SAP, в которой находится таблица. Используйте для подключения к серверу сообщений SAP. |
No |
logonGroup |
Группа входа для системы SAP. Используйте для подключения к серверу сообщений SAP. |
No |
clientId |
Идентификатор клиента в системе SAP. Допустимые значения: трехзначное десятичное число, представленное в виде строки. |
Да |
language |
Язык, используемый в системе SAP. Значение по умолчанию: EN . |
No |
userName |
Имя пользователя, получающего доступ к серверу SAP. | Да |
password |
Пароль пользователя. Присвойте этому полю метку типа SecureString для безопасного хранения или добавьте ссылку на секрет, хранящийся в Azure Key Vault. |
Да |
sncMode |
Индикатор активации SNC для доступа к серверу SAP, на котором расположена таблица. Используйте в том случае, если нужно использовать SNC для подключения к серверу SAP. Допустимые значения: 0 (Выкл., по умолчанию) или 1 (Вкл.). |
No |
sncMyName |
Имя SNC инициатора для доступа к серверу SAP, на котором расположена таблица. Действует, если включен sncMode . |
No |
sncPartnerName |
Имя партнера SNC для доступа к серверу SAP, на котором расположена таблица. Действует, если включен sncMode . |
No |
sncLibraryPath |
Внешняя библиотека безопасности продукта для доступа к серверу SAP, на котором расположена таблица. Действует, если включен sncMode . |
No |
sncQop |
Применяемый уровень качества защиты SNC. Действует, если включен sncMode . Допустимые значения: 1 (проверка подлинности), 2 (целостность), 3 (конфиденциальность), 8 (по умолчанию), 9 (максимум). |
No |
connectVia |
Среда выполнения интеграции, используемая для подключения к хранилищу данных. Требуется локальная среда IR, как уже говорилось в разделе Предварительные требования. | Да |
Пример 1. Подключение к серверу приложений SAP
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"server": "<server name>",
"systemNumber": "<system number>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Пример 2. Подключение к серверу сообщений SAP
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"messageServer": "<message server name>",
"messageServerService": "<service name or port>",
"systemId": "<system ID>",
"logonGroup": "<logon group>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Пример 3. Подключение с использованием SNC
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"server": "<server name>",
"systemNumber": "<system number>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
},
"sncMode": 1,
"sncMyName": "<SNC myname>",
"sncPartnerName": "<SNC partner name>",
"sncLibraryPath": "<SNC library path>",
"sncQop": "8"
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Свойства набора данных
Полный список разделов и свойств, доступных для определения наборов данных, см. в разделе Наборы данных. Следующий раздел содержит список свойств, поддерживаемых для набора данных таблицы SAP.
Для копирования данных из связанной службы SAP BW Open Hub и в нее, поддерживаются следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
type |
Свойство type должно иметь значение SapTableResource . |
Да |
tableName |
Имя таблицы SAP, из которой копируются данные. | Да |
Пример
{
"name": "SAPTableDataset",
"properties": {
"type": "SapTableResource",
"typeProperties": {
"tableName": "<SAP table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP table linked service name>",
"type": "LinkedServiceReference"
}
}
}
Свойства действия копирования
Полный список разделов и свойств, доступных для определения действий, см. в разделе Конвейеры. Следующий раздел содержит список свойств, поддерживаемых источниками-таблицами SAP.
Таблица SAP в качестве источника
Для копирования данных из таблицы SAP поддерживаются следующие свойства.
Свойство | Описание: | Обязательное поле |
---|---|---|
type |
Свойство type должно иметь значение SapTableSource . |
Да |
rowCount |
Количество строк для извлечения. | No |
rfcTableFields |
Поля (столбцы) для копирования из таблицы SAP. Например, column0, column1 . |
No |
rfcTableOptions |
Параметры для фильтрации строк в таблице SAP. Например, COLUMN0 EQ 'SOMEVALUE' . См. также таблицу операторов запросов SAP далее в этой статье. |
No |
customRfcReadTableFunctionModule |
Пользовательский модуль функции RFC, который может использоваться для чтения данных из таблицы SAP. Пользовательский модуль функции RFC поможет определить, каким образом данные извлекаются из системы SAP и возвращаются в службу. В пользовательском модуле функции должен быть реализован интерфейс (импорт, экспорт, таблицы), подобный интерфейсу /SAPDS/RFC_READ_TABLE2 , который используется службой по умолчанию. |
No |
partitionOption |
Механизм секционирования для чтения из таблицы SAP. Поддерживаются следующие варианты:
|
No |
partitionColumnName |
Имя столбца, используемого для секционирования данных. | No |
partitionUpperBound |
Максимальное значение столбца, указанного в partitionColumnName , будет использоваться для продолжения секционирования. |
No |
partitionLowerBound |
Минимальное значение столбца, указанного в partitionColumnName , будет использоваться для продолжения секционирования. (Примечание. partitionLowerBound не может иметь значение "0", если параметр секционирования имеет значение PartitionOnInt ) |
No |
maxPartitionsNumber |
Максимальное количество секций, на которые разделяются данные. Значение по умолчанию равно 1. | No |
sapDataColumnDelimiter |
Отдельный символ, который используется как разделитель, передаваемый для вызова внешней функции SAP с целью разделения выходных данных. | No |
Совет
Если таблица SAP содержит большой объем данных, например несколько миллиардов строк, используйте partitionOption
и partitionSetting
для разделения данных на более мелкие секции. В этом случае данные считываются для каждой секции, и каждый раздел данных извлекается с сервера SAP одним вызовом RFC.
Приняв в качестве примера partitionOption
в значении partitionOnInt
, количество строк в каждой из секций вычисляется по следующей формуле: (всего строк, попадающих в диапазон от partitionUpperBound
до partitionLowerBound
)/ maxPartitionsNumber
.
Чтобы секции данных загружались параллельно для ускорения копирования, степень параллелизма определяется параметром parallelCopies
действия копирования. Например, если задать для parallelCopies
значение 4, служба одновременно генерирует и запускает четыре запроса на основе указанного вами параметра и настроек раздела, и каждый запрос извлекает часть данных из таблицы SAP. Настоятельно рекомендуется делать maxPartitionsNumber
степенью значения свойства parallelCopies
. Если копирование данных выполняется в файловое хранилище данных, то также рекомендуется сохранять данные в папку несколькими файлами (указывая только имя папки). Производительность в таком случае будет выше, чем при записи в один файл.
Совет
BASXML
включен по умолчанию для этого соединителя таблиц SAP в службе.
В rfcTableOptions
можно использовать следующие стандартные операторы запросов SAP для фильтрации строк:
Operator | Description |
---|---|
EQ |
Равно |
NE |
Не равно |
LT |
Меньше |
LE |
Меньше или равно |
GT |
Больше |
GE |
Больше или равно |
IN |
Как в TABCLASS IN ('TRANSP', 'INTTAB') |
LIKE |
Как в LIKE 'Emma%' |
Пример
"activities":[
{
"name": "CopyFromSAPTable",
"type": "Copy",
"inputs": [
{
"referenceName": "<SAP table input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SapTableSource",
"partitionOption": "PartitionOnInt",
"partitionSettings": {
"partitionColumnName": "<partition column name>",
"partitionUpperBound": "2000",
"partitionLowerBound": "1",
"maxPartitionsNumber": 500
}
},
"sink": {
"type": "<sink type>"
},
"parallelCopies": 4
}
}
]
Соединение таблиц SAP
В настоящее время соединитель таблиц SAP поддерживает только одну таблицу с модулем функции по умолчанию. Чтобы соединить данные из нескольких таблиц, можно использовать свойство customRfcReadTableFunctionModule в соединителе таблицы SAP, как описано ниже.
- Напишите пользовательский модуль функции, принимающий запрос в OPTIONS и применяющий собственную логику для извлечения данных.
- В поле "Пользовательский модуль функции" введите имя модуля пользовательской функции.
- В параметре "Параметры таблицы RFC" укажите инструкцию JOIN таблицы для передачи в модуль функции в OPTIONS, например "
<TABLE1>
INNER JOIN<TABLE2>
ON COLUMN0".
Ниже приведен пример:
Совет
Можно также рассмотреть возможность объединения данных, агрегированных с помощью VIEW, которые поддерживаются соединителем таблиц SAP. Можно также попробовать извлечь связанные таблицы для подключения к Azure (например, службе хранилища Azure, Базе данных SQL Azure), а затем с помощью Потока данных выполнять их дальнейшее соединение и фильтрацию.
Создание пользовательского модуля функции
В настоящее время для таблиц SAP поддерживается свойство customRfcReadTableFunctionModule в источнике копирования, которое позволяет использовать собственную логику и обработку данных.
Ниже приведены некоторые требования для начала работы с пользовательским модулем функции.
Определение:
Экспортируйте данные в одну из следующих таблиц:
Ниже приведены иллюстрации работы соединителя таблиц SAP с настраиваемым модулем функции.
Создайте подключение к серверу SAP через SAP NCO.
Вызовите модуль настраиваемой функции с набором параметров, как показано ниже:
- QUERY_TABLE: имя таблицы, заданное в наборе данных таблицы SAP;
- Delimiter: разделитель, заданный в источнике таблицы SAP;
- ROWCOUNT/Option/Fields: счетчик строк/параметр агрегирования/поля, заданные в источнике таблицы.
Получите результат и выполните синтаксический разбор данных следующими способами:
Разберите значение в таблице Fields, чтобы получить схемы.
Получите значения из выходной таблицы, чтобы узнать, в какой таблице содержатся эти значения.
Получите значения из OUT_TABLE, выполните синтаксический разбор данных и запишите их в приемник.
Сопоставление типов данных для таблиц SAP
При копировании данных из таблицы SAP используются следующие сопоставления типов данных таблиц SAP с промежуточными типами данных в службе. Дополнительные сведения о том, как действие копирования сопоставляет исходную схему и типы данных для приемника, см. в статье Сопоставление схем в действии копирования.
Тип данных ABAP в SAP | Промежуточный тип данных службы |
---|---|
C (String) |
String |
I (Integer) |
Int32 |
F (Float) |
Double |
D (Date) |
String |
T (Time) |
String |
P (BCD Packed, Currency, Decimal, Qty) |
Decimal |
N (Numeric) |
String |
X (Binary и Raw) |
String |
Свойства действия поиска
Подробные сведения об этих свойствах см. в разделе Действие поиска.
Связанный контент
Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия Copy, приведен в таблице Поддерживаемые хранилища данных.