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


Копирование данных из таблицы SAP с помощью Azure Data Factory или Azure Synapse Analytics

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

Совет

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

В этой статье описывается, как с помощью действия копирования в Фабрике данных Azure и конвейерах Azure Synapse Analytics копировать данные из таблицы SAP. Для получения дополнительной информации см. Обзор операции копирования.

Совет

Сведения об общей поддержке сценария интеграции данных SAP см. в технической документации по интеграции данных SAP с помощью Фабрики данных Azure, где приводятся подробные сведения, сравнение и рекомендации для каждого соединителя SAP.

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

Соединитель таблиц SAP поддерживает следующие возможности:

Поддерживаемые возможности ИКР (инфракрасное излучение)
Копирование (источник/-) (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.

Дополнительные сведения о SNC см. в статье "Начало работы с SAP SNC для интеграции RFC" — блог SAP.

Версия 7.01 или более поздняя относится к версии SAP NetWeaver, а не к версии SAP ECC. Например, SAP ECC 6.0 EHP 7 обычно имеет версию NetWeaver >=7.4. Если вы не уверены в версии вашей системы SAP, выполните следующие действия, чтобы подтвердить её.

  1. С помощью графического интерфейса SAP подключитесь к системе SAP.
  2. Выберите Система ->Состояние.
  3. Проверьте версию SAP_BASIS и убедитесь, что она равна 701 или больше.
    Проверьте SAP_BASIS

Предварительные условия

Чтобы использовать данный соединитель таблиц SAP, выполните следующие действия.

  • Настройте локальную среду выполнения интеграции (версии 3.17 или более поздней). Дополнительные сведения см. в разделе Создание и настройка локальной среды выполнения интеграции.

  • Загрузите 64-разрядную версию соединителя SAP для Microsoft .NET 3.0 с веб-сайта SAP и установите ее на машине, где установлена локальная среда выполнения интеграции. Во время установки убедитесь, что в окне Необязательные шаги установки выбран параметр Установить сборки в глобальный кэш сборок.

    Установите соединитель SAP для .NET

  • Пользователь SAP, используемый в соединителе таблиц SAP, должен иметь следующие разрешения:

    • Авторизация на использование пунктов назначения удаленного вызова функций (RFC).
    • Разрешения на выполнение действия для объекта авторизации S_SDSAUTH. Большинство объектов авторизации описано в примечании SAP 460089. Некоторые RFC являются обязательными для базового соединителя NCo, например RFC_FUNCTION_SEARCH.

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

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

Создание связанной службы для таблицы SAP с помощью пользовательского интерфейса

Выполните следующие действия, чтобы создать связанную службу для таблицы SAP с помощью пользовательского интерфейса на портале Azure.

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

  2. Найдите SAP и выберите коннектор таблиц SAP.

    Снимок экрана: соединитель таблицы SAP.

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

    Снимок экрана конфигурации службы, связанной с таблицей SAP.

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

В следующих разделах содержатся сведения о свойствах, которые используются для определения сущностей, относящихся к соединителю таблицы SAP.

Свойства связанной службы

Следующие свойства поддерживаются для связанной службы SAP BW Open Hub:

Свойство Описание: Обязательное поле
type Свойство type должно иметь значение SapTable. Да
server Имя сервера, на котором расположен экземпляр SAP.
Используйте для подключения к серверу приложений SAP.
Нет
systemNumber Номер системы SAP.
Используйте для подключения к серверу приложений SAP.
Влияет на номер ПОРТА, используемый при взаимодействии с таблицей SAP.
Допустимые значения: двузначное десятичное число, представленное в виде строки.
Нет
messageServer Имя узла сервера сообщений SAP.
Используйте для подключения к серверу сообщений SAP.
Нет
messageServerService Имя службы или номер порта сервера сообщений.
Используйте для подключения к серверу сообщений SAP.
Нет
systemId Идентификатор системы SAP, в которой находится таблица.
Используйте для подключения к серверу сообщений SAP.
Нет
logonGroup Группа входа для системы SAP.
Используйте для подключения к серверу сообщений SAP.
Нет
clientId Идентификатор клиента в системе SAP.
Допустимые значения: трехзначное десятичное число, представленное в виде строки.
Да
language Язык, используемый в системе SAP.
Значение по умолчанию: EN.
Нет
userName Имя пользователя, получающего доступ к серверу SAP. Да
password Пароль пользователя. Присвойте этому полю метку типа SecureString для безопасного хранения или добавьте ссылку на секрет, хранящийся в Azure Key Vault. Да
sncMode Индикатор активации SNC для доступа к серверу SAP, на котором расположена таблица.
Используйте в том случае, если нужно использовать SNC для подключения к серверу SAP.
Допустимые значения: 0 (Выкл., по умолчанию) или 1 (Вкл.).
Нет
sncMyName Имя SNC инициатора для доступа к серверу SAP, на котором расположена таблица.
Действует, если включен sncMode.
Нет
sncPartnerName Имя SNC партнера по коммуникации для доступа к серверу SAP, на котором расположена таблица.
Действует, если включен sncMode.
Нет
sncLibraryPath Внешняя библиотека безопасности продукта для доступа к серверу SAP, на котором расположена таблица.
Действует, если включен sncMode.
Нет
sncQop Уровень качества защиты SNC, который необходимо применить.
Действует, если включен sncMode.
Допустимые значения: 1 (проверка подлинности), 2 (целостность), 3 (конфиденциальность), 8 (по умолчанию), 9 (максимум).
Нет
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Требуется среда выполнения интеграции локального размещения, как упоминалось ранее в разделе Предварительные требования. Да

Пример 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"
        }
    }
}

