Integration mit Salesforce (SFDC)

Auf dieser Seite werden die Integrationsschritte für die operative Salesforce-Arbeitslast (SFDC) in der Data Foundation des Cortex Framework beschrieben. Im Cortex Framework werden Daten aus Salesforce über Dataflow-Pipelines in BigQuery eingebunden. Cloud Composer plant und überwacht diese Dataflow-Pipelines, um Erkenntnisse aus Ihren Daten zu gewinnen.

Konfigurationsdatei

In der Datei config.json im Cortex Framework Data Foundation-Repository werden die Einstellungen konfiguriert, die für die Übertragung von Daten aus einer beliebigen Datenquelle, einschließlich Salesforce, erforderlich sind. Diese Datei enthält die folgenden Parameter für operative Salesforce-Arbeitslasten:

    "SFDC": {
        "deployCDC": true,
        "createMappingViews": true,
        "createPlaceholders": true,
        "datasets": {
            "cdc": "",
            "raw": "",
            "reporting": "REPORTING_SFDC"
        }
    }

In der folgenden Tabelle wird der Wert für jeden SFDC-Betriebsparameter beschrieben:

Parameter Bedeutung Standardwert Beschreibung
SFDC.deployCDC CDC bereitstellen true CDC-Verarbeitungsskripts generieren, die als DAGs in Cloud Composer ausgeführt werden. Weitere Informationen zu den verschiedenen Erfassungsoptionen für Salesforce Sales Cloud finden Sie in der Dokumentation.
SFDC.createMappingViews Zuordnungsansichten erstellen true Die bereitgestellten DAGs zum Abrufen neuer Datensätze aus den Salesforce-APIs aktualisieren Datensätze bei der Landung. Wenn dieser Wert auf „true“ gesetzt ist, werden Ansichten im CDC-verarbeiteten Dataset generiert, um Tabellen mit der „neuesten Version der Wahrheit“ aus dem Roh-Dataset verfügbar zu machen. Wenn „false“ und SFDC.deployCDC gleich true ist, werden DAGs mit CDC-Verarbeitung (Change Data Capture) basierend auf „SystemModstamp“ generiert. Weitere Informationen zur CDC-Verarbeitung für Salesforce
SFDC.createPlaceholders Platzhalter erstellen true Erstellen Sie leere Platzhaltertabellen, falls sie nicht durch den Aufnahmeprozess generiert werden, damit die nachgelagerte Bereitstellung von Berichten ohne Fehler ausgeführt werden kann.
SFDC.datasets.raw Rohdaten-Dataset für die Landingpage - Hier werden die Daten aus Salesforce vom Replikationstool abgelegt. Wenn Sie Testdaten verwenden, erstellen Sie ein leeres Dataset.
SFDC.datasets.cdc CDC-Dataset - Dataset, das als Quelle für die Berichtsansichten und als Ziel für die DAGs für die Verarbeitung von Datensätzen dient. Wenn Sie Testdaten verwenden, erstellen Sie ein leeres Dataset.
SFDC.datasets.reporting Berichts-Dataset SFDC "REPORTING_SFDC" Name des Datasets, auf das Endnutzer für Berichte zugreifen können und in dem Ansichten und nutzerorientierte Tabellen bereitgestellt werden.
SFDC.currencies Währungen filtern [ "USD" ] Wenn Sie keine Testdaten verwenden, geben Sie eine einzelne Währung (z. B. [ "USD" ]) oder mehrere Währungen (z. B. [ "USD", "CAD" ]) ein, je nach Bedarf für Ihr Unternehmen. Diese Werte werden verwendet, um Platzhalter in SQL in Analysemodellen zu ersetzen, sofern verfügbar.

Datenmodell

In diesem Abschnitt wird das Salesforce-Datenmodell (SFDC) anhand des Entity-Relationship-Diagramms (ERD) beschrieben.

Entitätsbeziehungsdiagramm für SFDC

Abbildung 2: Salesforce (SFDC): Entity-Relationship-Diagramm.

Basisansichten

Das sind die blauen Objekte im ERD. Sie sind Ansichten von CDC-Tabellen ohne Transformationen, abgesehen von einigen Aliasen für Spaltennamen. Scripts finden Sie unter src/SFDC/src/reporting/ddls.

