Einrichten der Datenerfassung (Data Ingestion) für Ihre ServiceNow-Daten

Unter diesem Thema wird beschrieben, wie Sie die Datenerfassung (Data Ingestion) für den Snowflake-Konnektor für ServiceNow einrichten.

Bemerkung

Der Snowflake-Konnektor für ServiceNow erfasst Daten aus ServiceNow-Tabellen in Snowflake. Die Datenerfassung hängt von v2 der Tabellen-API von ServiceNow ab.

Unter diesem Thema:

Strategien für das Erfassen von ServiceNow-Tabellen

Bemerkung

  • Der Konnektor kann nur Tabellen mit sys_id-Spalten erfassen.

  • ServiceNow-Ansichten werden nicht unterstützt. Wenn Sie Ansichten erfassen möchten, müssen Sie alle Tabellen der zugrunde liegenden Ansicht synchronisieren und die synchronisierten Tabellen in Snowflake verknüpfen.

Der Konnektor verwendet je nach Tabellenschema unterschiedliche Erfassungsstrategien. Der Konnektor verwendet drei Erfassungsmodi:

  • Das erstmalige Laden von Daten einer Tabelle erfolgt, sobald die Synchronisierung der Tabelle aktiviert wird.

    In diesem Modus wird die Tabelle durch Iterieren durch die Datensätze erfasst, die durch IDs in der Spalte sys_id gekennzeichnet sind. Sobald alle Datensätze eingelesen sind, ist die erste Ladephase abgeschlossen. Für bestimmte Tabellen können Sie auch die Startzeit des Datenbereichs festlegen, mit der die zu erfassenden Datensätze eingeschränkt werden können.

  • Inkrementelle Aktualisierungen erfolgen nur für Tabellen mit sys_updated_on- oder sys_created_on-Spalte.

    Inkrementelle Aktualisierungen beginnen nach dem erstmaligen Laden und erfolgen nach einem regelmäßigen Zeitplan, den Sie konfigurieren können. In diesem Modus erfasst der Konnektor nur die Datensätze, die seit der letzten Synchronisierung hinzugefügt, aktualisiert oder gelöscht wurden.

  • Für Tabellen, die keine sys_updated_on- oder sys_created_on-Spalte haben, verwendet der Konnektor den Modus Abschneiden und Laden.

    In diesem Modus wird die Tabelle immer nach dem Ansatz „Erstmaliges Laden“ erfasst, wobei die neu erfassten Daten die alten Daten ersetzen. Der Konnektor ersetzt die Daten, indem er den Befehl INSERT OVERWRITE ausführt.

Bemerkung

  • Im Modus „Inkrementelle Aktualisierungen“ verwendet der Konnektor die Spalte sys_updated_on, falls vorhanden.

    Wenn die Spalte nicht vorhanden ist, verwendet der Konnektor stattdessen die Spalte sys_created_on.

  • Bei rotierten Tabellen verwendet der Konnektor immer die Spalte sys_created_on. Wenn die Tabelle unter Verwendung einer anderen Spalte als sys_created_on rotiert wird, kann das Einlesen dieser Tabelle Performance-Probleme verursachen.

Paralleles Erfassen von ServiceNow-Tabellen

Der Konnektor erfasst einige Tabellen parallel, aber das Erfassen jeder einzelnen Tabelle ist ein synchroner Prozess. Das bedeutet, dass das Erfassen großer Tabellen den Konnektor daran hindern kann, andere Tabellen zu aktualisieren. Dieses Problem tritt mit größerer Wahrscheinlichkeit in der Phase des erstmaligen Ladens als in den anderen Phasen auf.

Bemerkung

  • Wenn die Felder sys_updated_on bzw. sys_created_on beim Ändern des Datensatzes in ServiceNow nicht aktualisiert werden, werden diese Änderungen nicht an Snowflake weitergegeben, was zu Dateninkonsistenzen führt. Snowflake empfiehlt, das Deaktivieren der Aktualisierung von Systemfeldern zu vermeiden.

  • Wenn für das Löschen eines Datensatzes kein Auditing erfolgt, werden die Informationen zu gelöschten Datensätzen nicht an Snowflake weitergegeben, was zu Dateninkonsistenzen führt.

Bemerkung

Aufgrund von Einschränkungen der Snowflake- und ServiceNow-REST-APIs kann der Konnektor eine Tabelle nicht erfassen, wenn eine einzelne Zeile mehr als 10 MB Daten enthält. In diesem Fall versucht der Konnektor, die Daten mit der im Tabellenzeitplan definierten Häufigkeit zu erfassen. Wenn eine Zeile das Limit überschreitet, generiert der Konnektor eine Fehlermeldung und fährt mit dem Erfassen einer anderen Tabelle fort.

Einrichten der Datenerfassung mit Snowsight

