Transferências incrementais baseadas no token delta
Para habilitar a transferência incremental usando Change Data Capture (CDC) para entidades habilitadas para ODP compatíveis, siga estas etapas:
Crie a tarefa de transferência incremental no modo de script.
Ao criar o DataFrame ou o DynamicFrame do Glue, você precisa passar a opção
"ENABLE_CDC": "True". Essa opção garante que você receberá um token delta da SAP, que poderá ser usado para subsequente recuperação dos dados alterados.
O token delta poderá ser encontrado na última linha do dataframe, na coluna DELTA_TOKEN. Você poderá usar esse token como uma opção de conector em chamadas subsequentes para recuperar o próximo conjunto de dados incrementalmente.
Exemplo
Definimos o sinalizador
ENABLE_CDCcomotrue, ao criar o DynamicFrame. Observação:ENABLE_CDCseráfalsepor padrão, se você não quiser inicializar a fila delta, não precisará enviar esse sinalizador nem defini-lo como true. Não definir esse sinalizador como true resultará na extração da carga total.sapodata_df = glueContext.create_dynamic_frame.from_options( connection_type="SAPOData", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "entityName", "ENABLE_CDC": "true" }, transformation_ctx=key) # Extract the delta token from the last row of the DELTA_TOKEN column delta_token_1 = your_logic_to_extract_delta_token(sapodata_df) # e.g., D20241029164449_000370000O token delta extraído pode ser passado como uma opção para recuperar novos eventos.
sapodata_df_2 = glueContext.create_dynamic_frame.from_options( connection_type="SAPOData", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "entityName", // passing the delta token retrieved in the last run "DELTA_TOKEN": delta_token_1 } , transformation_ctx=key) # Extract the new delta token for the next run delta_token_2 = your_logic_to_extract_delta_token(sapodata_df_2)
Observe que o último registro, no qual o DELTA_TOKEN está presente, não é um registro transacional da fonte e existe apenas com a finalidade de passar o valor do token delta.
Além do DELTA_TOKEN, os campos a seguir são retornados em cada linha do dataframe.
GLUE_FETCH_SQ: esse é um campo sequencial, gerado a partir do timestamp EPOC na ordem de recebimento dos registros e é exclusivo para cada registro. Isso pode ser usado se você precisar conhecer ou estabelecer a ordem das alterações no sistema de origem. Esse campo estará presente apenas para entidades habilitadas para ODP.
DML_STATUS: isso exibirá
UPDATEDpara todos os registros recém-inseridos e atualizados a partir da fonte eDELETEDpara os registros que foram excluídos da fonte.
Para obter mais detalhes sobre como gerenciar estado e reutilizar o token delta para recuperar registros alterados por meio de um exemplo, consulte a seção Uso do script de gerenciamento de estado do SAP OData.
Invalidação do token delta
Um token delta é associado ao conjunto de serviços e a um usuário. Se uma extração inicial com “ENABLE_CDC” : “true” for iniciada para o mesmo conjunto de serviços e usuário, todos os tokens delta anteriores emitidos como resultado de uma inicialização anterior serão invalidados pelo serviço OData do SAP. Invocar o conector com um token delta expirado gerará uma exceção:
Could not open data access via extraction API RODPS_REPL_ODP_OPEN