Berichtsdatenansichten

Das sind die grünen Objekte im ERD, die die relevanten Dimensionsattribute enthalten, die von den Berichtstabellen verwendet werden. Scripts finden Sie unter src/SFDC/src/reporting/ddls.

Anforderungen an Salesforce-Daten

In diesem Abschnitt wird beschrieben, wie Ihre Salesforce-Daten für die Verwendung mit dem Cortex Framework strukturiert sein müssen.

  • Tabellenstruktur:
    • Benennung:Tabellennamen verwenden snake_case (durch Unterstriche getrennte Wörter in Kleinbuchstaben) und stehen im Plural. Beispiel: some_objects
    • Datentypen:Spalten behalten dieselben Datentypen bei wie in Salesforce.
    • Lesbarkeit:Einige Feldnamen werden möglicherweise leicht angepasst, um die Übersichtlichkeit in der Berichtsebene zu verbessern.
  • Leere Tabellen und Bereitstellung:Alle erforderlichen Tabellen, die im Rohdatensatz fehlen, werden während der Bereitstellung automatisch als leere Tabellen erstellt. So wird eine reibungslose Ausführung des CDC-Bereitstellungsschritts gewährleistet.
  • CDC-Anforderungen:Die Felder Id und SystemModstamp sind wichtig, damit CDC-Scripts Änderungen an Ihren Daten erfassen können. Sie können genau diese Namen oder andere Namen haben. Die bereitgestellten Rohdatenverarbeitungsskripts rufen diese Felder automatisch aus den APIs ab und aktualisieren die Zielreplikationstabelle.
    • Id: Dies dient als eindeutige Kennung für jeden Datensatz.
    • SystemModstamp: In diesem Feld wird ein Zeitstempel gespeichert, der angibt, wann ein Datensatz zuletzt geändert wurde.
  • Scripts für die Rohdatenverarbeitung:Für die bereitgestellten Scripts für die Rohdatenverarbeitung ist keine zusätzliche (CDC-)Verarbeitung erforderlich. Dieses Verhalten wird standardmäßig bei der Bereitstellung festgelegt.

Quelltabellen für die Währungsumrechnung

In Salesforce können Sie Währungen auf zwei Arten verwalten:

  • Einfach:Dies ist die Standardeinstellung. Alle Daten werden in einer einzigen Währung angegeben.
  • Erweitert: Hier werden mehrere Währungen basierend auf Wechselkursen umgerechnet. Dazu muss die erweiterte Währungsverwaltung aktiviert sein.

Wenn Sie die erweiterte Währungsverwaltung verwenden, werden in Salesforce zwei spezielle Tabellen verwendet:

  • CurrencyTypes: In dieser Tabelle werden Informationen zu den verschiedenen Währungen gespeichert, die Sie verwenden (z. B. USD, EUR usw.).
  • DatedConversionRates: Diese Tabelle enthält die Wechselkurse zwischen Währungen im Zeitverlauf.

Cortex Framework setzt voraus, dass diese Tabellen vorhanden sind, wenn Sie die erweiterte Währungsverwaltung verwenden. Wenn Sie die erweiterte Währungsverwaltung nicht verwenden, können Sie Einträge für diese Tabellen aus einer Konfigurationsdatei (src/SFDC/config/ingestion_settings.yaml) entfernen. So werden unnötige Versuche verhindert, Daten aus nicht vorhandenen Tabellen zu extrahieren.

SFDC-Daten in BigQuery laden

Das Cortex Framework bietet eine Replikationslösung, die auf Python-Skripten basiert, die in Apache Airflow und der Salesforce Bulk API 2.0 geplant sind. Diese Python-Skripts können angepasst und in Ihrem bevorzugten Tool geplant werden. Weitere Informationen finden Sie unter SFDC-Extraktionsmodul.

