Openflow Connector for Salesforce Bulk API : Champs de formule Salesforce

Note

Ce connecteur est soumis aux conditions d’utilisation de Snowflake Connector.

Ce chapitre décrit comment Openflow Connector for Salesforce Bulk API traduit les champs de formule Salesforce en vues SQL Snowflake, comprenant les fonctions prises en charge et les limitations.

Fonctionnement des vues de formule

Lorsque Enable Views Creation est défini sur true, le connecteur effectue les opérations suivantes pour chaque objet comportant des champs de formule :

  1. Récupère les expressions de formule des métadonnées de l’objet Salesforce via l’API Describe.

  2. Analyse chaque expression de formule et la traduit en équivalent SQL Snowflake.

  3. Génère une instruction CREATE OR REPLACE VIEW qui combine les colonnes hors formules de la table de base avec les expressions de formule traduites en colonnes calculées.

  4. Exécute l’instruction DDL dans Snowflake pour créer ou mettre à jour la vue.

La vue résultante est nommée <Object Type>_FORMULA_VW. Par exemple, l’objet Account produit une vue nommée``ACCOUNT_FORMULA_VW``. Vous pouvez interroger cette vue pour obtenir les valeurs des champs de formule en plus des données répliquées.

La vue est automatiquement mise à jour chaque fois que le connecteur détecte des modifications de schéma dans l’objet source, garantissant ainsi que les définitions de formule restent synchronisées avec Salesforce.

Champs de calcul inter-objets

Les formule Salesforce peuvent faire référence à des champs provenant d’objets associés à l’aide du parcours de relation (Relationship Traversal) (par exemple, Account.Owner.Name). Le connecteur prend en charge ces références inter-objets en générant des clauses LEFT JOIN dans la définition de la vue. Chaque parcours de relation produit une jointure avec la table associée correspondante dans Snowflake.

Pour que les formules inter-objets fonctionnent correctement, les objets associés doivent également être répliqués par le connecteur. Le connecteur ne vérifie pas si les tables référencées existent dans Snowflake au moment de la traduction. Si un objet connexe n’est pas synchronisé, l’instruction CREATE OR REPLACE VIEW générée fait référence à une table qui n’existe pas dans Snowflake et la création de la vue échoue. Pour résoudre ce problème, assurez-vous que tous les objets associés référencés par les champs de formule sont inclus dans le paramètre Filter. La vue est automatiquement recréée lors de l’exécution suivante du connecteur, une fois que les tables référencées existent.

Commentaires de colonne de vue de formule

Chaque colonne de formule dans la vue générée comprend une annotation SQL COMMENT :

  • Pour les formules correctement traduites, le commentaire contient l’expression de formule Salesforce d’origine.

  • Pour les formule qui n’ont pas pu être traduites, le commentaire contient le code de motif d’échec.

Vous pouvez inspecter ces commentaires en exécutant DESCRIBE VIEW <view_name> dans Snowflake.

Fonctions de formule prises en charge

Les fonctions de formule Salesforce suivantes sont traduites en équivalents SQL Snowflake :

Catégorie

Fonction Salesforce

Équivalent Snowflake

Logique

IF

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

Logique

CASE

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

Logique

AND / OR / NOT

AND / OR / NOT

Traitement des nuls

ISBLANK

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

Traitement des nuls

ISNULL

expr IS NULL

Traitement des nuls

NULLVALUE

COALESCE

Traitement des nuls

BLANKVALUE

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

Texte

LEFT

LEFT

Texte

RIGHT

RIGHT

Texte

MID

SUBSTR

Texte

LEN

LENGTH

Texte

SUBSTITUTE

REPLACE

Texte

TRIM

TRIM

Texte

UPPER

UPPER

Texte

LOWER

LOWER

Texte

CONTAINS

CONTAINS

Texte

BEGINS

STARTSWITH

Texte

FIND

CHARINDEX

Texte

LPAD

LPAD

Texte

RPAD

RPAD

Texte

BR

Littéral de caractère de nouvelle ligne

Conversion

TEXT

CAST(... AS STRING)

Conversion

VALUE

