Pular para o conteúdo principal

Ingerir campos de fórmula do Salesforce de forma incremental

info

Beta

Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a este recurso na página de Pré-visualizações . Veja as prévias do Gerenciador Databricks.

Por default, LakeFlow Connect não importa campos de fórmula do Salesforce de forma incremental. Em vez disso, ele captura um instantâneo dos campos de fórmula em cada execução pipeline e, em seguida, os une ao restante da tabela. No entanto, você pode habilitar a ingestão incremental de campos de fórmula, o que geralmente melhora significativamente o desempenho e reduz os custos.

Como funciona a ingestão incremental de campos de fórmula

Se você usar a abordagem Snapshot default , o resultado final de um pipeline de ingestão do Salesforce será uma série de tabelas de transmissão (uma para cada tabela de origem). Se você usar a ingestão incremental de campos de fórmula, o conector cria tabelas de transmissão intermediárias para armazenar campos que não são fórmulas, mas o resultado final é uma view materializada que contém tanto campos de fórmula quanto campos que não são fórmulas.

As colunas de cursor do Salesforce (como SystemModstamp ou LastModifiedDate) não rastreiam campos de fórmula. Quando o resultado de uma fórmula é alterado, o Salesforce não atualiza as colunas do cursor. Se você usar a abordagem de Snapshot default , os campos de fórmula podem ser alterados silenciosamente sem serem detectados pelo pipeline de ingestão. No entanto, se você usar a ingestão incremental de campos de fórmula, o conector recria as fórmulas como uma visualização materializada e, em seguida, recalcula os resultados incrementalmente.

Quando um campo que não seja uma fórmula é excluído no Salesforce, a coluna correspondente no destino é marcada como inativa, mas não é excluída. Se o elemento reaparecer na origem, o pipeline falhará com um erro de coluna duplicada. Em contrapartida, quando um campo de fórmula é excluído, ele é removido da view materializada final. Se o campo reaparecer posteriormente na fonte, ele será incorporado à view materializada com os dados mais recentes.

Ao criar uma fórmula que retorna um número no Salesforce, você pode especificar a escala (o número de dígitos permitidos após a vírgula). O Salesforce arredonda automaticamente o resultado da fórmula para o número especificado de casas decimais. Para evitar erros de arredondamento cumulativos, o conector Databricks não reproduz esse comportamento.

Limitações

As limitações desta seção se aplicam quando você cria um pipeline de ingestão com campos de fórmula incrementais.

Limitações gerais

  • Não é possível ativar esse recurso em um pipeline existente. Você precisa criar um novo pipeline.
  • Este recurso é exclusivo da API. Não é possível configurá-lo usando a interface do usuário do Databricks.
  • A view materializada final não suporta SCD tipo 2. No entanto, você pode view o histórico dos campos que não são fórmulas na tabela de transmissão intermediária.

Campos de fórmula e funções não suportados

  • Os campos que fazem referência a tabelas ou colunas que não estão atualmente sendo ingeridas no pipeline não são ingeridos incrementalmente.

  • As seguintes funções de fórmula não são suportadas:

    • GETSESSIONID
    • RUNASUSER
    • CURRENCYRATE
    • ISCLONE
    • VLOOKUP
    • GETRECORDIDS
    • PARENTGROUPVAL
    • PREVGROUPVAL
    • PRIORVALUE
    • ISCHANGED
    • ISNEW
    • PREDICT
    • MLPREDICT
    • IMAGEPROXYURL
    • JUNCTIONIDLIST
    • LINKTO
    • LINKGROUPVAL
    • REQUIRESCRIPT
    • URLFOR
    • GEOLOCATION
    • DISTANCE
    • HTMLENCODE
    • JSENCODE
    • JSINHTMLENCODE
    • URLENCODE
    • INCLUDE
  • Campos de resumo cumulativo e fórmulas que fazem referência a eles não são suportados.

  • Entidades globais (por exemplo, $User, $Profile) não são suportadas.

  • Fórmulas que usam ROUND(arg1, arg2) não são suportadas a menos que arg2 seja um inteiro estático.

  • Fórmulas com resultados que excedem a precisão decimal(38,18), como uma fórmula que multiplica dois decimais de precisão (30,18). Esses fatores causam a falha do pipeline. Para excluí-los, use a configuração exclude_columns . Consulte Selecionar colunas para ingestão.

Funções com resultados ambíguos

As seguintes funções podem produzir resultados diferentes no Databricks em comparação com o Salesforce:

Função

Diferença de comportamento

LEN(TEXT(<decimal_number>)), como LEN("123.45")

Como o Databricks é mais preciso que o Salesforce, essa função retorna um valor diferente no Databricks do que no Salesforce.

CHR(x)

No Salesforce, esta função retorna o caractere com o código ASCII especificado por x. No Databricks, retorna o caractere cujo código ASCII é igual a x módulo 256.

INITCAP("_mrSmith is _ok")

No Salesforce, esta função coloca em maiúscula a primeira letra de cada palavra, ignorando caracteres não alfabéticos, resultando em "_MrSmith Is Ok". No Databricks, esta função coloca em maiúscula o primeiro caractere de cada palavra apenas se for uma letra, resultando em "_mrSmith Is _ok".

FORMAT_DURATION

No Salesforce, quando duas entradas de data e hora estão exatamente separadas por 30 minutos, a fórmula retorna 0:00:29:59 em vez do esperado 0:00:30:00. Essa limitação não existe no Databricks, portanto pode haver uma diferença de um segundo entre os valores de origem e destino.

Crie um pipeline com campos de fórmula incrementais.

Para habilitar a ingestão incremental de campos de fórmula, você deve criar um novo pipeline com o sinalizador de configuração pipelines.enableSalesforceFormulaFieldsMVComputation: true. Não é possível ativar este recurso em um pipeline existente. Para ver um exemplo de código, consulte Exemplo: Ingerir campos de fórmula incrementalmente.

Entenda a tabela de erros de envio

Ao ativar a ingestão incremental de campos de fórmula, o conector cria uma tabela adicional para auxiliar na resolução de problemas. Esta tabela sempre aparece se o indicador de campos de fórmula incrementais estiver ativado, mesmo que não haja erros. A tabela de acompanhamento de erros (denominada <pipeline-id>_formula_fields_error_reasons) possui as seguintes colunas:

  • <source-object>: O nome do objeto de origem no Salesforce.
  • <formula-field>: O nome do campo da fórmula.
  • errorMensagem de erro que explica por que a fórmula não foi processada incrementalmente.

Se um campo de fórmula mostrar valores NULL na sua tabela de destino, consulte a tabela de acompanhamento de erros para entender por que o campo não foi ingerido incrementalmente. Para obter detalhes, consulte Os valores do campo de fórmula são exibidos como NULL (ingestão incremental).