Copiar dados de uma tabela SAP usando o Azure Data Factory ou o Azure Synapse Analytics
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Gorjeta
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!
Este artigo descreve como usar a atividade de cópia nos pipelines do Azure Data Factory e do Azure Synapse Analytics para copiar dados de uma tabela SAP. Para obter mais informações, consulte Visão geral da atividade de cópia.
Gorjeta
Para saber o suporte geral no cenário de integração de dados SAP, consulte o whitepaper Integração de dados SAP usando o Azure Data Factory com introdução detalhada sobre cada conector, comparação e orientação SAP.
Capacidades suportadas
Este conector de tabela SAP é suportado para os seguintes recursos:
Capacidades suportadas | IR |
---|---|
Atividade de cópia (fonte/-) | (2) |
Atividade de Pesquisa | (2) |
(1) Tempo de execução de integração do Azure (2) Tempo de execução de integração auto-hospedado
Para obter uma lista dos armazenamentos de dados suportados como fontes ou coletores pela atividade de cópia, consulte a tabela Armazenamentos de dados suportados.
Especificamente, este conector de tabela SAP suporta:
Copiando dados de uma tabela SAP em:
- SAP ERP Central Component (SAP ECC) versão 7.01 ou posterior (em um recente SAP Support Package Stack lançado após 2015).
- SAP Business Warehouse (SAP BW) versão 7.01 ou posterior (em uma pilha recente de pacotes de suporte SAP lançada após 2015).
- SAP S/4HANA.
- Outros produtos no SAP Business Suite versão 7.01 ou posterior (em um recente SAP Support Package Stack lançado após 2015).
Copiar dados de uma tabela transparente SAP, uma tabela agrupada, uma tabela clusterizada e uma exibição.
Copiar dados usando autenticação básica ou SNC (Secure Network Communications), se o SNC estiver configurado.
Conectando-se a um servidor de aplicativos SAP ou servidor de mensagens SAP.
Recuperação de dados via RFC padrão ou personalizada.
A versão 7.01 ou posterior refere-se à versão SAP NetWeaver em vez da versão SAP ECC. Por exemplo, o SAP ECC 6.0 EHP 7 em geral tem NetWeaver versão >=7.4. Caso você não tenha certeza sobre seu ambiente, aqui estão as etapas para confirmar a versão do seu sistema SAP:
- Use SAP GUI para se conectar ao sistema SAP.
- Vá para System ->Status.
- Verifique a liberação do SAP_BASIS, verifique se ele é igual ou maior que 701.
Pré-requisitos
Para usar este conector de tabela SAP, você precisa:
Configure um tempo de execução de integração auto-hospedado (versão 3.17 ou posterior). Para obter mais informações, consulte Criar e configurar um tempo de execução de integração auto-hospedado.
Baixe o SAP Connector de 64 bits para Microsoft .NET 3.0 do site da SAP e instale-o na máquina de tempo de execução de integração auto-hospedada. Durante a instalação, certifique-se de selecionar a opção Instalar assemblies no GAC na janela Etapas de configuração opcionais.
O usuário SAP que está sendo usado no conector de tabela SAP deve ter as seguintes permissões:
- Autorização para usar destinos de RFC (Remote Function Call).
- Permissões para a atividade Execute do objeto de autorização S_SDSAUTH. Você pode consultar o SAP Note 460089 sobre os objetos de autorização da maioria. Certas RFCs são exigidas pelo conector NCo subjacente, por exemplo, RFC_FUNCTION_SEARCH.
Começar agora
Para executar a atividade Copiar com um pipeline, você pode usar uma das seguintes ferramentas ou SDKs:
- A ferramenta Copiar dados
- O portal do Azure
- O SDK do .NET
- O SDK do Python
- Azure PowerShell
- A API REST
- O modelo do Azure Resource Manager
Criar um serviço vinculado a uma tabela SAP usando a interface do usuário
Use as etapas a seguir para criar um serviço vinculado a uma tabela SAP na interface do usuário do portal do Azure.
Navegue até a guia Gerenciar em seu espaço de trabalho do Azure Data Factory ou Synapse e selecione Serviços Vinculados e clique em Novo:
Pesquise SAP e selecione o conector de tabela SAP.
Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.
Detalhes de configuração do conector
As seções a seguir fornecem detalhes sobre as propriedades que são usadas para definir as entidades específicas para o conector de tabela SAP.
Propriedades do serviço vinculado
As seguintes propriedades são suportadas para o serviço vinculado SAP BW Open Hub:
Property | Descrição | Obrigatório |
---|---|---|
type |
A type propriedade deve ser definida como SapTable . |
Sim |
server |
O nome do servidor no qual a instância SAP está localizada. Use para se conectar a um servidor de aplicativos SAP. |
Não |
systemNumber |
O número do sistema SAP. Use para se conectar a um servidor de aplicativos SAP. Valor permitido: um número decimal de dois dígitos representado como uma cadeia de caracteres. |
Não |
messageServer |
O nome do host do servidor de mensagens SAP. Use para se conectar a um servidor de mensagens SAP. |
Não |
messageServerService |
O nome do serviço ou o número da porta do servidor de mensagens. Use para se conectar a um servidor de mensagens SAP. |
Não |
systemId |
O ID do sistema SAP onde a tabela está localizada. Use para se conectar a um servidor de mensagens SAP. |
Não |
logonGroup |
O grupo de logon para o sistema SAP. Use para se conectar a um servidor de mensagens SAP. |
Não |
clientId |
O ID do cliente no sistema SAP. Valor permitido: um número decimal de três dígitos representado como uma cadeia de caracteres. |
Sim |
language |
A linguagem que o sistema SAP usa. O valor predefinido é EN . |
Não |
userName |
O nome do usuário que tem acesso ao servidor SAP. | Sim |
password |
A palavra-passe do utilizador. Marque este campo com o SecureString tipo para armazená-lo com segurança ou faça referência a um segredo armazenado no Cofre de Chaves do Azure. |
Sim |
sncMode |
O indicador de ativação SNC para acessar o servidor SAP onde a tabela está localizada. Use se quiser usar o SNC para se conectar ao servidor SAP. Os valores permitidos são 0 (off, o padrão) ou 1 (on). |
Não |
sncMyName |
O nome SNC do iniciador para acessar o servidor SAP onde a tabela está localizada. Aplica-se quando sncMode está ativado. |
Não |
sncPartnerName |
O nome SNC do parceiro de comunicação para acessar o servidor SAP onde a tabela está localizada. Aplica-se quando sncMode está ativado. |
Não |
sncLibraryPath |
A biblioteca do produto de segurança externa para acessar o servidor SAP onde a tabela está localizada. Aplica-se quando sncMode está ativado. |
Não |
sncQop |
O nível de Qualidade de Proteção SNC a aplicar. Aplica-se quando sncMode está ativado. Os valores permitidos são 1 (Autenticação), 2 (Integridade), 3 (Privacidade), 8 (Padrão), 9 (Máximo). |
Não |
connectVia |
O tempo de execução de integração a ser usado para se conectar ao armazenamento de dados. Um tempo de execução de integração auto-hospedado é necessário, conforme mencionado anteriormente em Pré-requisitos. | Sim |
Exemplo 1: Conectar-se a um servidor de aplicativos 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"
}
}
}
Exemplo 2: Conectar-se a um servidor de mensagens 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"
}
}
}
Exemplo 3: Conectar usando 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"
}
}
}
Propriedades do conjunto de dados
Para obter uma lista completa das seções e propriedades para definir conjuntos de dados, consulte Datasets. A seção a seguir fornece uma lista das propriedades suportadas pelo conjunto de dados da tabela SAP.
Para copiar dados de e para o serviço vinculado SAP BW Open Hub, as seguintes propriedades são suportadas:
Property | Descrição | Obrigatório |
---|---|---|
type |
A type propriedade deve ser definida como SapTableResource . |
Sim |
tableName |
O nome da tabela SAP da qual copiar dados. | Sim |
Exemplo
{
"name": "SAPTableDataset",
"properties": {
"type": "SapTableResource",
"typeProperties": {
"tableName": "<SAP table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP table linked service name>",
"type": "LinkedServiceReference"
}
}
}
Propriedades da atividade Copy
Para obter uma lista completa das seções e propriedades para definir atividades, consulte Pipelines. A seção a seguir fornece uma lista das propriedades suportadas pela fonte da tabela SAP.
Tabela SAP como origem
Para copiar dados de uma tabela SAP, as seguintes propriedades são suportadas:
Property | Descrição | Obrigatório |
---|---|---|
type |
A type propriedade deve ser definida como SapTableSource . |
Sim |
rowCount |
O número de linhas a serem recuperadas. | Não |
rfcTableFields |
Os campos (colunas) a serem copiados da tabela SAP. Por exemplo, column0, column1 . |
Não |
rfcTableOptions |
As opções para filtrar as linhas em uma tabela SAP. Por exemplo, COLUMN0 EQ 'SOMEVALUE' . Consulte também a tabela do operador de consulta SAP mais adiante neste artigo. |
Não |
customRfcReadTableFunctionModule |
Um módulo de função RFC personalizado que pode ser usado para ler dados de uma tabela SAP. Você pode usar um módulo de função RFC personalizado para definir como os dados são recuperados do seu sistema SAP e retornados ao serviço. O módulo de função personalizado deve ter uma interface implementada (importação, exportação, tabelas) semelhante à /SAPDS/RFC_READ_TABLE2 , que é a interface padrão usada pelo serviço. |
Não |
partitionOption |
O mecanismo de partição para ler a partir de uma tabela SAP. As opções suportadas incluem:
|
Não |
partitionColumnName |
O nome da coluna usada para particionar os dados. | Não |
partitionUpperBound |
O valor máximo da coluna especificada em partitionColumnName que será usado para continuar com o particionamento. |
Não |
partitionLowerBound |
O valor mínimo da coluna especificada em partitionColumnName que será usado para continuar com o particionamento. (Nota: partitionLowerBound não pode ser "0" quando a opção de partição é PartitionOnInt ) |
Não |
maxPartitionsNumber |
O número máximo de partições para dividir os dados. O valor predefinido é 1. | Não |
sapDataColumnDelimiter |
O único caractere usado como delimitador passou para o SAP RFC para dividir os dados de saída. | Não |
Gorjeta
Se sua tabela SAP tiver um grande volume de dados, como vários bilhões de linhas, use partitionOption
e partitionSetting
divida os dados em partições menores. Nesse caso, os dados são lidos por partição e cada partição de dados é recuperada do seu servidor SAP por meio de uma única chamada RFC.
Tomando partitionOption
como partitionOnInt
exemplo, o número de linhas em cada partição é calculado com esta fórmula: (total de linhas situadas entre partitionUpperBound
e partitionLowerBound
)/maxPartitionsNumber
.
Para carregar partições de dados em paralelo para acelerar a cópia, o grau paralelo é controlado pela parallelCopies
configuração na atividade de cópia. Por exemplo, se você definir parallelCopies
como quatro, o serviço gerará e executará simultaneamente quatro consultas com base na opção e nas configurações de partição especificadas, e cada consulta recuperará uma parte dos dados da tabela SAP. Recomendamos vivamente que faça maxPartitionsNumber
um múltiplo do valor do parallelCopies
imóvel. Ao copiar dados para o armazenamento de dados baseado em arquivo, também é recomendável gravar em uma pasta como vários arquivos (especifique apenas o nome da pasta), caso em que o desempenho é melhor do que gravar em um único arquivo.
Gorjeta
O BASXML
é ativado por padrão para este conector de tabela SAP dentro do serviço.
No rfcTableOptions
, você pode usar os seguintes operadores de consulta SAP comuns para filtrar as linhas:
Operator | Description |
---|---|
EQ |
Igual a |
NE |
Diferente de |
LT |
Menor que |
LE |
Menor que ou igual a |
GT |
Maior que |
GE |
Maior que ou igual a |
IN |
Como em TABCLASS IN ('TRANSP', 'INTTAB') |
LIKE |
Como em LIKE 'Emma%' |
Exemplo
"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
}
}
]
Junte-se a tabelas SAP
Atualmente, o conector SAP Table suporta apenas uma única tabela com o módulo de função padrão. Para obter os dados associados de várias tabelas, você pode aproveitar a propriedade customRfcReadTableFunctionModule no conector SAP Table seguindo as etapas abaixo:
- Escreva um módulo de função personalizado, que pode tomar uma consulta como OPTIONS e aplicar sua própria lógica para recuperar os dados.
- Para o "Módulo de função personalizado", insira o nome do módulo de função personalizado.
- Para as "Opções de tabela RFC", especifique a instrução table join para alimentar seu módulo de função como OPTIONS, como "
<TABLE1>
INNER JOIN<TABLE2>
ON COLUMN0".
Abaixo encontra-se um exemplo:
Gorjeta
Você também pode considerar ter os dados associados agregados no VIEW, que é suportado pelo conector SAP Table. Você também pode tentar extrair tabelas relacionadas para integrar o Azure (por exemplo, Armazenamento do Azure, Banco de Dados SQL do Azure) e, em seguida, usar o Fluxo de Dados para prosseguir com mais ingresso ou filtro.
Criar módulo de função personalizado
Para a tabela SAP, atualmente suportamos a propriedade customRfcReadTableFunctionModule na fonte de cópia, o que permite que você aproveite sua própria lógica e processe dados.
Como orientação rápida, aqui estão alguns requisitos para começar a usar o "Módulo de função personalizado":
Definição:
Exporte dados para uma das tabelas abaixo:
Abaixo estão ilustrações de como o conector de tabela SAP funciona com o módulo de função personalizado:
Construa conexão com o servidor SAP via SAP NCO.
Invoque "Módulo de função personalizado" com os parâmetros definidos abaixo:
- QUERY_TABLE: o nome da tabela definida no conjunto de dados da Tabela SAP;
- Delimitador: o delimitador definido no SAP Table Source;
- ROWCOUNT/Option/Fields: o Rowcount/Aggregated Option/Fields que você definiu na origem da tabela.
Obtenha o resultado e analise os dados das seguintes maneiras:
Analise o valor na tabela Fields para obter os esquemas.
Obtenha os valores da tabela de saída para ver qual tabela contém esses valores.
Obtenha os valores no OUT_TABLE, analise os dados e escreva-os no coletor.
Mapeamentos de tipo de dados para uma tabela SAP
Quando você copia dados de uma tabela SAP, os mapeamentos a seguir são usados dos tipos de dados da tabela SAP para os tipos de dados provisórios usados no serviço. Para saber como a atividade de cópia mapeia o esquema de origem e o tipo de dados para o coletor, consulte Mapeamentos de esquema e tipo de dados.
Tipo SAP ABAP | Tipo de dados provisórios de serviço |
---|---|
C (String) |
String |
I (Inteiro) |
Int32 |
F (Flutuar) |
Double |
D (Data) |
String |
T (Tempo) |
String |
P (BCD embalado, moeda, decimal, Qty) |
Decimal |
N (Numérico) |
String |
X (Binário e Raw) |
String |
Propriedades da atividade de pesquisa
Para saber detalhes sobre as propriedades, verifique Atividade de pesquisa.
Conteúdos relacionados
Para obter uma lista dos armazenamentos de dados suportados como fontes e coletores pela atividade de cópia, consulte Armazenamentos de dados suportados.