Cortex Framework bietet außerdem drei verschiedene Methoden zum Einbinden Ihrer Daten, je nachdem, woher sie stammen und wie sie verwaltet werden:

  1. API-Aufrufe:Diese Option ist für Daten vorgesehen, auf die direkt über eine API zugegriffen werden kann. Cortex Framework kann die API aufrufen, die Daten abrufen und in einem „Raw“-Dataset in BigQuery speichern. Wenn im Dataset bereits Datensätze vorhanden sind, können sie vom Cortex Framework mit den neuen Daten aktualisiert werden.
  2. Ansichten für die Strukturzuordnung:Diese Methode ist nützlich, wenn Sie Ihre Daten bereits mit einem anderen Tool in BigQuery geladen haben, die Datenstruktur jedoch nicht den Anforderungen des Cortex Framework entspricht. Im Cortex Framework werden „Ansichten“ (wie virtuelle Tabellen) verwendet, um die vorhandene Datenstruktur in das Format zu übersetzen, das für die Berichtsfunktionen des Cortex Framework erwartet wird.
  3. CDC-Verarbeitungsskripts (Change Data Capture):Diese Option ist speziell für Daten konzipiert, die sich ständig ändern. CDC-Scripts verfolgen diese Änderungen und aktualisieren die Daten in BigQuery entsprechend. Diese Skripts basieren auf zwei speziellen Feldern in Ihren Daten:

    • Id: Eindeutige Kennung für jeden Datensatz.
    • SystemModstamp: Ein Zeitstempel, der angibt, wann ein Datensatz geändert wurde.

    Wenn Ihre Daten nicht genau diese Namen haben, können die Scripts so angepasst werden, dass sie sie mit anderen Namen erkennen. Sie können Ihrem Datenschema während dieses Vorgangs auch benutzerdefinierte Felder hinzufügen. Die Quelltabelle mit Daten des Account-Objekts sollte beispielsweise die ursprünglichen Felder Id und SystemModstamp enthalten. Wenn diese Felder unterschiedliche Namen haben, muss die Datei src/SFDC/src/table_schema/accounts.csv mit dem Namen des Felds Id, das AccountId zugeordnet ist, und dem Zeitstempelfeld für Systemänderungen, das SystemModstamp zugeordnet ist, aktualisiert werden. Weitere Informationen finden Sie in der Dokumentation zu SystemModStamp.

Wenn Sie Daten bereits über ein anderes Tool geladen haben und diese ständig aktualisiert werden, kann Cortex sie trotzdem verwenden. Die CDC-Scripts enthalten Zuordnungsdateien, mit denen Ihre vorhandene Datenstruktur in das Format übersetzt werden kann, das für Cortex Framework erforderlich ist. Sie können Ihren Daten während dieses Vorgangs sogar benutzerdefinierte Felder hinzufügen.

API‑Integration und CDC konfigurieren

So können Sie Ihre Salesforce-Daten in BigQuery übertragen:

  1. Cortex-Scripts für API-Aufrufe: Hier finden Sie Replikationsscripts für Salesforce oder ein Datenreplikationstool Ihrer Wahl.Wichtig ist, dass die importierten Daten so aussehen, als wären sie von den Salesforce-APIs.
  2. Replikationstool und „Immer anhängen“ : Wenn Sie ein Tool für die Replikation verwenden, ist dies die Methode für ein Tool, das entweder neue Datensätze hinzufügen (_appendalways_pattern) oder vorhandene Datensätze aktualisieren kann.
  3. Replikationstool und neue Datensätze hinzufügen: Wenn das Tool die Datensätze nicht aktualisiert und alle Änderungen als neue Datensätze in eine Zieltabelle (Rohdaten) repliziert, bietet Cortex Data Foundation die Möglichkeit, CDC-Verarbeitungsskripts zu erstellen. Weitere Informationen finden Sie unter „CDC-Prozess“.

Salesforce-Workload: Optionen für die Datenintegration

Abbildung 1. Salesforce-Arbeitslast: Optionen für die Datenintegration.

Damit Ihre Daten den Erwartungen von Cortex Framework entsprechen, können Sie die Zuordnungskonfiguration an Ihr Replikationstool oder vorhandene Schemata anpassen. Dadurch werden Zuordnungsansichten generiert, die mit der von Cortex Framework Data Foundation erwarteten Struktur kompatibel sind.

