Openflow Connector for Salesforce Bulk API: Salesforce-Formelfelder

Unter diesem Thema wird beschrieben, wie die Openflow Connector for Salesforce Bulk API die Salesforce-Formelfelder in Snowflake SQL-Ansichten übersetzt, einschließlich unterstützter Funktionen und Einschränkungen.

Funktionsweise von Formelansichten

Wenn Enable Views Creation auf true eingestellt ist, führt der Konnektor für jedes Objekt, das Formelfelder enthält, Folgendes aus:

  1. Ruft die Formelausdrücke aus den Salesforce-Objekt-Metadaten über die Describe-API ab.

  2. Analysiert jeden Formelausdruck und übersetzt ihn in die entsprechende Snowflake SQL.

  3. Erzeugt eine CREATE OR REPLACE VIEW-Anweisung, die Nicht-Formel-Spalten aus der Basistabelle mit den übersetzten Formelausdrücken als berechnete Spalten kombiniert.

  4. Führt die DDL mit Snowflake aus, um die Ansicht zu erstellen oder zu aktualisieren.

Die resultierende Ansicht heißt <Object Type>_FORMULA_VW. Beispiel: Das Account-Objekt erzeugt eine Ansicht namens ACCOUNT_FORMULA_VW. Sie können diese Ansicht abfragen, um neben den replizierten Daten auch die Werte der Formelfelder zu erhalten.

Die Ansicht wird automatisch aktualisiert, wenn der Konnektor Schemaänderungen im Quellobjekt feststellt, wodurch sichergestellt wird, dass die Formeldefinitionen mit Salesforce synchron bleiben.

Objektübergreifende Formelfelder

Salesforce-Formeln können auf Felder von verwandten Objekten verweisen, indem Sie das Durchlaufen einer Beziehung verwenden (z. B. Account.Owner.Name). Der Konnektor unterstützt diese objektübergreifenden Referenzen, indem er LEFT JOIN-Klauseln in der Definition der Ansicht generiert. Bei jedem Durchlaufen einer Beziehung wird eine Verknüpfung (Join) mit der entsprechenden zugehörigen Tabelle in Snowflake erzeugt.

Damit objektübergreifende Formeln korrekt funktionieren, müssen die zugehörigen Objekte ebenfalls vom Konnektor repliziert werden. Der Konnektor prüft nicht, ob die referenzierten Tabellen zum Zeitpunkt der Übersetzung in Snowflake vorhanden sind. Wenn kein zugehöriges Objekt synchronisiert wird, verweist die generierte CREATE OR REPLACE VIEW-Anweisung auf eine Tabelle, die in Snowflake nicht vorhanden ist, und die Erstellung der Ansicht schlägt fehl. Um dieses Problem zu beheben, stellen Sie sicher, dass alle zugehörigen Objekte, auf die von Formelfeldern verwiesen wird, im Parameter Filter enthalten sind. Die Ansicht wird bei der nächsten Ausführung des Konnektors automatisch neu erstellt, nachdem die referenzierten Tabellen vorhanden sind.

Kommentare zur Formelansichtsspalte

Jede Formelspalte in der generierten Ansicht enthält eine SQL COMMENT-Anmerkung:

  • Bei erfolgreich übersetzten Formeln enthält der Kommentar den ursprünglichen Ausdruck der Salesforce-Formel.

  • Bei Formeln, die nicht übersetzt werden konnten, enthält der Kommentar den Code der Fehlerursache.

Sie können diese Kommentare prüfen, indem Sie DESCRIBE VIEW <view_name> in Snowflake ausführen.

Unterstützte Formelfunktionen

Die folgenden Salesforce-Formelfunktionen werden in die entsprechende Snowflake SQL übersetzt:

Kategorie

Salesforce-Funktion

Snowflake–Äquivalent

Logisch

IF

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

Logisch

CASE

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

Logisch

AND / OR / NOT

AND / OR / NOT

Behandlung von Nullwerten

ISBLANK

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

Behandlung von Nullwerten

ISNULL

expr IS NULL

Behandlung von Nullwerten

NULLVALUE

COALESCE

Behandlung von Nullwerten

BLANKVALUE

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

Text

LEFT

LEFT

Text

RIGHT

RIGHT

Text

MID

SUBSTR

Text

LEN

LENGTH

Text

SUBSTITUTE

REPLACE

Text

TRIM

TRIM

Text

UPPER

UPPER

Text

LOWER

LOWER

Text

CONTAINS

CONTAINS

Text

BEGINS

STARTSWITH

Text

FIND

CHARINDEX

Text

LPAD

LPAD

Text

RPAD

RPAD

Text

BR

Literal für Zeilenumbruch

Konvertierung

TEXT

