Marketing Cloud Account Engagement – der Pardot Classic Editor ist besser als sein Lightning-Nachfolger
22. Juli 2024Salesforce Marketing Cloud – SQL Besonderheiten & Tipps Teil 2
2. August 2024Salesforce Marketing Cloud
SQL-Besonderheiten & Tipps Teil I
Das Erstellen von Datenbankabfragen mit SQL ist eine alltägliche Arbeit in Salesforce Marketing Cloud (SFMC). Damit lassen sich Daten aus verschiedenen Data Extensions und Data Views einfach abrufen, kombinieren oder filtern. Die Verwendung von SQL in SFMC bietet leistungsstarke Möglichkeiten zur Datenverarbeitung und -analyse, bringt jedoch auch einige Besonderheiten mit sich, die User kennen sollten.
SQL in Salesforce Marketing Cloud – Keine Fehler, aber dennoch falsche Ergebnisse?
Neben technischen und funktionalen Einschränkungen von SQL in Marketing Cloud kann es passieren, dass Abfragen zwar ohne Fehler ausgeführt werden, weil die Syntax korrekt ist, aber dennoch nicht die gewünschten oder plausiblen Ergebnisse liefern. Diese Diskrepanz bleibt oft unbemerkt und kann zu unerwarteten Resultaten führen. Wir möchten zwei solcher „Fallen“ vorstellen und Tipps geben, wie man sie vermeiden kann.
Falle 1: Zeitzonen bei SQL-Abfragen in Salesforce Marketing Cloud
Datumsangaben werden häufig genutzt, um die Grundgesamtheit von Data Extensions oder Data Views auf einen relevanten Bereich einzugrenzen. Eine gängige Bedingung sieht etwa so aus:
CONVERT(DATETIME, SubscriptionDate) > DATEADD(HOUR, -2, GETDATE())
Doch Vorsicht: Beim Vergleichen von zwei Datumsangaben gibt es etwas Wichtiges zu beachten – die Zeitzone!
Warum liefert meine SQL Datenbankabfrage falsche Ergebnisse trotz korrekter Syntax?
In unserem Beispiel wird das Feld „SubscriptionDate“ aus einer Data Extension abgefragt, um Kontakte herauszufiltern, die innerhalb der letzten zwei Stunden einen Newsletter abonniert haben. Der Teil DATEADD(HOUR, -2, GETDATE()) verwendet die GETDATE()-Funktion, um das aktuelle Datum mitsamt Uhrzeit festzustellen. Von diesem werden dann zwei Stunden subtrahiert.
Wir vergleichen also ein Datum, das in einer Data Extension gespeichert ist, mit einem Datum, welches durch eine Funktion generiert wurde. Hier ist es entscheidend zu wissen: SQL-Funktionen wie GETDATE() und TODAY() geben das Ergebnis immer in der Zeitzone „Central America Standard Time“ (CAST) zurück. Gleiches gilt für Datumsangaben in Data Views. Dies kann dazu führen, dass man in Abfragen zwei Datumsangaben miteinander vergleicht, die sich nicht in derselben Zeitzone befinden.
Zeitzonenunterschiede bei SQL-Abfragen in Marketing Cloud lösen
Zunächst müssen Sie wissen, in welcher Zeitzone das Feld „SubscriptionDate“ in der Data Extension gespeichert ist. Dies kann je nach Herkunft des Felds variieren. Wenn das Feld z.B. über API in die SFMC importiert wird, kann es gut sein, dass Ihnen das Feld in Ihrer regionalen Zeitzone vorliegt. Nehmen wir an, das Feld „SubscriptionDate“ ist in Ihrer regionalen Zeitzone gespeichert, z.B. in „Central European Standard Time“ (CEST), wie sie in Deutschland gilt. Weil CAST keine Zeitumstellung beachtet, liegt CAST in der Sommerzeit 8 Stunden und während der Winterzeit 7 Stunden hinter CEST zurück. Wenn Sie die obige Abfrage um 14:30 Uhr CEST (im Sommer) ausführen, würden Sie alle Abonnenten erhalten, die seit 04:30 Uhr CEST (also über einen Zeitraum der letzten 10 Stunden: die gewünschte zwei Stunden-Spanne plus 8 Stunden Zeitverschiebung) eingetroffen sind. Das gewünschte Ergebnis – die Kontakte, welche innerhalb der letzten zwei Stunden abonniert haben – wird somit nicht erreicht. Eine Fehlermeldung erhalten Sie hierbei nicht, da kein logischer oder Syntaxfehler vorliegt.
Die Lösung: AT TIME ZONE in SQL-Abfragen nutzen
Die Funktion AT TIME ZONE erlaubt es, Datumsangaben aus ihrer derzeitigen Zeitzone in eine andere zu konvertieren. Die Anpassung in unserem Beispiel würde dann so aussehen:
Hierbei bleibt „SubscriptionDate“ unverändert, da es bereits in der richtigen Zeitzone vorliegt. Die rechte Seite der Gleichung wird auf folgende Weise angepasst: Die erste „AT TIME ZONE“-Deklaration legt fest, in welcher Zeitzone sich das Datum aktuell befindet (CAST). Die zweite Anweisung gibt an, in welche Zeitzone das Datum konvertiert werden soll (CEST). Auf diese Weise wird sichergestellt, dass die Angaben auf beiden Seiten der Gleichung dieselbe Zeitzone nutzen.
Wir hoffen, dass Ihnen dieser Tipp zur Anpassung von Zeitzonen bei der Abfrage und dem Vergleich von Daten hilfreich war. Im nächsten Teil werden wir die SQL-Funktion „UNION“ näher betrachten und erläutern, worauf Sie bei der Anwendung dieser in der Marketing Cloud besonders achten sollten.
Marketing Cloud Professional Services
Erfahren Sie mehr über unsere Marketing Cloud-Services: von der technischen Implementierung und Integration bis hin zur Umsetzung datengetriebener Cross-Channel Kampagnen – wir bieten Ihnen die komplette Bandbreite an Beratung und Agentur-Dienstleistungen.