Verwenden Sie die Datei ingestion_settings.yaml, um die Generierung von Skripts zum Aufrufen der Salesforce-APIs und zum Replizieren der Daten in das Rohdatenset (Abschnitt salesforce_to_raw_tables) sowie die Generierung von Skripts zum Verarbeiten von Änderungen zu konfigurieren, die im Rohdatenset und im CDC-verarbeiteten Datenset (Abschnitt raw_to_cdc_tables) eingehen.

Standardmäßig werden die Änderungen in den bereitgestellten Skripten zum Lesen aus APIs im Rohdatensatz aktualisiert. Daher sind keine CDC-Verarbeitungsskripts erforderlich. Stattdessen werden Mapping-Ansichten erstellt, um das Quellschema an das erwartete Schema anzupassen.

Die Generierung von CDC-Verarbeitungsskripts wird nicht ausgeführt, wenn SFDC.createMappingViews=true in der config.json (Standardverhalten). Wenn CDC-Scripts erforderlich sind, legen Sie SFDC.createMappingViews=false fest. In diesem zweiten Schritt können auch die Quellschemata den erforderlichen Schemata zugeordnet werden, wie es von der Cortex Framework Data Foundation gefordert wird.

Das folgende Beispiel für eine setting.yaml-Konfigurationsdatei veranschaulicht die Generierung von Mapping-Ansichten, wenn ein Replikationstool die Daten direkt in das replizierte Dataset aktualisiert, wie in option 3 dargestellt. Das bedeutet, dass kein CDC erforderlich ist, sondern nur eine Neuzuordnung von Tabellen und Feldnamen. Da kein CDC erforderlich ist, wird diese Option ausgeführt, solange der Parameter SFDC.createMappingViews in der Datei „config.json“ auf true gesetzt ist.

  salesforce_to_raw_tables:
  - base_table: accounts
    raw_table: Accounts
    api_name: Account
      load_frequency: "@daily"
  - base_table: cases
    raw_table: cases2
    api_name: Case
    load_frequency: "@daily"

Wenn Sie in diesem Beispiel die Konfiguration für eine Basistabelle oder alle Basistabellen aus den Abschnitten entfernen, wird die Generierung von DAGs für diese Basistabelle oder den gesamten Abschnitt übersprungen, wie für salesforce_to_raw_tables veranschaulicht. In diesem Fall hat das Festlegen des Parameters deployCDC : False dieselbe Wirkung, da keine CDC-Verarbeitungsskripts generiert werden müssen.

Datenabgleich

Sie müssen eingehende Datenfelder dem Format zuordnen, das von Cortex Data Foundation erwartet wird. Ein Feld namens unicornId aus Ihrem Quelldatensystem sollte beispielsweise umbenannt und als AccountId (mit einem Stringdatentyp) in Cortex Data Foundation erkannt werden:

  • Quellfeld: unicornId (Name im Quellsystem)
  • Cortex-Feld: AccountId (von Cortex erwarteter Name)
  • Datentyp: String (von Cortex erwarteter Datentyp)

Polymorphe Felder zuordnen

Die Data Foundation des Cortex Framework unterstützt die Zuordnung polymorpher Felder. Das sind Felder, deren Name variieren kann, deren Struktur jedoch konsistent bleibt. Polymorphe Feldtypenamen (z. B. Who.Type) können repliziert werden, indem Sie in den entsprechenden CSV-Dateien für die Zuordnung ein [Field Name]_Type-Element hinzufügen: src/SFDC/src/table_schema/tasks.csv. Wenn Sie beispielsweise das Feld Who.Type des Objekts Task replizieren müssen, fügen Sie die Zeile Who_Type,Who_Type,STRING hinzu. Dadurch wird ein neues Feld namens Who.Type definiert, das sich selbst zuordnet (derselbe Name bleibt erhalten) und den Datentyp „String“ hat.

DAG-Vorlagen ändern

Möglicherweise müssen Sie die DAG-Vorlagen für CDC oder für die Rohdatenverarbeitung an Ihre Airflow- oder Cloud Composer-Instanz anpassen. Weitere Informationen finden Sie unter Cloud Composer-Einstellungen erfassen.

Wenn Sie keine CDC oder Rohdatengenerierung aus API-Aufrufen benötigen, legen Sie deployCDC=false fest. Alternativ können Sie die Inhalte der Abschnitte in ingestion_settings.yaml entfernen. Wenn die Datenstrukturen mit den von Cortex Framework Data Foundation erwarteten Strukturen übereinstimmen, können Sie das Generieren von Zuordnungssichten überspringen, indem Sie SFDC.createMappingViews=false festlegen.

