Copiar dados do SAP HANA utilizando o Azure Data Factory ou 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 banco de dados SAP HANA. Ele amplia o artigo Visão geral da atividade de cópia que apresenta uma 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 com introdução detalhada sobre cada conector SAP, comparações e orientações.
Funcionalidades com suporte
Há suporte ao conector do SAP HANA para as seguintes funcionalidades:
Funcionalidades com suporte | IR |
---|---|
Atividade de cópia (origem/coletor) | ② |
Atividade de pesquisa | ② |
① Runtime de integração do Azure ② Runtime de integração auto-hospedada
Para obter uma lista de armazenamentos de dados com suporte, que funcionam como fontes/coletores da atividade de cópia, confira a tabela Armazenamentos de dados com suporte.
Especificamente, este conector do SAP HANA dá suporte à:
- Cópia de dados de qualquer versão do banco de dados SAP HANA.
- Cópia de dados dos modelos de informações do HANA (exibições de Análise e de Cálculo) e das tabelas linha/coluna.
- Cópia de dados usando a autenticação Básica ou do Windows.
- Cópia paralela de uma fonte do SAP HANA. Confira a seção Cópia paralela do SAP HANA para obter detalhes.
Dica
Para copiar dados no armazenamento de dados do SAP HANA, use o conector ODBC genérico. Consulte a seção coletor do SAP HANA com detalhes. Observe que os serviços vinculados para o conector do SAP HANA e o conector ODBC são de tipos diferentes, portanto, não podem ser reutilizados.
Pré-requisitos
Para usar esse conector do SAP HANA, você precisa:
- Configurar um Integration Runtime auto-hospedado. Consulte o artigo Self-hosted integration runtime (Integration Runtime auto-hospedado) para obter detalhes.
- Instalar o driver ODBC do SAP HANA no computador do Integration Runtime. Baixe o driver ODBC do SAP HANA do Centro de Download de Software SAP. Pesquisa com a palavra-chave CLIENTE SAP HANA para Windows.
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 o SAP HANA usando a interface do usuário
Use as etapas a seguir para criar um serviço vinculado para o SAP HANA 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 do SAP HANA.
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 que a seguir fornecem detalhes sobre as propriedades usadas para definir entidades do Data Factory específicas ao conector do SAP HANA.
Propriedades do serviço vinculado
As propriedades a seguir têm suporte para o serviço vinculado do SAP HANA:
Propriedade | Descrição | Obrigatório |
---|---|---|
type | A propriedade type deve ser definida como: SapHana | Sim |
connectionString | Especifique as informações necessárias para se conectar ao SAP HANA usando a autenticação básica ou a autenticação do Windows. Consulte os exemplos a seguir. Na cadeia de conexão, servidor/porta é obrigatório (a porta padrão é 30015) e o nome de usuário e a senha são obrigatórios ao usar a autenticação básica. Para obter configurações avançadas adicionais, consulte Propriedades de conexão ODBC do SAP HANA Você também pode colocar uma senha no Azure Key Vault e extrair a configuração de senha da cadeia de conexão. Consulte o artigo Credenciais de armazenamento no Azure Key Vault para obter mais detalhes. |
Sim |
userName | Especifique o nome de usuário ao usar a autenticação do Windows. Exemplo: user@domain.com |
Não |
password | Especifique a senha para a conta de usuário. Marque este campo como um SecureString para armazená-lo com segurança ou referencie um segredo armazenado no Azure Key Vault. | Não |
connectVia | O Integration Runtime a ser usado para se conectar ao armazenamento de dados. É necessário um Integration Runtime auto-hospedado, conforme mencionado nos Pré-requisitos. | Sim |
Exemplo: usar autenticação básica
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"connectionString": "SERVERNODE=<server>:<port (optional)>;UID=<userName>;PWD=<Password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Exemplo: usar autenticação do Windows
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"connectionString": "SERVERNODE=<server>:<port (optional)>;",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Se você estava usando o serviço vinculado do SAP HANA com o conteúdo a seguir, ainda terá suporte «no estado em que se encontra», mas é recomendável usar o novo de agora em diante.
Exemplo:
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"server": "<server>:<port (optional)>",
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Propriedades do conjunto de dados
Para obter uma lista completa das seções e propriedades disponíveis para definir os conjuntos de dados, confira o artigo sobre conjuntos de dados. Esta seção fornece uma lista das propriedades com suporte pelo conjunto de dados do SAP HANA.
Para copiar dados do SAP HANA, há suporte para as seguintes propriedades:
Propriedade | Descrição | Obrigatório |
---|---|---|
type | A propriedade type do conjunto de dados deve ser definida como: SapHanaTable | Sim |
esquema | O nome do esquema no banco de dados do SAP HANA. | Não (se "query" na fonte da atividade for especificada) |
tabela | O nome da tabela no banco de dados do SAP HANA. | Não (se "query" na fonte da atividade for especificada) |
Exemplo:
{
"name": "SAPHANADataset",
"properties": {
"type": "SapHanaTable",
"typeProperties": {
"schema": "<schema name>",
"table": "<table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP HANA linked service name>",
"type": "LinkedServiceReference"
}
}
}
Se você estava usando o conjunto de dados com tipos RelationalTable
, ele ainda tem suporte como está, mas é recomendável usar o novo de agora em diante.
Propriedades da atividade de cópia
Para obter uma lista completa das seções e propriedades disponíveis para definir atividades, confia o artigo Pipelines. Esta seção fornece uma lista das propriedades com suporte pela fonte do SAP HANA.
SAP HANA como fonte
Dica
Para ingerir dados do SAP HANA com eficiência usando o particionamento de dados, saiba mais na seção Cópia paralela do SAP HANA.
Para copiar dados do SAP HANA, as seguintes propriedades têm suporte na seção origem da atividade de cópia:
Propriedade | Descrição | Obrigatório |
---|---|---|
type | A propriedade type da origem da atividade de cópia deve ser definida como: SapHanaSource | Sim |
Consulta | Especifica a consulta SQL para ler dados da instância do SAP HANA. | Sim |
partitionOptions | Especifica as opções de particionamento de dados usadas para ingerir dados do SAP HANA. Saiba mais na seção Cópia paralela do SAP HANA. Os valores permitidos são: Nenhum (padrão), PhysicalPartitionsOfTable, SapHanaDynamicRange. Saiba mais na seção Cópia paralela do SAP HANA. PhysicalPartitionsOfTable só pode ser usado ao copiar dados de uma tabela, mas não de uma consulta. Quando uma opção de partição é habilitada (ou seja, não None ), o grau de paralelismo para carregar dados simultaneamente do SAP HANA é controlado pela configuração parallelCopies na atividade de cópia. |
Falso |
partitionSettings | Especifique o grupo de configurações para o particionamento de dados. Aplicar quando a opção de partição for SapHanaDynamicRange . |
Falso |
partitionColumnName | Especifique o nome da coluna de origem que será usada pela partição para cópia paralela. Se não for especificado, o índice ou a chave primária da tabela será auto-detectado e usado como coluna de partição. Aplicar quando a opção de partição for SapHanaDynamicRange . Se você usar uma consulta para recuperar os dados de origem, conecte ?AdfHanaDynamicRangePartitionCondition na cláusula WHERE. Confira o exemplo na seção Cópia paralela do SAP HANA. |
Sim ao usar a SapHanaDynamicRange partição. |
packetSize | Especifica o tamanho do pacote de rede (em kilobytes) para dividir os dados em vários blocos. Se você tiver uma grande quantidade de dados a serem copiados, aumentar o tamanho do pacote poderá aumentar a velocidade de leitura do SAP HANA na maioria dos casos. O teste de desempenho é recomendado ao ajustar o tamanho do pacote. | Não. O valor padrão é 2048 (2 MB). |
Exemplo:
"activities":[
{
"name": "CopyFromSAPHANA",
"type": "Copy",
"inputs": [
{
"referenceName": "<SAP HANA input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SapHanaSource",
"query": "<SQL query for SAP HANA>"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Se você estava usando a origem de cópia com tipo RelationalSource
, ela ainda tem suporte “no estado em que se encontra”, mas é recomendável usar a nova no futuro.
Cópia paralela do SAP HANA
O conector do SAP HANA fornece particionamento de dados interno para copiar dados do SAP HANA em paralelo. Você pode encontrar opções de particionamento de dados na tabela Origem da atividade de cópia.
Quando você habilita a cópia particionada, o serviço executa consultas paralelas com relação à sua origem do SAP HANA para recuperar dados por partições. O grau paralelo é controlado pela configuração do parallelCopies
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 HANA.
É recomendável habilitar a cópia paralela com o particionamento de dados, especialmente quando você ingere grandes quantidades de dados do SAP HANA. Veja a seguir as configurações sugeridas para cenários diferentes. Ao copiar dados para o armazenamento de dados baseado em arquivo, recomendamos gravá-los em uma pasta como vários arquivos (apenas especifique o nome da pasta) para ter um desempenho melhor do que gravar em um arquivo.
Cenário | Configurações sugeridas |
---|---|
Carga completa de uma tabela grande. | Opção de partição: partições físicas da tabela. Durante a execução, o serviço detecta automaticamente o tipo de partição física da tabela do SAP HANA especificada e escolhe a estratégia de partição correspondente: - Particionamento por intervalos: defina a coluna de partição e os intervalos de partição para a tabela e, em seguida, copie os dados por intervalo. - Particionamento de hash: use a chave de partição de hash como coluna de partição, depois particione e copie os dados com base em intervalos calculados no serviço. - Particionamento round-robin ou sem partição use a chave de partição de hash como coluna de partição, depois particione e copie os dados com base em intervalos calculados no serviço. |
Carregue uma grande quantidade de dados usando uma consulta personalizada. | Opção de partição: partição de intervalo dinâmico. Consulta: SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause> .Coluna de partição: especifique a coluna usada para aplicar partição de intervalos dinâmicos. Durante a execução, o serviço calcula primeiro os intervalos de valor da coluna de partição especificada, distribui uniformemente as linhas em um número de buckets de acordo com o número de valores de coluna de partição distintos e a configuração de cópia paralela do ADF e, em seguida, substitui pela ?AdfHanaDynamicRangePartitionCondition filtragem do intervalo de valores da coluna de partição para cada partição e envia ao SAP HANA.Se você quiser usar várias colunas como coluna de partição, poderá concatenar os valores de cada coluna como uma coluna na consulta e especificá-la como coluna de partição, como SELECT * FROM (SELECT *, CONCAT(<KeyColumn1>, <KeyColumn2>) AS PARTITIONCOLUMN FROM <TABLENAME>) WHERE ?AdfHanaDynamicRangePartitionCondition . |
Exemplo: consulta com partições físicas de uma tabela
"source": {
"type": "SapHanaSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
Exemplo: consulta com a partição do intervalo dinâmico
"source": {
"type": "SapHanaSource",
"query": "SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause>",
"partitionOption": "SapHanaDynamicRange",
"partitionSettings": {
"partitionColumnName": "<Partition_column_name>"
}
}
Mapeamento de tipo de dados para SAP HANA
Ao copiar dados do SAP HANA, os seguintes mapeamentos são usados de tipos de dados do SAP HANA para tipos de dados provisórios usados internamente no serviço. Consulte Mapeamentos de tipo de dados e esquema para saber mais sobre como a atividade de cópia mapeia o tipo de dados e esquema de origem para o coletor.
Tipo de dados do SAP HANA | Tipo de dados provisório do serviço |
---|---|
ALPHANUM | String |
bigint | Int64 |
BINARY | Byte[] |
BINTEXT | Cadeia de caracteres |
BLOB | Byte[] |
BOOL | Byte |
CLOB | String |
DATE | Datetime |
DECIMAL | Decimal |
DOUBLE | Double |
FLOAT | Double |
INTEGER | Int32 |
NCLOB | String |
NVARCHAR | Cadeia de caracteres |
real | Único |
SECONDDATE | DateTime |
SHORTTEXT | Cadeia de caracteres |
SMALLDECIMAL | Decimal |
SMALLINT | Int16 |
STGEOMETRYTYPE | Byte[] |
STPOINTTYPE | Byte[] |
TEXT | String |
TIME | TimeSpan |
TINYINT | Byte |
VARCHAR | String |
timestamp | Datetime |
VARBINARY | Byte[] |
Coletor do SAP HANA
Atualmente, o conector do SAP HANA não tem suporte como coletor, embora seja possível usar o conector ODBC genérico com o driver do SAP HANA para gravar dados no SAP HANA.
Siga os Pré-requisitos para configurar o tempo de execução de integração auto-hospedado e instale o driver ODBC do SAP HANA primeiro. Crie um serviço vinculado de ODBC para se conectar ao armazenamento de dados do SAP HANA, conforme mostrado no exemplo a seguir e, depois, crie um conjunto de dados e um coletor de atividade de cópia com o tipo ODBC adequadamente. Saiba mais no artigo conector ODBC.
{
"name": "SAPHANAViaODBCLinkedService",
"properties": {
"type": "Odbc",
"typeProperties": {
"connectionString": "Driver={HDBODBC};servernode=<HANA server>.clouddatahub-int.net:30015",
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Pesquisar propriedades de atividade
Para saber detalhes sobre as propriedades, verifique Pesquisar atividade.
Conteúdo relacionado
Para obter uma lista de armazenamentos de dados com suporte como coletores e fontes da atividade de cópia, confira os armazenamentos de dados com suporte.