CAST(... AS STRING)

Konvertierung

VALUE

TRY_CAST(... AS NUMBER)

Mathematik

ABS

ABS

Mathematik

ROUND

ROUND

Mathematik

CEILING

CEIL

Mathematik

FLOOR

FLOOR

Mathematik

MOD

MOD

Mathematik

SQRT

SQRT

Mathematik

MAX

GREATEST

Mathematik

MIN

LEAST

Mathematik

LOG

LOG(10, ...)

Mathematik

EXP

EXP

Mathematik

LN

LN

Datum und Uhrzeit

NOW

CURRENT_TIMESTAMP()

Datum und Uhrzeit

TODAY

CURRENT_DATE()

Datum und Uhrzeit

YEAR

YEAR

Datum und Uhrzeit

MONTH

MONTH

Datum und Uhrzeit

DAY

DAY

Datum und Uhrzeit

DATEVALUE

TO_DATE

Datum und Uhrzeit

DATETIMEVALUE

TO_TIMESTAMP

Datum und Uhrzeit

ADDMONTHS

DATEADD(MONTH, ...)

Auswahlliste

ISPICKVAL

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

Zusätzlich zu den Funktionen werden die folgenden Operatoren unterstützt:

  • Arithmetik: +, -, *, /, ^ (Potenzierung, übersetzt in POWER)

  • Vergleich: =, ==, !=, <>, <, <=, >, >=

  • Logisch: AND, OR, &&, ||

  • Zeichenfolgenverkettung: & (übersetzt in || mit COALESCE-Nullwertbehandlung)

  • Unär: - (Negation), NOT

Nicht unterstützte Formelkonstrukte

Die folgenden Formelkonstrukte werden noch nicht unterstützt. Die Unterstützung für weitere Funktionen und Konstrukte wird in zukünftigen Releases hinzugefügt. Wenn eine Formel eine dieser Optionen verwendet, gibt die entsprechende Spalte in der Ansicht den Wert NULL zurück, und der Kommentar zur Spalte gibt die Fehlerursache an.

Fehlerursache

Beschreibung

FUNCTION_NOT_SUPPORTED

Die Formel verwendet eine Funktion, die kein Snowflake-Äquivalent hat oder die spezifisch für die Salesforce-UI ist. Dies beinhaltet: IMAGE, HYPERLINK, URLFOR, HTMLENCODE, JSENCODE, LINKTO, GEOLOCATION, DISTANCE, VLOOKUP, REGEX, PREDICT, GETSESSIONID, GETRECORDIDS, REQUIRESCRIPT, ISCHANGED, ISNEW, ISCLONE, PRIORVALUE.

GLOBAL_VARIABLE_NOT_SUPPORTED

Die Formel verweist auf eine globale Salesforce-Variable, wie beispielsweise $User.Name, $Organization.Name oder $Profile.Name. Diese Variablen haben in Snowflake keine Entsprechung.

FORMULA_CHAIN_NOT_SUPPORTED

Die Formel verweist auf ein anderes Formelfeld. Verkettete Formelreferenzen (ein Formelfeld, das von einem anderen Formelfeld abhängt) werden nicht unterstützt.

ROLLUP_NOT_SUPPORTED

Das Feld ist ein Rollup-Zusammenfassungsfeld und kein Formelfeld. Rollup-Zusammenfassungen aggregieren Daten aus untergeordneten Datensätzen und können nicht als einfache SQL-Ansicht ausgedrückt werden.

LOOKUP_NOT_SYNCED

Die Formel verweist auf eine Beziehung, die nicht aus den Metadaten des Salesforce-Objekts aufgelöst werden kann. Dies tritt typischerweise auf, wenn der Beziehungsname in der Formel mit keiner bekannten Beziehung des Objekts übereinstimmt.

ID_FORMAT_MISMATCH

Die Formel enthält eine hartcodierte 15-stellige Salesforce-ID. Salesforce verwendet intern 15-stellige IDs, aber die Bulk-API gibt 18-stellige IDs zurück. Formeln mit hartcodierten 15-stelligen IDs können nicht zuverlässig übersetzt werden.

COMPOUND_FIELD_REFERENCE

Die Formel verweist auf ein zusammengesetztes Feld (wie beispielsweise MailingAddress), das in Snowflake nicht als eine einzelne Spalte gespeichert wird.

PARSE_ERROR

Der Formelausdruck konnte nicht analysiert werden. Dies könnte auf eine Syntax hinweisen, die der Konnektor noch nicht erkennt.

UNSUPPORTED_SYNTAX

Die Formel verwendet ein Syntaxkonstrukt, das erkannt wird, aber nicht übersetzt werden kann (z. B. eine IF-Funktion mit weniger als drei Argumenten).