Extraktionsmodul konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie das von Data Foundation bereitgestellte Salesforce-zu-BigQuery-Extraktionsmodul verwenden. Ihre Anforderungen und Ihr Ablauf können je nach System und vorhandener Konfiguration variieren. Alternativ können Sie auch andere verfügbare Tools verwenden.

Anmeldedaten und verbundene App einrichten

Melden Sie sich als Administrator bei Ihrer Salesforce-Instanz an, um Folgendes auszuführen:

  1. Erstellen oder identifizieren Sie ein Profil in Salesforce, das die folgenden Anforderungen erfüllt:
    1. Permission for Apex REST Services and API Enabled wird unter Systemberechtigungen gewährt.
    2. Die Berechtigung View All wird für alle Objekte erteilt, die Sie replizieren möchten. Beispiele: „Konto“ und „Fälle“. Wenden Sie sich an Ihren Sicherheitsadministrator, um Einschränkungen oder Probleme zu prüfen.
    3. Es wurden keine Berechtigungen für die Anmeldung über die Benutzeroberfläche erteilt, z. B. für Salesforce Anywhere in Lightning Experience, Salesforce Anywhere Mobile, Lightning Experience-Nutzer und Lightning-Anmeldenutzer. Wenden Sie sich an Ihren Sicherheitsadministrator, um zu prüfen, ob es Einschränkungen oder Probleme gibt.
  2. Erstellen Sie einen Nutzer in Salesforce oder verwenden Sie einen vorhandenen Nutzer. Sie benötigen den Nutzernamen, das Passwort und das Sicherheitstoken des Nutzers. Beachten Sie dabei Folgendes:
    • Im Idealfall sollte es sich um einen Nutzer handeln, der speziell für die Ausführung dieser Replikation vorgesehen ist.
    • Der Nutzer muss dem Profil zugewiesen sein, das Sie in Schritt 1 erstellt oder identifiziert haben.
    • Hier können Sie den Nutzernamen sehen und das Passwort zurücksetzen.
    • Sie können das Sicherheitstoken zurücksetzen, wenn Sie es nicht haben und es nicht von einem anderen Prozess verwendet wird.
  3. Erstellen Sie eine verbundene App. Sie ist der einzige Kommunikationskanal, um eine Verbindung zu Salesforce von der Außenwelt mithilfe von Profil, Salesforce-API, Standardanmeldedaten und dem Sicherheitstoken herzustellen.
    1. Folgen Sie der Anleitung, um OAuth-Einstellungen für die API-Einbindung zu aktivieren.
    2. Prüfen Sie, ob Require Secret for Web Server Flow und Require Secretfor Refresh Token Flow im Abschnitt API (OAuth-Einstellungen aktiviert) aktiviert sind.
    3. In der Dokumentation finden Sie Informationen dazu, wie Sie Ihren Verbraucherschlüssel (der später als Client-ID verwendet wird) abrufen. Wenden Sie sich an Ihren Sicherheitsadministrator, um Probleme oder Einschränkungen zu klären.
  4. Weisen Sie die verbundene App dem erstellten Profil zu.
    1. Wählen Sie rechts oben auf dem Salesforce-Startbildschirm Setup aus.
    2. Geben Sie im Feld Schnellsuche profile ein und wählen Sie dann Profil aus. Suchen Sie nach dem Profil, das Sie in Schritt 1 erstellt haben.
    3. Rufen Sie das Profil auf.
    4. Klicken Sie auf den Link Zugewiesene verbundene Apps.
    5. Klicken Sie auf Bearbeiten.
    6. Fügen Sie die neu erstellte verbundene App hinzu.
    7. Klicken Sie auf Speichern.

Secret Manager einrichten

Konfigurieren Sie Secret Manager, um Verbindungsdetails zu speichern. Das Modul „Salesforce-to-BigQuery“ verwendet Secret Manager, um die Anmeldedaten, die für die Verbindung zu Salesforce und BigQuery erforderlich sind, sicher zu speichern. So wird vermieden, dass vertrauliche Informationen wie Passwörter direkt in Ihrem Code oder Ihren Konfigurationsdateien preisgegeben werden, was die Sicherheit erhöht.

