Openflow Connector for Salesforce Bulk API: Campos de fórmula do Salesforce

Nota

O conector está sujeito aos Termos do conector Snowflake.

Este tópico descreve como o Openflow Connector for Salesforce Bulk API converte campos de fórmula do Salesforce em exibições do Snowflake SQL, incluindo funções e limitações compatíveis.

Como funcionam as exibições de fórmula

Quando Enable Views Creation está definido como true, o conector executa o seguinte para cada objeto que tem campos de fórmula:

  1. Recupera as expressões de fórmula dos metadados do objeto Salesforce por meio da Describe API.

  2. Analisa cada expressão de fórmula e a converte no Snowflake SQL equivalente.

  3. Gera uma instrução CREATE OR REPLACE VIEW que combina colunas que não são de fórmula da tabela base com as expressões de fórmula convertidas como colunas computadas.

  4. Executa DDL no Snowflake para criar ou atualizar a exibição.

A exibição resultante é chamada <Object Type>_FORMULA_VW. Por exemplo, o objeto Account produz uma exibição chamada ACCOUNT_FORMULA_VW. Você pode consultar essa exibição para obter valores de campos de fórmula junto com os dados replicados.

A exibição é atualizada automaticamente sempre que o conector detecta alterações de esquema no objeto de origem, garantindo que as definições da fórmula permaneçam sincronizadas com o Salesforce.

Campos de fórmula entre objetos

As fórmulas do Salesforce podem fazer referência a campos de objetos relacionados usando uma travessia de relacionamento (por exemplo, Account.Owner.Name). O conector oferece suporte a essas referências entre objetos gerando cláusulas LEFT JOIN na definição da exibição. Cada travessia de relacionamento produz uma junção com a tabela relacionada correspondente no Snowflake.

Para que as fórmulas entre objetos funcionem corretamente, os objetos relacionados também devem ser replicados pelo conector. O conector não verifica se as tabelas referenciadas existem no Snowflake no momento da conversão. Se um objeto relacionado não estiver sendo sincronizado, a instrução CREATE OR REPLACE VIEW gerada fará referência a uma tabela que não existe no Snowflake, e haverá falha na criação da exibição. Para resolver isso, certifique-se de que todos os objetos relacionados referenciados por campos de fórmula sejam incluídos no parâmetro Filter. A exibição é recriada automaticamente na próxima execução do conector após a existência das tabelas referenciadas.

Comentários de coluna da exibição de fórmula

Cada coluna de fórmula na exibição gerada inclui uma anotação SQL COMMENT:

  • Para fórmulas convertidas com sucesso, o comentário contém a expressão da fórmula original do Salesforce.

  • Para fórmulas que não puderam ser convertidas, o comentário contém o código de motivo da falha.

É possível inspecionar esses comentários executando DESCRIBE VIEW <view_name> no Snowflake.

Funções de fórmula compatíveis

As seguintes funções de fórmula do Salesforce são convertidas no Snowflake SQL equivalente:

Categoria

Função do Salesforce

Equivalente do Snowflake

Lógico

IF

CASE WHEN ... THEN ... ELSE ... END

Lógico

CASE

CASE ... WHEN ... THEN ... ELSE ... END

Lógico

AND / OR / NOT

AND / OR / NOT

Tratamento de nulos

ISBLANK

LENGTH(COALESCE(expr, '')) = 0

Tratamento de nulos

ISNULL

expr IS NULL

Tratamento de nulos

NULLVALUE

COALESCE

Tratamento de nulos

BLANKVALUE

CASE WHEN ... IS NULL OR LENGTH(...) = 0 THEN ... END

Texto

LEFT

LEFT

Texto

RIGHT

RIGHT

Texto

MID

SUBSTR

Texto

LEN

LENGTH

Texto

SUBSTITUTE

REPLACE

Texto

TRIM

TRIM

Texto

UPPER

UPPER

Texto

LOWER

LOWER

Texto

CONTAINS

CONTAINS

Texto

BEGINS

STARTSWITH

Texto

FIND

CHARINDEX

Texto

LPAD

LPAD

Texto

RPAD

RPAD

Texto

BR

Literal de caractere de nova linha