Um die Datenerfassung mit Snowsight einzurichten, gehen Sie wie folgt vor:

  1. Melden Sie sich bei Snowsight als Benutzer mit der Rolle ACCOUNTADMIN an.

  2. Wählen Sie im linken Navigationsbereich die Option Marketplace aus.

  3. Suchen Sie nach dem Snowflake-Konnektor für ServiceNow, und wählen Sie dann die Kachel für den Konnektor aus.

  4. Wählen Sie auf der Seite für Snowflake Connector for ServiceNow die Option Select Tables aus.

    Dadurch wird eine Liste aller ServiceNow-Tabellen angezeigt.

    Bemerkung

    Der Konnektor kann nur Tabellen mit sys_id-Spalten erfassen.

  5. Wählen Sie die Tabellen aus, die Sie importieren möchten:

    1. Suchen Sie nach der Tabelle, die Sie erfassen möchten.

    2. Aktivieren Sie das Kontrollkästchen in der Spalte Status neben der Tabelle, die Sie auswählen möchten.

    3. Wählen Sie unter Synch Schedule aus, wie häufig Sie die Tabelle zwischen Snowflake und ServiceNow synchronisieren möchten.

    4. Wiederholen Sie diese Schritte für jede Tabelle, die Sie in Snowflake erfassen möchten.

  6. Wählen Sie die Überschrift der Spalte Status aus, um die aktuell ausgewählten Tabellen anzuzeigen.

  7. Wählen Sie Start Ingestion aus, um mit dem Erfassen von Daten in Ihr Snowflake-Konto zu beginnen.

Der Status des Konnektors ändert sich in Loading Data. Wenn mindestens eine der Tabellen erfolgreich erfasst wurde, ändert sich der Status des Konnektors in Last Successful Load: just now.

Unter Überwachen des Konnektors finden Sie Informationen darüber, wie Sie den Inhalt der Tabellen in Snowflake anzeigen können.

Ändern der Datenerfassung mit Snowsight

Um die zu erfassende ServiceNow-Tabellen oder den Synchronisierungszeitplan für die Tabellen zu ändern, gehen Sie wie folgt vor:

  1. Melden Sie sich bei Snowsight als Benutzer mit der Rolle ACCOUNTADMIN an.

  2. Wählen Sie im linken Navigationsbereich die Option Marketplace aus.

  3. Suchen Sie nach dem Snowflake-Konnektor für ServiceNow, und wählen Sie dann die Kachel für den Konnektor aus.

  4. Wählen Sie auf der Seite für Snowflake Connector for ServiceNow die Option Edit aus.

  5. Ändern Sie die Tabellen, die Sie erfassen möchten:

    1. Suchen Sie nach der Tabelle, die Sie erfassen möchten.

    2. Aktivieren Sie das Kontrollkästchen in der Spalte Status neben der Tabelle, die Sie auswählen oder Auswahl entfernen möchten.

    3. Wählen Sie unter Synch Schedule aus, wie häufig Sie die Tabelle zwischen Snowflake und ServiceNow synchronisieren möchten.

  6. Wählen Sie Update aus.

Einrichten der Datenerfassung mit SQL-Anweisungen

Für die Datenerfassung mit SQL-Anweisungen müssen Sie Folgendes einrichten:

Bemerkung

Um diese Einstellungen zu konfigurieren, verwenden Sie gespeicherte Prozeduren, die im PUBLIC-Schema der Datenbank definiert sind, die als Instanz des Konnektors dient.

Bevor Sie diese gespeicherten Prozeduren aufrufen, wählen Sie diese Datenbank als die für die Sitzung zu verwendende Datenbank aus.

Wenn diese Datenbank beispielsweise my_connector_servicenow heißt, führen Sie den folgenden Befehl aus:

USE DATABASE my_connector_servicenow;
Copy

Festlegen des Synchronisierungszeitplans

Der Snowflake-Konnektor für ServiceNow synchronisiert Daten aus allen ServiceNow-Tabellen mit Snowflake nach einem festgelegten Zeitplan. Standardmäßig werden alle Tabellen einmal pro Stunde (1 h) synchronisiert.

Um den Standard-Synchronisierungszeitplan für alle Tabellen zu ändern, rufen Sie die gespeicherte Prozedur CONFIGURE_CONNECTOR mit den folgenden Argumenten auf:

CALL CONFIGURE_CONNECTOR('data_ingestion_schedule', '<schedule>');
Copy

Wobei:

data_ingestion_schedule (das Zeichenfolgenliteral)

Gibt an, dass Sie den Zeitplan für die Synchronisierung konfigurieren möchten.

schedule

Gibt die Häufigkeit der Synchronisierung an. Sie können einen der folgenden Zeichenfolgenwerte angeben:

  • '30m'

  • '1h'

  • '3h'

  • '6h'

  • '12h'

  • '1d'