TRY_CAST(... AS NUMBER)

Calcul

ABS

ABS

Calcul

ROUND

ROUND

Calcul

CEILING

CEIL

Calcul

FLOOR

FLOOR

Calcul

MOD

MOD

Calcul

SQRT

SQRT

Calcul

MAX

GREATEST

Calcul

MIN

LEAST

Calcul

LOG

LOG(10, ...)

Calcul

EXP

EXP

Calcul

LN

LN

Date et heure

NOW

CURRENT_TIMESTAMP()

Date et heure

TODAY

CURRENT_DATE()

Date et heure

YEAR

YEAR

Date et heure

MONTH

MONTH

Date et heure

DAY

DAY

Date et heure

DATEVALUE

TO_DATE

Date et heure

DATETIMEVALUE

TO_TIMESTAMP

Date et heure

ADDMONTHS

DATEADD(MONTH, ...)

Liste de sélection

ISPICKVAL

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

Outre les fonctions, les opérateurs suivants sont pris en charge :

  • Arithmétique : +, -, *, /, ^ (exponentiation, traduite en POWER)

  • Comparaison : =, ==, !=, <>, <, <=, >, >=

  • Logique : AND, OR, &&, ||

  • Concaténation de chaînes :& (transformé en || avec traitement des nuls COALESCE)

  • Unaire :- (négation), NOT

Constructions de formule non prises en charge

Les constructions de formule suivantes ne sont pas encore prises en charge. La prise en charge de fonctions et de constructions supplémentaires sera ajoutée dans les prochaines versions. Lorsqu’une formule utilise l’un de ces éléments, la colonne correspondante de la vue renvoie NULL et le commentaire de la colonne indique la raison de l’échec.

Motif d’échec

Description

FUNCTION_NOT_SUPPORTED

La formule utilise une fonction qui n’a pas d’équivalent dans Snowflake ou qui est spécifique à l’UI Salesforce. Cela inclut : IMAGE, HYPERLINK, URLFOR, HTMLENCODE, JSENCODE, LINKTO, GEOLOCATION, DISTANCE, VLOOKUP, REGEX, PREDICT, GETSESSIONID, GETRECORDIDS, REQUIRESCRIPT, ISCHANGED, ISNEW, ISCLONE, PRIORVALUE.

GLOBAL_VARIABLE_NOT_SUPPORTED

La formule fait référence à une variable globale de Salesforce telle que $User.Name ,``$Organization.Name`` ou``$Profile.Name``. Ces variables n’ont pas d’équivalent dans Snowflake.

FORMULA_CHAIN_NOT_SUPPORTED

La formule fait référence à un autre champ de formule. Les références de formule chaînées (un champ de formule qui dépend d’un autre champ de formule) ne sont pas prises en charge.

ROLLUP_NOT_SUPPORTED

Le champ est un champ de résumé de cumul plutôt qu’un champ de formule. Les résumés de cumul agrègent les données des enregistrements enfants et ne peuvent pas être exprimés sous la forme d’une simple vue SQL.

LOOKUP_NOT_SYNCED

La formule fait référence à une relation qui ne peut pas être résolue à partir des métadonnées d’objet Salesforce. Cela se produit généralement lorsque le nom de la relation dans la formule ne correspond à aucune relation connue sur l’objet.

ID_FORMAT_MISMATCH

La formule contient un ID Salesforce de 15 caractères codés en dur. Salesforce utilise des IDs de 15 caractères en interne, mais l’API en masse renvoie des IDs de18 caractères. Les formats avec des IDs de 15 caractères codés en dur ne peuvent pas être traduit de manière fiable.

COMPOUND_FIELD_REFERENCE

La formule fait référence à un champ composé (tel que``MailingAddress``) qui n’est pas stocké comme une seule colonne dans Snowflake.

PARSE_ERROR

Impossible d’analyser l’expression de la formule. Cela peut indiquer une syntaxe que le connecteur ne reconnaît pas encore.

UNSUPPORTED_SYNTAX

La formule utilise une construction syntaxique reconnue mais non traduite (par exemple, une fonction IF avec moins de trois arguments).