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
Dica
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!
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, confira Visão geral da atividade de cópia.
Dica
Para saber mais sobre o suporte geral no cenário de integração de dados do SAP, confira o artigo técnico Integração de dados do SAP usando o Azure Data Factory com introdução detalhada sobre cada conector SAP, comparações e orientações.
Funcionalidades com suporte
Há suporte para este conector de tabela SAP para as seguintes funcionalidades:
Funcionalidades com suporte | IR |
---|---|
Atividade de cópia (origem/-) | ② |
Atividade de pesquisa | ② |
① Runtime de integração do Azure ② Runtime de integração auto-hospedada
Para obter a lista de armazenamentos de dados que têm suporte como fontes ou coletores da Atividade de cópia, confira a tabela Armazenamentos de dados com suporte.
Especificamente, este conector da tabela SAP dá suporte à:
Copiando dados de uma tabela SAP em:
- Componente central SAP ERP (SAP ECC) versão 7.01 ou posterior (em uma pilha recente de pacotes de suporte SAP lançada após 2015).
- SAP Business Warehouse (SAP BW) versão 7.01 ou superior (em uma Pilha de Pacote de Suporte SAP recente lançada após 2015).
- SAP S/4HANA.
- Outros produtos em SAP Business Suit versão 7.01 ou superior (em uma Pilha de Pacote de Suporte SAP recente lançada após 2015).
Copiar dados de uma tabela transparente do SAP, uma tabela em pool, uma tabela clusterizada e uma exibição.
Copiar dados usando a autenticação básica ou a SNC (comunicações de rede segura) se a SNC estiver configurada.
Conexão com um servidor de aplicativos ou um servidor de mensagens SAP.
Recuperando dados por meio da RFC padrão ou personalizada.
A versão 7.01 ou posterior refere-se à versão do SAP NetWeaver em vez da versão do SAP ECC. Por exemplo, o SAP ECC 6.0 EHP 7 em geral tem a versão do NetWeaver >= 7.4. Caso você não tenha certeza sobre o seu ambiente, aqui estão as etapas para confirmar a versão do seu sistema SAP:
- Use a GUI do SAP para se conectar ao sistema SAP.
- Acesse Sistema ->Status.
- Verifique o lançamento do SAP_BASIS, confira se ele é igual ou maior que 701.
Pré-requisitos
Para usar esse conector da tabela SAP, é necessário:
Configurar um Integration Runtime auto-hospedado (versão 3.17 ou superior). Para obter mais informações, confira Criar e configurar um runtime de integração auto-hospedada.
Baixe o Conector SAP de 64 bits para Microsoft .NET 3.0 do site da SAP e instale-o no computador do runtime de integração auto-hospedada. Durante a instalação, lembre-se de selecionar a opção Instalar Assemblies no GAC na janela Etapas de instalação opcionais.
O usuário SAP que está sendo usado no conector Tabela SAP deve ter as seguintes permissões:
- Autorização para usar destinos de chamada de função remota (RFC).
- Permissões para a atividade Executar do objeto de autorização S_SDSAUTH. É possível consultar o SAP Note 460089 na maioria dos objetos de autorização. Determinadas RFCs são exigidas pelo conector NCo subjacente, por exemplo RFC_FUNCTION_SEARCH.
Introdução
Para executar a atividade de Cópia com um pipeline, será possível usar as ferramentas ou os SDKs abaixo:
- A ferramenta Copiar Dados
- O portal do Azure
- O SDK do .NET
- O SDK do Python
- PowerShell do Azure
- A API REST
- O modelo do Azure Resource Manager
Criar um serviço vinculado para uma tabela SAP usando a interface do usuário
Use as etapas a seguir para criar um serviço vinculado para uma tabela SAP na interface do usuário do portal do Azure.
Navegue até a guia Gerenciar no workspace do Azure Data Factory ou do Synapse, selecione Serviços Vinculados e clique em Novo:
Procure SAP e selecione o conector Tabela SAP.
Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.
Detalhes da configuração do conector
As seções a seguir fornecem detalhes sobre as propriedades usadas para definir as entidades específicas ao conector Tabela SAP.
Propriedades do serviço vinculado
Há suporte para as seguintes propriedades no serviço vinculado do SAP BW Open Hub:
Propriedade | Descrição | Obrigatório |
---|---|---|
type |
A propriedade type precisa 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 de sistema 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-o 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-o para se conectar a um servidor de mensagens SAP. |
Não |
systemId |
A ID do sistema SAP em que a tabela está localizada. Use-a para se conectar a um servidor de mensagens SAP. |
Não |
logonGroup |
O grupo de logon para o sistema SAP. Use-o para se conectar a um servidor de mensagens SAP. |
Não |
clientId |
O ID de Cliente do cliente no sistema SAP. Valor permitido: Um número decimal de três dígitos representado como uma cadeia de caracteres. |
Sim |
language |
O idioma que o sistema SAP usa. O valor padrão é EN . |
Não |
userName |
O nome do usuário que tem acesso ao servidor SAP. | Sim |
password |
A senha do usuário. Marque esse campo com o tipo SecureString para armazená-lo com segurança ou referencie um segredo armazenado no Azure Key Vault. |
Sim |
sncMode |
O indicador de ativação da SNC para acessar o servidor SAP onde a tabela está localizada. Use se você 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 do SNC do iniciador para acessar o servidor SAP onde a tabela está localizada. Aplica-se quando sncMode está ativado. |
Não |
sncPartnerName |
O nome do 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 da SNC a ser aplicado. 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 runtime de integração a ser usado para se conectar ao armazenamento de dados. É necessário um Integration Runtime auto-hospedado, conforme mencionado anteriormente nos Pré-requisitos. | Sim |
Exemplo 1: Conecte 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: Conecte 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: conecte usando o 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 das propriedades para definir os conjuntos de dados, confira Conjuntos de dados. A seção a seguir fornece uma lista das propriedades compatíveis pelo conjunto de dados da tabela do SAP.
Para copiar dados de e para o SAP BW serviço vinculado de Hub aberto, há suporte para as seguintes propriedades:
Propriedade | Descrição | Obrigatório |
---|---|---|
type |
A propriedade type precisa ser definida como SapTableResource . |
Sim |
tableName |
O nome da tabela SAP para copiar os dados do formulário. | 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 de cópia
Para obter uma lista completa das seções e das propriedades para definir as atividades, confira Pipelines. A seção a seguir fornece uma lista das propriedades compatíveis pelo origem da tabela do SAP.
Tabela SAP como origem
Para copiar dados da tabela SAP, há suporte para as seguintes propriedades:
Propriedade | Descrição | Obrigatório |
---|---|---|
type |
A propriedade type precisa 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. Use um módulo de função RFC personalizado para definir como os dados são recuperados do sistema SAP e retornados para o serviço. O módulo de função personalizado precisa ter uma interface implementada (importação, exportação, tabelas) semelhante a /SAPDS/RFC_READ_TABLE2 , que é a interface padrão usada pelo serviço. |
Não |
partitionOption |
O mecanismo de partição para ler de uma tabela SAP. As opções com suporte incluem:
|
Não |
partitionColumnName |
O nome da coluna usada para particionar os dados. | Não |
partitionUpperBound |
O valor máximo da coluna especificada no partitionColumnName que será usado para continuar com o particionamento. |
Não |
partitionLowerBound |
O valor mínimo da coluna especificada no partitionColumnName que será usado para continuar com o particionamento. (Observação: 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 padrão é 1. | Não |
sapDataColumnDelimiter |
O caractere único que é utilizado como delimitador passado para o SAP RFC para dividir os dados de saída. | Não |
Dica
Se sua tabela SAP tiver um grande volume de dados, como vários bilhões de linhas, use partitionOption
e partitionSetting
para dividir os dados em partições menores. Nesse caso, os dados são lidos por partição e cada partição de dados é recuperada do servidor SAP por meio de uma única chamada RFC.
partitionOption
Como partitionOnInt
exemplo, o número de linhas em cada partição é calculado com esta fórmula: (total de linhas caindo 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, ao definir parallelCopies
como quatro, o serviço gera e executa simultaneamente quatro consultas com base na opção de partição especificada e nas configurações, e cada consulta recupera uma parte dos dados da Tabela SAP. É altamente recomendável fazer maxPartitionsNumber
um múltiplo do valor da parallelCopies
propriedade. Ao copiar os dados para o armazenamento de dados baseado em arquivo, também recomendamos gravá-los em uma pasta como vários arquivos (apenas especifique o nome da pasta) para obter um desempenho melhor do que gravá-los em um arquivo.
Dica
O BASXML
é habilitado por padrão para este conector Tabela SAP dentro do serviço.
No rfcTableOptions
, você pode usar os seguintes operadores de consulta SAP comuns para filtrar as linhas:
Operador | Descrição |
---|---|
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
}
}
]
Unir tabelas SAP
Atualmente, o conector de tabela SAP dá suporte apenas a 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 de tabela do SAP seguindo as etapas abaixo:
- Escreva um módulo de função personalizada, que pode fazer uma consulta como opções e aplicar sua própria lógica para recuperar os dados.
- Para o "módulo de função personalizada", insira o nome do seu módulo de função personalizada.
- Para as "opções de tabela da RFC", especifique a instrução de junção de tabela a ser alimentada em seu módulo de função como opções, como "
<TABLE1>
junção interna<TABLE2>
em COLUMN0".
Veja um exemplo:
Dica
Você também pode considerar ter os dados associados agregados na exibição, que é suportado pelo conector de tabela do SAP. Você também pode tentar extrair tabelas relacionadas para se integrar ao Azure (por exemplo, armazenamento do Azure, banco de dados SQL do Azure) e, em seguida, usar o fluxo para prosseguir com o ingresso ou o filtro.
Criar o módulo função personalizada
Para a tabela SAP, atualmente damos suporte à propriedade customRfcReadTableFunctionModule na fonte de cópia, que permite aproveitar seus próprios dados de lógica e de processo.
Como uma orientação rápida, aqui estão alguns requisitos para começar a usar o "módulo de função personalizada":
Definição:
Exporte dados em uma das tabelas abaixo:
Veja abaixo as ilustrações de como o conector de tabela SAP funciona com o módulo de função personalizada:
Crie conexão com o servidor SAP via SAP NCO.
Invoque "módulo de função personalizada" com os parâmetros definidos como abaixo:
- QUERY_TABLE: o nome da tabela que você definiu no conjunto de uma Tabela SAP;
- Delimitador: o delimitador definido na origem da Tabela SAP;
- NÚMERO de linhas/opção/campos: a opção de número de linhas/campos agregados que você definiu na origem da tabela.
Obtenha o resultado e analise os dados das maneiras abaixo:
Analise o valor na tabela campos 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 grave-os no coletor.
Mapeamentos de tipo de dados para uma tabela SAP
Ao copiar dados de uma Tabela SAP, os seguintes mapeamentos são usados de tipos de dados da Tabela SAP para tipos de dados provisórios usados dentro do serviço. Para saber mais sobre como a atividade de cópia mapeia o tipo de dados e esquema de origem para o coletor, consulte Mapeamentos de tipo de dados e esquema.
Tipo SAP ABAP | Tipo de dados provisório do serviço |
---|---|
C (cadeia de caracteres) |
String |
I (Inteiro) |
Int32 |
F (Float) |
Double |
D (Data) |
String |
T (Horário) |
String |
P (BCD Empacotado, Moeda, Decimal, Qtd) |
Decimal |
N (Numérico) |
String |
X (Binário e Raiz) |
String |
Pesquisar propriedades de atividade
Para saber detalhes sobre as propriedades, verifique Pesquisar atividade.
Conteúdo relacionado
Para obter uma lista dos armazenamentos de dados com suporte como coletores e fontes da atividade de cópia, confira os Armazenamentos de dados com suporte.