Der Konnektor ermöglicht es Ihnen auch, für jede Tabelle, die für die Synchronisierung aktiviert ist, einen anderen Zeitplan anzugeben. Um den Synchronisierungszeitplan für eine ausgewählte Gruppe von Tabellen zu ändern, rufen Sie die gespeicherte Prozedur CONFIGURE_TABLES_SCHEDULE mit den folgenden Argumenten auf:

CALL CONFIGURE_TABLES_SCHEDULE(<table_names>, <schedule>);
Copy

Wobei:

table_names

Gibt ein Array mit den Namen der Tabellen an, für die Sie den Synchronisierungszeitplan konfigurieren möchten.

schedule

Gibt die Häufigkeit der Synchronisierung an. Sie können einen der folgenden JSON-Werte angeben:

  • { 'type': 'interval', 'value': '<interval_value>' }, wobei interval_value einer der folgenden Zeichenfolgenwerte ist:

    • '30m'

    • '1h'

    • '3h'

    • '6h'

    • '12h'

    • '1d'

  • { 'type': 'custom', 'value': { 'hour': <hour>, 'dayOfWeek': '<day_of_week>' } }, wobei hour die Stunde in der UTC-Zeitzone angibt, zu der die Erfassung beginnen soll, und day_of_week den Wochentag, an dem die Erfassung ausgeführt werden soll. Es ist möglich, spezielle Ausdrücke für den Wochentag zu verwenden:

    • '*', um die Erfassung täglich auszuführen.

    • '1-3', um die Erfassung von Montag bis Mittwoch auszuführen.

    • '0,5,6', um die Erfassung am Freitag, Samstag und Sonntag auszuführen.

    Folgende Werte können in dem Ausdruck für die day_of_week-Konfiguration verwendet werden:

    • '0' - Sonntag

    • '1' - Montag

    • '2' - Dienstag

    • '3' - Mittwoch

    • '4' - Donnerstag

    • '5' - Freitag

    • '6' - Samstag

    Andere nicht-zifferige Werte wie '5L', der den letzten Freitag eines Monats angibt, oder 'FRI-SUN', der den Bereich von Freitag bis Sonntag angibt, werden nicht unterstützt.

Um beispielsweise die Tabellen table_1 und table_2 jeden Samstag und Sonntag um 23:00 Uhr UTC zu erfassen, rufen Sie die folgende gespeicherte Prozedur auf:

CALL CONFIGURE_TABLES_SCHEDULE(['table_1', 'table_2'], { 'type': 'custom', 'value': { 'hour': 23, 'dayOfWeek': '0,6' } });
Copy

Standardmäßig versucht der Konnektor, die Erfassung in einem Zeitfenster von 3 Stunden ab der geplanten Startzeit zu beginnen. Wenn es nicht möglich ist, die Erfassung innerhalb dieses Zeitfensters zu starten, weil der Konnektor z. B. gerade andere Tabellen erfasst, wird der aktuell geplante Lauf nicht ausgeführt. Der Konnektor versucht, die Erfassung im nächsten geplanten Zeitfenster auszuführen. Es ist möglich, die Länge des Zeitfensters durch Aufrufen der Speicherprozedur CONFIGURE_CONNECTOR zu ändern:

CALL CONFIGURE_CONNECTOR('custom_schedule_start_ingestion_window', <window_length>);
Copy

Wobei: window_length ist die Länge des Zeitfensters im ISO 8601-Format für die Zeitdauer. Die Dauer muss auf eine ganze Stunde aufgerundet werden und mindestens 1 Stunde betragen. Der Wert 'PT12H' gibt zum Beispiel ein Zeitfenster an, das 12 Stunden dauert, und 'P2D' gibt ein Zeitfenster an, das 2 Tage dauert.

Wenn Sie nur Tabellen mit kundenspezifischen Zeitplänen aktivieren, wirkt sich diese Konfiguration nur auf die Zeit aus, die für das Erstellen und Aktualisieren von vereinfachten (flatten) Ansichten der konfigurierten Tabellen benötigt wird. Die vereinfachten Ansichten werden im ersten Erfassungszyklus erstellt, wenn die folgenden Bedingungen erfüllt sind:

  • Die Erfassung der Metadaten-Tabellen ist abgeschlossen.

  • Die Erfassung der konfigurierten Tabelle hat begonnen.

Wenn E-Mail-Alerts aktiviert sind, empfiehlt Snowflake, bei Verwendung der kundenspezifischen Zeitplanung die Häufigkeit der Alerts auf Once per day zu ändern.

Zusätzlich stellt der Konnektor die veraltete gespeicherte Prozedur CONFIGURE_CONNECTOR_TABLES mit den folgenden Argumenten zur Verfügung:

CALL CONFIGURE_CONNECTOR_TABLES('schedule_interval', '<schedule>', '<table_names>');
Copy

Wobei:

schedule