Дополнительные сведения о SNC см. в статье "Начало работы с SAP SNC для интеграции RFC" — блог SAP.

Свойства набора данных

Полный список разделов и свойств, доступных для определения наборов данных, см. в разделе Наборы данных. Следующий раздел содержит список свойств, поддерживаемых для набора данных таблицы 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 Количество строк для извлечения. Нет
rfcTableFields Поля (столбцы) для копирования из таблицы SAP. Например, column0, column1. Нет
rfcTableOptions Параметры для фильтрации строк в таблице SAP. Например, COLUMN0 EQ 'SOMEVALUE'. См. также таблицу операторов запросов SAP далее в этой статье. Нет
customRfcReadTableFunctionModule Настроенный функциональный модуль RFC, который можно использовать для чтения данных из таблицы SAP.
Пользовательский модуль функции RFC поможет определить, каким образом данные извлекаются из системы SAP и возвращаются в службу. В пользовательском модуле функции должен быть реализован интерфейс (импорт, экспорт, таблицы), подобный интерфейсу /SAPDS/RFC_READ_TABLE2, который используется службой по умолчанию.
Нет
partitionOption Механизм секционирования для чтения из таблицы SAP. Поддерживаются следующие варианты:
  • None
  • PartitionOnInt (обычные целые или целочисленные значения с нулевым отступом слева, например 0000012345)
  • PartitionOnCalendarYear (4 цифры в формате "ГГГГ")
  • PartitionOnCalendarMonth (6 цифр в формате "ГГГГММ")
  • PartitionOnCalendarDate (8 цифр в формате "ГГГГММДД")
  • PartitionOntime (6 цифр в формате "ЧЧММСС", например 235959)
Нет
partitionColumnName Имя столбца, используемого для секционирования данных. Нет
partitionUpperBound Максимальное значение столбца, указанного в partitionColumnName, будет использоваться для продолжения секционирования. Нет
partitionLowerBound Минимальное значение столбца, указанного в partitionColumnName, будет использоваться для продолжения секционирования. (Примечание. partitionLowerBound не может иметь значение "0", если параметр секционирования имеет значение PartitionOnInt) Нет
maxPartitionsNumber Максимальное количество секций, на которые разделяются данные. Значение по умолчанию равно 1. Нет
sapDataColumnDelimiter Символ, используемый как разделитель, передается в SAP RFC для разделения выходных данных. Нет

Совет

Если таблица SAP содержит большой объем данных, например несколько миллиардов строк, используйте partitionOption и partitionSetting для разделения данных на более мелкие секции. В этом случае данные считываются для каждой секции, и каждый раздел данных извлекается с сервера SAP одним вызовом RFC.

Приняв в качестве примера partitionOption в значении partitionOnInt, количество строк в каждой из секций вычисляется по следующей формуле: (всего строк, попадающих в диапазон от partitionUpperBound до partitionLowerBound)/ maxPartitionsNumber.

Чтобы секции данных загружались параллельно для ускорения копирования, степень параллелизма определяется параметром parallelCopies действия копирования. Например, если задать для parallelCopies значение 4, служба одновременно генерирует и запускает четыре запроса на основе указанного вами параметра и настроек раздела, и каждый запрос извлекает часть данных из таблицы SAP. Настоятельно рекомендуется делать maxPartitionsNumber степенью значения свойства parallelCopies. При копировании данных в файловое хранилище данных также рекомендуется записывать в папку в виде нескольких файлов (только указать имя папки), в этом случае производительность лучше, чем запись в один файл.

Совет

BASXML включен по умолчанию для этого соединителя таблиц SAP в службе.

В rfcTableOptions можно использовать следующие стандартные операторы запросов SAP для фильтрации строк:

Оператор Описание:
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" укажите команду объединения таблиц, которую нужно передать в модуль функции через OPTIONS, например "<TABLE1> INNER JOIN <TABLE2> ON COLUMN0".

Ниже приведен пример:

Соединение таблиц SAP

Совет

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

Создание пользовательского функционального модуля

В настоящее время для таблиц SAP поддерживается свойство customRfcReadTableFunctionModule в источнике копирования, которое позволяет использовать собственную логику и обработку данных.

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

  • Определение:

    Определение

  • Экспортируйте данные в одну из следующих таблиц:

    Таблица экспорта 1

    Таблица экспорта 2

Ниже приведены иллюстрации работы соединителя таблиц SAP с настраиваемым модулем функции.

  1. Создайте подключение к серверу SAP через SAP NCO.

  2. Вызовите модуль настраиваемой функции с набором параметров, как показано ниже:

    • QUERY_TABLE: имя таблицы, заданное в наборе данных таблицы SAP;
    • Delimiter: разделитель, который вы задали в источнике таблицы SAP;
    • ROWCOUNT/Option/Fields: счетчик строк/параметр агрегирования/поля, заданные в источнике таблицы.
  3. Получите результат и выполните синтаксический разбор данных следующими способами:

    1. Разберите значение в таблице Fields, чтобы получить схемы.

      Разобрать значения в полях.

    2. Получите значения из выходной таблицы, чтобы узнать, в какой таблице содержатся эти значения.

      Получение значений в выходной таблице

    3. Получите значения из OUT_TABLE, выполните синтаксический анализ данных и затем запишите их в накопитель.

Сопоставление типов данных для таблиц SAP

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

Тип ABAP в SAP Промежуточный служебный тип данных
C (Строка) String
I (Целое число) Int32
F (Поплавок) Double
D (Дата) String
T (Время) String
P (упакованный BCD, валюта, десятичный, количество) Decimal
N (Числовое) String
X (Бинарные и необработанные) String

Свойства действия поиска

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

Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия Copy, приведен в таблице Поддерживаемые хранилища данных.