Openflow Connector for Salesforce Bulk API: Salesforce-Formelfelder¶
Bemerkung
Dieser Connector unterliegt den `Nutzungsbedingungen für Snowflake Connector<https://www.snowflake.com/legal/snowflake-connector-terms/>`_.
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:
Ruft die Formelausdrücke aus den Salesforce-Objekt-Metadaten über die Describe-API ab.
Analysiert jeden Formelausdruck und übersetzt ihn in die entsprechende Snowflake SQL.
Erzeugt eine
CREATE OR REPLACE VIEW-Anweisung, die Nicht-Formel-Spalten aus der Basistabelle mit den übersetzten Formelausdrücken als berechnete Spalten kombiniert.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 |
|
|
Logisch |
|
|
Logisch |
|
|
Behandlung von Nullwerten |
|
|
Behandlung von Nullwerten |
|
|
Behandlung von Nullwerten |
|
|
Behandlung von Nullwerten |
|
|
Text |
|
|
Text |
|
|
Text |
|
|
Text |
|
|
Text |
|
|
Text |
|
|
Text |
|
|
Text |
|
|
Text |
|
|
Text |
|
|
Text |
|
|
Text |
|
|
Text |
|
|
Text |
|
Literal für Zeilenumbruch |
Konvertierung |
|
|
Konvertierung |
|
|
Mathematik |
|
|
Mathematik |
|
|
Mathematik |
|
|
Mathematik |
|
|
Mathematik |
|
|
Mathematik |
|
|
Mathematik |
|
|
Mathematik |
|
|
Mathematik |
|
|
Mathematik |
|
|
Mathematik |
|
|
Datum und Uhrzeit |
|
|
Datum und Uhrzeit |
|
|
Datum und Uhrzeit |
|
|
Datum und Uhrzeit |
|
|
Datum und Uhrzeit |
|
|
Datum und Uhrzeit |
|
|
Datum und Uhrzeit |
|
|
Datum und Uhrzeit |
|
|
Auswahlliste |
|
|
Zusätzlich zu den Funktionen werden die folgenden Operatoren unterstützt:
Arithmetik:
+,-,*,/,^(Potenzierung, übersetzt inPOWER)Vergleich:
=,==,!=,<>,<,<=,>,>=Logisch:
AND,OR,&&,||Zeichenfolgenverkettung:
&(übersetzt in||mitCOALESCE-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 |
|---|---|
|
Die Formel verwendet eine Funktion, die kein Snowflake-Äquivalent hat oder die spezifisch für die Salesforce-UI ist. Dies beinhaltet: |
|
Die Formel verweist auf eine globale Salesforce-Variable, wie beispielsweise |
|
Die Formel verweist auf ein anderes Formelfeld. Verkettete Formelreferenzen (ein Formelfeld, das von einem anderen Formelfeld abhängt) werden nicht unterstützt. |
|
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. |
|
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. |
|
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. |
|
Die Formel verweist auf ein zusammengesetztes Feld (wie beispielsweise |
|
Der Formelausdruck konnte nicht analysiert werden. Dies könnte auf eine Syntax hinweisen, die der Konnektor noch nicht erkennt. |
|
Die Formel verwendet ein Syntaxkonstrukt, das erkannt wird, aber nicht übersetzt werden kann (z. B. eine |