Gibt die Häufigkeit der Synchronisierung an. Sie können einen der folgenden Zeichenfolgenwerte angeben:

  • '30m'

  • '1h'

  • '3h'

  • '6h'

  • '12h'

  • '1d'

table_names

Gibt eine durch Komma getrennte Liste der Tabellennamen an.

Bei diesen Tabellen setzt der Zeitplan, den Sie im Parameter schedule angeben, den Standardzeitplan außer Kraft, den Sie durch Aufruf der gespeicherten Prozedur CONFIGURE_CONNECTOR('data_ingestion_schedule', 'schedule') festgelegt haben.

Festlegen der Startzeit des Datenbereichs

Standardmäßig synchronisiert der Snowflake-Konnektor für ServiceNow alle Datensätze in den entsprechenden ServiceNow-Tabellen. Bei Tabellen, die über eine Spalte sys_updated_on oder sys_created_on (im Folgenden Zeitspalten genannt) verfügen, kann der Bereich der synchronisierten Daten eingeschränkt werden, indem eine Startzeit des Datenbereichs festgelegt wird, d. h. es wird eine untere Grenze für den entsprechenden Wert der Zeitspalte der Datensätze festgelegt.

Bei einer solchen Konfiguration werden die Datensätze, deren entsprechender Wert der Zeitspalte älter ist als der Zeitstempel für die Startzeit des Datenbereichs, nicht erfasst. Die entsprechende Zeitspalte, die bei diesem Verfahren verwendet wird, wird auf die gleiche Weise bestimmt wie bei der inkrementellen Aktualisierung.

Um den Wert für die Startzeit des Datenbereichs zu ändern, rufen Sie die gespeicherte Prozedur CONFIGURE_TABLES_RANGE_START mit den folgenden Argumenten auf:

CALL CONFIGURE_TABLES_RANGE_START(<table_names>, <range_start>);
Copy

Wobei:

table_names

Gibt ein Array mit den Namen der Tabellen an, für die Sie die Startzeit des Datenbereichs konfigurieren möchten.

range_start

Zeitstempel mit Angabe der Startzeit des Datenbereichs im Format TIMESTAMP_TZ oder mit NULL, um den aktuellen Wert zu löschen.

Bemerkung

Sie können die Startzeit des Datenbereichs nur für Tabellen festlegen, in denen die Spalten sys_updated_on und sys_created_on vorhanden sind.

  • Wenn die Erfassung der Tabelle noch nicht begonnen wurde, wird der Wert für die Startzeit des Datenbereichs bei der erstmaligen Erfassung berücksichtigt.

  • Wenn die Erfassung der Tabelle bereits begonnen hat (z. B. wenn ein Neuladen im Gange ist), wird die Startzeit des Datenbereichs ignoriert. Dann ist ein (weiteres) Neuladen der Tabelle(n) erforderlich, um die Datensätze, deren entsprechende Zeitspaltenwerte zu alt sind, herauszufiltern.

Es wird daher empfohlen, die Startzeit des Datenbereichs vor der erstmaligen Erfassung einer Tabelle (also auch vor der Aktivierung) festzulegen.

Wenn zum Beispiel die Tabellen table1 und table2 die erforderlichen Zeitspalten haben, führen Sie den folgenden Befehl aus, um die Startzeit des Datenbereichs für diese beiden Tabellen auf „2022-11-23 07:00:00 UTC“ festzulegen:

CALL CONFIGURE_TABLES_RANGE_START(['table1', 'table2'], TO_TIMESTAMP_TZ('2022-11-23 07:00:00 +00:00'));
Copy

Dann gilt Folgendes:

  • Bei Beispieltabelle table1: Wenn deren Erfassung noch nicht gestartet wurde, werden alle Datensätze, deren entsprechender Wert der Zeitspalte vor „2022-11-23 07:00:00“ liegt, nicht erfasst.

  • Bei Beispieltabelle table2: Wenn deren Erfassung bereits gestartet wurde, wird der Wert für Startzeit des Datenbereichs bei allen Datensynchronisierungen bis zum Neuladen dieser Tabelle ignoriert. Beim Neuladen werden alle Datensätze, deren entsprechender Wert in der Zeitspalte vor „2022-11-23 07:00:00“ liegt, nicht erfasst.

Es ist auch möglich, die Startzeit des Datenbereichs zu deaktivieren. Um beispielsweise die Startzeit für Tabelle table1 zu deaktivieren, führen Sie den folgenden Befehl aus:

CALL CONFIGURE_TABLES_RANGE_START(['table1'], NULL);
Copy

Wenn also bereits eine Erfassung der Tabelle table1 begonnen wurde, ist ein Neuladen dieser Tabelle erforderlich, um alle Datensätze aus ServiceNow zurückzuerfassen.

Bemerkung

