Pacote recebido no intake não escrito no BigQuery

Description

Texto padrão para issuetype Bug conforme DoR (Definition of Ready)

01 - PESSOA DE CONTATO (Quem pode responder questões sobre o problema): @Breno Zipoli Monteiro Papa
02 - PROBLEMA (Qual é o problema):

Avaliando o caso da issue https://jiraproducao.totvs.com.br/browse/IDEIA-225, notamos que temos quatro versões do mesmo registro nos dados de intake da tenant em datas diferentes. Especialmente no dia 24-04-2024 vemos que foi o último envio de dados para essa chave na tabela. O registro procurado tem a chave abaixo, para referencias futuras:

  cod_estab = "11"
  AND cod_espec_docto ="DP"
  AND cod_ser_docto ="1"
  AND cod_tit_acr ="0227477"
  AND cod_parcela ="03"

O auditId do último registro enviado com essa chave é 68c856ddabad813d . O valor do campo val_sdo_tit_acr nesse registro é 0.

SELECT * except(counterForEntity), TIMESTAMP_MICROS(CAST(counterForEntity AS INT64)) counterForEntity FROM (
SELECT
  records_landing.* EXCEPT (payload),
  JSON_VALUE(json_payload, '$.val_sdo_tit_acr') val_sdo_tit_acr,
  JSON_VALUE(json_payload, '$.cod_estab') cod_estab,
  JSON_VALUE(json_payload, '$.cod_espec_docto') cod_espec_docto,
  JSON_VALUE(json_payload, '$.cod_ser_docto') cod_ser_docto,
  JSON_VALUE(json_payload, '$.cod_tit_acr') cod_tit_acr,
  JSON_VALUE(json_payload, '$.cod_parcela') cod_parcela,
  JSON_VALUE(attributes, '$.counterForEntity') counterForEntity,
FROM
  labs-app-mdm-production.intake.records_landing records_landing,
  UNNEST(JSON_EXTRACT_ARRAY(payload, "$")) json_payload
WHERE
  publish_time >= '2024-01-01'
  AND tenantId = 'd13dc61c425a4e309987a4853b8ee7a9'
  AND stagingType = 'movfin_tit_acr'
)
WHERE 
  cod_estab = "11"
  AND cod_espec_docto ="DP"
  AND cod_ser_docto ="1"
  AND cod_tit_acr ="0227477"
  AND cod_parcela ="03"

ORDER BY publish_time DESC

image-20240624-173915.png

A query abaixo confirma que o mesmo passou pela etapa BIGQUERY_CUSTOMER_WRITER.

select
  *
from
  `labs-app-mdm-production.intake.records_steps`
where
  publish_time >= '2024-04-01'
  and auditId in ('68c856ddabad813d')
  and step like '%BIGQUERY_CUSTOMER_WRITER%'
order by
  publish_time

image-20240624-174026.png

Porém, podemos ver que na tabela do cliente não temos o registro de auditId 68c856ddabad813d , enviado por último.

SELECT
  val_sdo_tit_acr,
  cod_estab,
  cod_espec_docto,
  cod_ser_docto,
  cod_tit_acr,
  cod_parcela, 
  mdmCreated,
  mdmCounterForEntity__DATETIME__,
  _ingestionDatetime,
  mdmAuditId
FROM
  `carol-d13dc61c425a4e309987.d13dc61c425a4e309987a4853b8ee7a9.ingestion_stg_datasul_carol_movfin_tit_acr`
WHERE
  cod_estab = "11"
  AND cod_espec_docto ="DP"
  AND cod_ser_docto ="1"
  AND cod_tit_acr ="0227477"
  AND cod_parcela ="03"

image-20240624-174603.png

Foi feito um teste em outra tenant com um snapshot da tabela para validar se a consolidação de dados poderia ter removido esse registro, simulando a ordem de envio e respeitando os payloads enviados contendo essa chave de registro. Nesse teste tivemos o comportamento esperado (o último registro enviado se manteve).

O teste foi feito nessa tabela, https://daen.carol.ai/datavalidationwebinar/carol-ui/connectors/myconnector/movfin_tit_acr?p=1&ps=25&order=ASC&filters=%5B%7B%22consolidation%22:%22n%22%7D,%7B%22cod_estab%22:%5B%22equal%22,%5B%2211%22%5D%5D%7D,%7B%22cod_espec_docto%22:%5B%22equal%22,%5B%22DP%22%5D%5D%7D,%7B%22cod_ser_docto%22:%5B%22equal%22,%5B%221%22%5D%5D%7D,%7B%22cod_tit_acr%22:%5B%22equal%22,%5B%220227477%22%5D%5D%7D,%7B%22cod_parcela%22:%5B%22equal%22,%5B%2203%22%5D%5D%7D%5D , utilizando a query padrão de consolidação que estava em produção na época.

SELECT val_sdo_tit_acr, * FROM (
SELECT * 
FROM
  `carol-234061fafb784fe98c2d.234061fafb784fe98c2d711f45e3ce7f.ingestion_stg_myconnector_movfin_tit_acr`
WHERE

  STRUCT(mdmId,
    mdmCounterForEntity) NOT IN (
  SELECT
    AS STRUCT mdmId,
    IFNULL(mdmCounterForEntity, 0)
  FROM (
    SELECT
      ROW_NUMBER() OVER (PARTITION BY mdmId ORDER BY mdmCounterForEntity DESC) _RANKING_INTERNAL_FIELD_VIEW_CAROL_,
      *
    FROM
      `carol-234061fafb784fe98c2d.234061fafb784fe98c2d711f45e3ce7f.ingestion_stg_myconnector_movfin_tit_acr`)
  WHERE
    _RANKING_INTERNAL_FIELD_VIEW_CAROL_ = 1
    AND (mdmDeleted = FALSE
      OR mdmDeleted IS NULL) )
) WHERE cod_tit_acr LIKE '%0227477%' and cod_parcela = '03'

image-20240624-175303.png

Veja que a query de consolidação retiraria os 3 registros com valor de val_sdo_tit_acr (presentes na imagem) e deixaria apenas o último enviado, com valor zerado.

Esses testes levam a crer que o último registro escrito nessa tabela foi o de mdmAuditId = d54674e3bbacaa8b e não o de 68c856ddabad813d , efetivamente o último. Indicando que tivemos problemas na escrita dos dados.

Fazendo uma query para validar se nessa tabela temos mais registros com o mesmo problema, chegamos no total de 186 registros, todos dentro desse mesmo auditId (68c856ddabad813d), onde o payload tinha 786 registros. Foi avaliado o payload e o registro com a chave mencionada é único dentro dele, ou seja, não foi afetado por consolidações dentro do intake (ou não deveria ter sido).

Iremos recuperar os dados desses 186 registros que não foram ingeridos pela plataforma utilizando o intake, porém é necessário que plataforma verifique se algo aconteceu para corrigir o bug.

Activity

Automation for Jira 5 July 2024, 19:55 Jira Internal Users

@Robson Thanael Poffo ,
@Gabriel DAmore Marciano , @Cindy de Araujo Soares Moore ,

Este issue foi planejada para ser entregue até 2024-08-30. Você pode confirmar consultando o campo Due Date desta issue.

Data já planejadas para esta issue: 2024-08-30

Se o campo External Issue Link estiver preenchido com o link de uma issue válida no Jira Produção o cliente também será notificado no Jira Produção.