Conversão

TEXT

CAST(... AS STRING)

Conversão

VALUE

TRY_CAST(... AS NUMBER)

Matemática

ABS

ABS

Matemática

ROUND

ROUND

Matemática

CEILING

CEIL

Matemática

FLOOR

FLOOR

Matemática

MOD

MOD

Matemática

SQRT

SQRT

Matemática

MAX

GREATEST

Matemática

MIN

LEAST

Matemática

LOG

LOG(10, ...)

Matemática

EXP

EXP

Matemática

LN

LN

Data e hora

NOW

CURRENT_TIMESTAMP()

Data e hora

TODAY

CURRENT_DATE()

Data e hora

YEAR

YEAR

Data e hora

MONTH

MONTH

Data e hora

DAY

DAY

Data e hora

DATEVALUE

TO_DATE

Data e hora

DATETIMEVALUE

TO_TIMESTAMP

Data e hora

ADDMONTHS

DATEADD(MONTH, ...)

Lista de seleção

ISPICKVAL

COALESCE(field, '') = COALESCE(value, '')

Além das funções, os seguintes operadores são compatíveis:

  • Aritmética: +, -, *, /, ^ (exponenciação, convertido em POWER)

  • Comparação: =, ==, !=, <>, <, <=, >, >=

  • Lógica: AND, OR, &&, ||

  • Concatenação de cadeia de caracteres: & (convertido em || com tratamento de nulos COALESCE)

  • Unário: - (negação), NOT

Constructos de fórmula incompatíveis

Os seguintes constructos de fórmula ainda não são compatíveis. O suporte para funções e constructos adicionais será incluído em versões futuras. Quando uma fórmula usa qualquer um deles, a coluna correspondente na exibição retorna NULL, e o comentário da coluna indicam o motivo da falha.

Motivo da falha

Descrição

FUNCTION_NOT_SUPPORTED

A fórmula usa uma função que não tem equivalente no Snowflake ou que é específica da UI do Salesforce. Isso inclui: IMAGE, HYPERLINK, URLFOR, HTMLENCODE, JSENCODE, LINKTO, GEOLOCATION, DISTANCE, VLOOKUP, REGEX, PREDICT, GETSESSIONID, GETRECORDIDS, REQUIRESCRIPT, ISCHANGED, ISNEW, ISCLONE, PRIORVALUE.

GLOBAL_VARIABLE_NOT_SUPPORTED

A fórmula faz referência a uma variável global do Salesforce, como $User.Name, $Organization.Name ou $Profile.Name. Essas variáveis não têm equivalentes no Snowflake.

FORMULA_CHAIN_NOT_SUPPORTED

A fórmula faz referência a outro campo de fórmula. Referências de fórmulas encadeadas (um campo de fórmula que depende de outro campo de fórmula) não são compatíveis.

ROLLUP_NOT_SUPPORTED

Trata-se de um campo de resumo acumulado em vez de um campo de fórmula. Os resumos acumulados agregam dados de registros filho e não podem ser expressos como uma simples exibição SQL.

LOOKUP_NOT_SYNCED

A fórmula faz referência a um relacionamento que não pode ser resolvido usando os metadados do objeto Salesforce. Geralmente, isso ocorre quando o nome do relacionamento na fórmula não corresponde a nenhum relacionamento conhecido no objeto.

ID_FORMAT_MISMATCH

A fórmula contém um ID do Salesforce de 15 caracteres embutido em código. O Salesforce usa IDs de 15 caracteres internamente, mas a Bulk API retorna IDs de 18 caracteres. Não é possível converter fórmulas com IDs de 15 caracteres embutidos em código de maneira confiável.

COMPOUND_FIELD_REFERENCE

A fórmula faz referência a um campo composto (como MailingAddress) que não está armazenado como uma única coluna no Snowflake.

PARSE_ERROR

A expressão de fórmula não pôde ser analisada. Isso pode indicar uma sintaxe que o conector ainda não reconhece.

UNSUPPORTED_SYNTAX

A fórmula usa um constructo de sintaxe que é reconhecido, mas não pode ser convertido (por exemplo, uma função IF com menos de três argumentos).