Das Laden der Daten unter Berücksichtigung der Startzeit des Datenbereichs kann aufgrund der geringeren Performance der inkrementellen Aktualisierung länger dauern als das Laden aller historischen Daten.

Aktivieren oder Deaktivieren der Synchronisierung einer Tabelle

Um das Synchronisieren von Daten für eine bestimmte Tabelle in ServiceNow zu aktivieren, rufen Sie die gespeicherte Prozedur ENABLE_TABLES mit den folgenden Argumenten auf:

CALL ENABLE_TABLES(<tables_to_enable>);
Copy

Wobei:

tables_to_enable

Gibt ein Array von ServiceNow-Tabellennamen an.

Verwenden Sie den Tabellennamen, nicht die auf der ServiceNow-UI angezeigte Bezeichnung. Sie finden den Tabellennamen in den Datenwörterbuch-Tabellen in ServiceNow. Wechseln Sie auf der ServiceNow-UI zu System Definition » Tables. In der Spalte Name wir der Name der Tabelle angezeigt.

Um beispielsweise die Synchronisierung der Tabellen mit den Namen table1, table2 und table3 zu aktivieren, führen Sie den folgenden Befehl aus:

CALL ENABLE_TABLES(['table1', 'table2', 'table3']);
Copy

Um das Synchronisieren von Daten für eine bestimmte Tabelle in ServiceNow zu deaktivieren, rufen Sie die gespeicherte Prozedur DISABLE_TABLES mit den folgenden Argumenten auf:

CALL DISABLE_TABLES(<tables_to_disable>);
Copy

Wobei:

tables_to_disable

Gibt ein Array von ServiceNow-Tabellennamen an.

Verwenden Sie den Tabellennamen, nicht die auf der ServiceNow-UI angezeigte Bezeichnung. Sie finden den Tabellennamen in den Datenwörterbuch-Tabellen in ServiceNow. Wechseln Sie auf der ServiceNow-UI zu System Definition » Tables. In der Spalte Name wir der Name der Tabelle angezeigt.

Um beispielsweise das Synchronisieren der Tabellen mit den Namen table1 und table2 zu deaktivieren, führen Sie den folgenden Befehl aus:

CALL DISABLE_TABLES(['table1', 'table2']);
Copy

Durch das Deaktivieren der Tabelle wird deren Synchronisierung gestoppt. Wenn die Tabellensynchronisierung wieder erneut aktiviert wird, wird die Erfassung an der Stelle fortgesetzt, an der sie unterbrochen wurde.

Bemerkung

Wenn Sie bei allen Tabellen die Synchronisierung deaktivieren, bedeutet dies nicht, dass der Snowflake-Konnektor für ServiceNow keine Kosten mehr generiert. Einige Aufgaben werden möglicherweise im Hintergrund ausgeführt, z. B. solche, die mit Benachrichtigungen zusammenhängen.

Der Konnektor stellt die veraltete Version der Prozedur ENABLE_TABLES zur Verfügung, die zwei Argumente benötigt:

CALL ENABLE_TABLES('<tables_to_configure>', <enable>);
Copy

Wobei:

tables_to_configure

Gibt eine durch Komma getrennte Liste der ServiceNow-Tabellennamen an.

enable

Gibt an, ob das Synchronisieren für diese Tabellen aktiviert oder deaktiviert werden soll. Geben Sie TRUE zum Aktivieren oder FALSE zum Deaktivieren an.

Dieses Verfahren ist veraltet und soll in einem zukünftigen Release des Konnektor entfernt werden. Wir empfehlen die Verwendung von ENABLE_TABLES und DISABLE_TABLES mit einem einzigen Argument.

Die Prozeduren ENABLE_TABLES und DISABLE_TABLES fügen die angegebenen Tabellennamen in die Ansicht ENABLED_TABLES ein.

Wenn Sie alle in ServiceNow verfügbaren Tabellen zur Ansicht ENABLED_TABLES hinzufügen möchten, rufen Sie die gespeicherte Prozedur PREFILL_CONFIG_TABLE auf.

Bemerkung

Damit Sie diese Prozedur aufrufen können, muss der vom Konnektor verwendete ServiceNow-Benutzer Zugriff auf die Tabelle sys_db_object haben.

Um die Prozedur aufzurufen, führen Sie den folgenden Befehl aus:

CALL PREFILL_CONFIG_TABLE();
Copy

Diese Prozedur fügt alle ServiceNow-Tabellen zur ENABLED_TABLES-Ansicht hinzu und deaktiviert die Tabellen standardmäßig für die Erfassung.

So aktivieren Sie die Synchronisierung für diese neu hinzugefügten Tabellen:

  1. Führen Sie die folgenden Befehle aus, um eine durch Komma getrennte Liste der Tabellen in der Ansicht ENABLED_TABLES zu erstellen:

    SELECT LISTAGG(TABLE_NAME, ',') FROM ENABLED_TABLES;
    
    Copy
  2. Entfernen Sie in der von diesem Befehl zurückgegebenen Liste alle Tabellen, die nicht synchronisiert werden sollen.

  3. Rufen Sie die gespeicherte Prozedur ENABLE_TABLES auf, und übergeben Sie diese Liste.