Erstellen Sie ein Secret mit den folgenden Spezifikationen. Eine ausführliche Anleitung finden Sie unter Secret erstellen.

  • Secret-Name: airflow-connections-salesforce-conn
  • Secret-Wert:

    http://USERNAME:PASSWORD@https%3A%2F%2FINSTANCE_NAME.lightning.force.com?client_id=CLIENT_ID&security_token=SECRET_TOKEN`
    

    Ersetzen Sie Folgendes:

    • USERNAME durch Ihren Nutzernamen.
    • PASSWORD durch Ihr Passwort.
    • INSTANCE_NAME durch den Instanznamen.
    • CLIENT_ID durch Ihre Client-ID.
    • SECRET_TOKEN durch Ihr Secret-Token.

Weitere Informationen

Cloud Composer-Bibliotheken für die Replikation

Damit Sie die Python-Skripts in den DAGs ausführen können, die von der Data Foundation des Cortex Framework bereitgestellt werden, müssen Sie einige Abhängigkeiten installieren. Bei Airflow-Version 1.10 folgen Sie der Dokumentation zum Installieren von Python-Abhängigkeiten für Cloud Composer 1, um die folgenden Pakete in der angegebenen Reihenfolge zu installieren:

tableauserverclient==0.17
apache-airflow-backport-providers-salesforce==2021.3.3

Informationen zum Installieren von apache-airflow-providers-salesforce~=5.2.0 für Airflow-Version 2.x finden Sie in der Dokumentation zum Installieren von Python-Abhängigkeiten für Cloud Composer 2.

Verwenden Sie den folgenden Befehl, um jedes erforderliche Paket zu installieren:

  gcloud composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
   --update-pypi-package PACKAGE_NAME EXTRAS_AND_VERSION

Ersetzen Sie Folgendes:

  • ENVIRONMENT_NAME durch den zugewiesenen Umgebungsnamen.
  • LOCATION durch den Standort.
  • PACKAGE_NAME durch den ausgewählten Paketnamen.
  • EXTRAS_AND_VERSION mit den Spezifikationen der Extras und der Version.

Der folgende Befehl ist ein Beispiel für die Installation eines erforderlichen Pakets:

gcloud composer environments update my-composer-instance \
  --location us-central1 \
  --update-pypi-package apache-airflow-backport-providers-salesforce>=2021.3.3

Secret Manager als Backend aktivieren

Aktivieren Sie Google Secret Manager als Sicherheits-Backend. In diesem Schritt wird beschrieben, wie Sie Secret Manager als primären Speicherort für vertrauliche Informationen wie Passwörter und API-Schlüssel aktivieren, die von Ihrer Cloud Composer-Umgebung verwendet werden. Dies verbessert die Sicherheit, da Anmeldedaten in einem dedizierten Dienst zentralisiert und verwaltet werden. Weitere Informationen finden Sie unter Secret Manager.

Composer-Dienstkonto den Zugriff auf Secrets erlauben

Mit diesem Schritt wird dafür gesorgt, dass das mit Cloud Composer verknüpfte Dienstkonto die erforderlichen Berechtigungen für den Zugriff auf in Secret Manager gespeicherte Secrets hat. Standardmäßig verwendet Cloud Composer das Compute Engine-Dienstkonto. Die erforderliche Berechtigung ist Secret Manager Secret Accessor. Mit dieser Berechtigung kann das Dienstkonto in Secret Manager gespeicherte Secrets abrufen und verwenden.Eine umfassende Anleitung zum Konfigurieren der Zugriffssteuerung in Secret Manager finden Sie in der Dokumentation zur Zugriffssteuerung.

BigQuery-Verbindung in Airflow

Achten Sie darauf, dass Sie die Verbindung sfdc_cdc_bq gemäß Cloud Composer-Einstellungen erfassen erstellen. Diese Verbindung wird wahrscheinlich vom Modul „Salesforce-to-BigQuery“ verwendet, um die Kommunikation mit BigQuery herzustellen.

Nächste Schritte