Wenn erst kurz zuvor neue Tabellen zu ServiceNow hinzugefügt wurden, können Sie die neuen Tabellen identifizieren und dann für die Synchronisierung aktivieren, indem Sie denselben Ansatz verwenden (d. h. die Liste der Tabellen erstellen, diese Liste bearbeiten, und die Liste an die gespeicherte Prozedur ENABLE_TABLES übergeben).

Bemerkung

Der Konnektor unterstützt keine Rollbacks oder Löschwiederherstellungen in ServiceNow.

Die Verwendung der Features Rollback und Löschwiederherstellung kann zu Dateninkonsistenzen führen. Datensätze, die in ServiceNow wiederhergestellt wurden, können in Snowflake weiterhin als gelöscht markiert sein. Um das Problem zu lösen, können Sie die gespeicherte Prozedur RELOAD_TABLE verwenden.

Aktivieren der Synchronisierung einer Tabelle mit Spaltenfilterung

Wenn Sie nicht alle Spalten einer ServiceNow-Tabelle in Snowflake benötigen, können Sie diese auslassen. Sie können zum Beispiel die Spalten überspringen, wenn eine einzelne Zeile die maximale Zeilengröße von 10 MB überschreitet.

Um das Erfassen von Tabellen mit bestimmten Spalten zu aktivieren, führen Sie den folgenden Befehl aus:

CALL ENABLE_TABLE_WITH_COLUMNS('<table_to_enable>', <include_columns>, <exclude_columns>);
Copy

Wobei:

table_to_enable

Gibt einen ServiceNow-Tabellennamen an.

include_columns

Gibt ein Array von Spaltennamen an, die erfasst werden sollen. Wenn sys_id, sys_created_on und sys_updated_on vorhanden sind, sind sie immer enthalten, auch wenn sie in diesem Array nicht erwähnt werden.

exclude_columns

Gibt ein Array von Spaltennamen an, die von der Erfassung ausgeschlossen werden sollen. Sie können die Spalten sys_id, sys_created_on und sys_updated_on nicht ausschließen, da der Konnektor sie bei der Erfassung verwendet.

Bemerkung

Da Spalten in ServiceNow in Kleinbuchstaben geschrieben werden und die vom Konnektor verwendete API zwischen Groß- und Kleinschreibung unterscheidet, müssen die Werte für die angegebenen Spalten ebenfalls in Kleinbuchstaben angegeben werden.

Bemerkung

Sie sollten nicht sowohl include_columns als auch exclude_columns angeben. Wenn Sie include_columns auflisten möchten, müssen Sie exclude_columns leer lassen, und umgekehrt. Wenn beide Arrays nicht leer sind und es keine kollidierenden Spalten gibt, hat include_columns Vorrang vor exclude_columns.

Wenn sowohl include_columns als auch exclude_columns leere Arrays sind, werden alle verfügbaren Spalten aufgenommen.

Angenommen, Sie haben eine ServiceNow-Tabelle namens u_table mit den Spalten sys_id, sys_updated_on, col_1 und col_2 und führen folgende Anweisung aus:

CALL ENABLE_TABLE_WITH_COLUMNS('u_table', ['sys_id', 'sys_updated_on'], []);
Copy

In diesem Fall werden nur die Spalten sys_id und sys_updated_on der angegebenen Tabelle erfasst. Wenn Sie aber Folgendes aufrufen:

CALL ENABLE_TABLE_WITH_COLUMNS('u_table', [], ['col_1']);
Copy

In diesem Fall werden sys_id, sys_updated_on und auch col_2 erfasst.

Bemerkung

Um diese Prozedur verwenden zu können, muss der Konnektor den Benutzer ServiceNow verwenden, dem die ServiceNow-Rolle admin zugewiesen wurde. Ohne diese Rolle gibt die Prozedur einen Autorisierungsfehler zurück. Weitere Informationen dazu finden Sie unter Vorbereitung der ServiceNow-Instanz.

Der Konnektor validiert die bereitgestellten Spalten und lehnt die Aktivierungsanforderung ab, wenn eine der Spalten in ServiceNow nicht verfügbar ist. Da die ServiceNow-API nur den Einfügemodus unterstützt, wandelt der Konnektor die bereitgestellten Spaltenarrays in eine Liste der enthaltenen Spalten um und sendet diese bei jeder Anforderung an ServiceNow mit. Die URL mit den enthaltenen Spalten könnte zu lang sein, um von ServiceNow verarbeitet zu werden. Der Konnektor validiert diese Einschränkung, wenn ENABLE_TABLE_WITH_COLUMNS aufgerufen wird.

Die Konfiguration der enthaltenen Spalten für jede Tabelle finden Sie in der Spalte INCLUDED_COLUMNS der Ansicht ENABLED_TABLES. Um die Liste der erfassten Spalten zu ändern, müssen Sie zunächst die entsprechende Tabelle deaktivieren. Wenn für eine Tabelle die Spaltenfilterung konfiguriert ist, können Sie die Spalten nur mit der Prozedur ENABLE_TABLE_WITH_COLUMNS aktivieren. In diesem Fall können Sie ENABLE_TABLES nicht verwenden.

Die Änderung der Konfiguration wirkt sich nicht auf die bereits erfassten Daten aus. Die Spaltenfilterung wird nur auf die neu erfassten Datensätze angewendet.

Vereinfachte Ansichten enthalten nur die Spalten, die bei Aktivierung der Tabelle angegeben wurden. Sie werden jedes Mal aktualisiert, wenn sich die Liste der enthaltenen Spalten ändert. Wenn keine Spaltenfilterung konfiguriert ist, besteht eine Ansicht aus allen verfügbaren Spalten.

Erneutes Laden von Daten in eine Tabelle

Um Daten erneut in eine bestimmte Tabelle zu laden, rufen Sie die gespeicherte Prozedur RELOAD_TABLE auf:

CALL RELOAD_TABLE('<table_name>');
Copy

Wobei:

table_name

Gibt den Namen der Tabelle an, in die die Daten erneut geladen werde sollen.

Wenn Sie die gespeicherte Prozedur RELOAD_TABLE aufrufen, führt der Konnektor Folgendes aus:

  1. Der Konnektor hält die ursprüngliche Tabelle vorübergehend für die Erfassung an.

    Bemerkung

    Während die Tabelle neu geladen wird, können Sie die Tabelle nicht wieder für die Erfassung aktivieren.

  2. Der Konnektor erstellt eine separate temporäre Tabelle für die Erfassung.

  3. Der Konnektor erfasst die Daten in diese neue temporäre Tabelle. Diese Tabelle wird in der Ansicht CONNECTOR_STATS als eine Tabelle mit dem Suffix __tmp angezeigt.

    Bemerkung

    Bei jedem Neuladen wird der Wert für die Startzeit des Datenbereichs berücksichtigt, wodurch das Erfassen von Datensätzen eingeschränkt werden kann.

  4. Nach dem Erfassen der Daten ersetzt der Konnektor die Daten in der Originaltabelle durch die Daten in der temporären Tabelle.

  5. Der Konnektor löscht die temporäre Tabelle.

  6. Der Konnektor aktiviert die ursprüngliche Tabelle wieder für die Erfassung.

Während dieses Prozesses können Sie weiterhin die vorhandenen Daten in der Originaltabelle abfragen. Änderungen an den Daten in der ServiceNow-Tabelle werden jedoch erst dann in der Snowflake-Tabelle berücksichtigt, wenn der Erfassungsprozess abgeschlossen ist.

Um eine Überladung Ihrer ServiceNow-Instanz zu vermeiden, laden Sie immer nur eine Tabelle neu.

Abbrechen des Neuladens der Tabelle

Um den Prozess des Neuladens der Daten in eine Tabelle abzubrechen, verwenden Sie die gespeicherte Prozedur CANCEL_RELOAD_TABLE, wie im folgenden Beispiel gezeigt:

CALL CANCEL_RELOAD_TABLE('<table_name>');
Copy

Wobei:

table_name

Gibt den Namen der Tabelle an, deren Neuladen Sie abbrechen möchten.

Wenn Sie das Neuladen abbrechen, löscht der Konnektor alle temporären Objekte, die während des Neuladens bisher erstellt wurden. Die Tabelle steht dann im Rahmen des normalen Synchronisierungzeitplans für die Erfassung zur Verfügung.

Konfigurieren der Größe eines Einzelseitenabrufs für eine Tabelle

Der Konnektor ruft Daten aus einer Tabelle ab, indem er die Daten in kleinere Blöcke, Seiten genannt, unterteilt. Jede API-Anforderung an ServiceNow führt zum Abruf einer einzelnen Seite. Aufgrund der Einschränkungen der Snowflake- und ServiceNow-REST-APIs kann die Größe der Antwort von der ServiceNow-API nicht größer als 10 MB sein. Außerdem muss die Antwort in weniger als einer Minute zurückgegeben werden.

Um dies zu berücksichtigen, begrenzt der Konnektor die Anzahl der Zeilen, die innerhalb einer einzelnen API-Anforderung abgerufen werden. Diese Beschränkung ist die Seitengröße.

Der Konnektor verwendet den folgenden Prozess, um die Seitengröße zu bestimmen:

  1. Anfänglich ist die Standardseitengröße auf 10.000 Zeilen eingestellt.

  2. Schlägt die Abrufanforderung während des Erfassens fehl, weil die Antwortgröße überschritten wird, wird die Seitengröße schrittweise um 1.000, 100, 10 und 1 verringert, bis die Anforderung erfolgreich ist oder die endgültige Seitengröße auf 1 gesetzt wird.

  3. Die erfolgreiche Seitengröße wird im Konnektor-Status gespeichert und bei nachfolgenden Anforderungen verwendet.

Die aktuelle Seitengröße für eine Tabelle ist in der Ansicht ENABLED_TABLES verfügbar. Um die Seitengröße anzuzeigen, führen Sie folgenden Befehl aus:

SELECT PAGE_SIZE FROM ENABLED_TABLES WHERE TABLE_NAME = '<table_name>';
Copy

Wobei:

table_name

Gibt den Namen der ServiceNow-Tabelle an, die erfasst wird.

Der Prozess, den der Konnektor zum Ermitteln der Seitengröße verwendet, kann zu Ineffizienz führen. Durch diesen Prozess wird lediglich die Seitengröße verringert. Die Seite wird dadurch nicht größer. Dies kann in Situationen vorkommen, in denen eine Tabelle aus einer einzigen großen Zeile besteht, was dazu führt, dass die Seitengröße auf einen niedrigeren Wert gesetzt wird.

Um diese Situation zu vermeiden, können Sie die Seitengröße manuell festlegen, indem Sie die gespeicherte Prozedur RESET_PAGE_SIZE aufrufen, wie im folgenden Beispiel gezeigt:

CALL RESET_PAGE_SIZE('<table_name>');
Copy

Wobei:

table_name

Gibt den Namen der ServiceNow-Tabelle an, die erfasst wird.

Datenerfassungslauf

Das Auslösen der Datenerfassungsläufe für eine bestimmte Tabelle erfolgt nach einem konfigurierten Zeitplan. Bei einem Ausführungslauf werden in einer Schleife alle relevanten Zeilen, unterteilt in die im vorigen Abschnitt erläuterten Seiten, aus der Quelltabelle heruntergeladen.

Erstmaliges Laden und Aktualisieren

Sobald eine Seite mit Daten abgerufen wird, wird sie in die entsprechende Ereignisprotokolltabelle eingefügt. In dieser Phase sind die neu abgerufenen Änderungen noch nicht in der Sync-Tabelle oder über vereinfachte Ansichten (Flattening) verfügbar. Wenn dies geschehen ist, wird die nächste Anforderung mit aktualisierten Kriterien ausgegeben, solange Daten zurückgegeben werden. Wenn der Datenerfassungslauf abgeschlossen ist und in der Quelltabelle keine abrufbereiten Daten mehr vorliegen, wird eine asynchrone Zusammenführungsaufgabe (Merge) ausgelöst, die alle seit der letzten Zusammenführung eingefügten Änderungen aus dem Ereignisprotokoll in die Sync-Tabelle übernimmt. Wenn dies abgeschlossen ist, stehen die Daten in synchronisierten Tabellen und vereinfachten Ansichten zur Verfügung.

Abschneiden und Laden

Im Modus „Abschneiden und Laden“ wird für jeden Datenerfassungslauf eine temporäre Tabelle erstellt. Jede abgerufene Seite mit Zeile wird zunächst in diese temporäre Tabelle eingefügt (diese Tabelle existiert im internen Konnektor-Schema und ist für die Benutzer des Konnektors nicht verfügbar). In dieser Phase sind die neu abgerufenen Änderungen noch nicht in der Sync-Tabelle oder über vereinfachte Ansichten (Flattening) verfügbar, sondern es werden immer noch die im vorherigen Lauf abgerufenen Daten angezeigt. Wenn der Datenerfassungslauf abgeschlossen ist und keine Daten mehr in der Quelltabelle vorhanden sind, werden die in der Sync-Tabelle vorliegenden Daten durch die Daten aus der temporären Tabelle ersetzt. Alle abgerufenen Zeilen werden ebenfalls dem Ereignisprotokoll hinzugefügt. Am Ende wird die temporäre Tabelle gelöscht.

Überwachen des Fortschritts

Um den Status eines aktuellen oder vergangenen Datenerfassungslaufs zu überprüfen, können Sie die Ansicht CONNECTOR_STATS abfragen. Der Status wird in der Spalte STATUS angezeigt. Er wird nur dann auf DONE gesetzt, wenn die Daten erfolgreich abgerufen und sämtliche Änderungen in die Sync-Tabelle übernommen wurden. Wenn der Datenerfassungsprozess ausgeführt wird oder die Zusammenführung mit der Sync-Tabelle bzw. das Ersetzen von Zeilen in der Sync-Tabelle noch nicht abgeschlossen ist, lautet der Status RUNNING.