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

Unter diesem Thema wird beschrieben, wie Sie die Datenaufnahme für den Snowflake Connector for ServiceNow® einrichten.

Bemerkung

Der Snowflake Connector for ServiceNow® nimmt Daten aus ServiceNow®-Tabellen in Snowflake auf. Die Datenaufnahme hängt von v2 der ServiceNow®-Tabellen-API ab.

Strategien für die Aufnahme 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 aufgenommen, die durch IDs in der Spalte sys_id gekennzeichnet sind. Wenn 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 erfassten Datensätze eingeschränkt werden können.

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

    Incremental updates begin after the initial load is done and occur on a regular schedule that you can configure. In this mode, the connector ingests only the records that were added, updated, or deleted since the last synchronization. Information about deletions comes from the journal table provided during connector configuration.

  • 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

  • In the „incremental updates“ mode, the connector uses the sys_updated_on column, if that column is present. If the column is not present, the connector uses the sys_created_on column instead.

  • 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.

  • 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

Because of restrictions on the Snowflake and ServiceNow® REST APIs, the connector cannot ingest data into a table if a single row exceeds 128 MB of data. In that case, the connector tries to ingest data with the frequency defined in the table schedule. If a row exceeds the limit, the connector generates an error message and continues ingesting other tables. To overcome this limitation, you can configure column filtering to exclude large columns from ingestion.

Archivierte Datensätze

The connector does not actively reflect the records archived in ServiceNow on the Snowflake side for the ingested tables. Assuming that you archive inactive records older than a certain date, the following apply:

  • Any record archived before the connector ingested it (for example, before the initial load of the table) will not be present in the table on the Snowflake side at all.

  • Jeder Datensatz, der archiviert wird, nachdem er bereits vom Konnektor aufgenommen wurde, verbleibt auf der Snowflake-Seite, ohne dass ein Hinweis auf eine Archivierungsaktion erfolgt.

  • Jeder archivierte Datensatz, der für eine Tabelle wiederhergestellt wird, die sich bereits im Modus inkrementelle Aktualisierungen befindet, wird auf Snowflake-Seite nicht übernommen, es sei denn, dieser Datensatz wird anschließend ebenfalls geändert (wobei der Wert sys_updated_on auf die aktuelle Zeit aktualisiert wird).

  • An archived record restored during the initial load of the table may be ingested on the Snowflake side depending on its ID in the sys_id column.

Wenn Sie die Tabelle mit einer aktiven Archivierungsregel auf den neuesten Stand bringen möchten, können Sie die gesamte Tabelle neu laden, aber jeder Datensatz, der nach dem Neuladen archiviert oder wiederhergestellt wird, unterliegt denselben oben genannten Prinzipien.

ServiceNow-Archivtabellen ar_[table_name] können für die Synchronisierung aktiviert werden. Die erste inkrementelle Aktualisierung, die auf das erstmalige Laden einer solchen Tabelle folgt, wird jedoch nach Datensätzen durchsucht, die nach dem Datum des erstmaligen Ladens der Archivtabelle erstellt/aktualisiert wurden. Da weder sys_updated_on noch sys_created_on geändert werden, wenn der Datensatz archiviert wird, fehlen Datensätze auf Snowflake-Seite, die nach dem erstmaligen Laden der Archivtabelle bis zu einem bestimmten Zeitpunkt archiviert wurden. Wenn Sie beispielsweise Datensätze archivieren, die älter als ein Jahr sind, wird jeder Datensatz, der ein Jahr nach dem erstmaligen Laden der Archivtabelle archiviert wurde, nicht in die Archivtabelle auf Snowflake-Seite aufgenommen. Die archivierten Datensätze, die durch eine Zerstörungsregel nach dem erstmaligen Laden einer Archivtabelle wiederhergestellt oder gelöscht wurden, werden auf Snowflake-Seite nie aus der Tabelle entfernt.

Parallel ingestion of ServiceNow® tables

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 in der Phase des erstmaligen Ladens mit größerer Wahrscheinlichkeit auf als in den anderen Phasen. Standardmäßig verwendet der Konnektor 10 Worker-Threads, was als optimaler Wert angesehen wird, um die ServiceNow®-Instanz nicht zu überlasen. Wenn Sie sicher sind, dass Ihre Instanz zusätzliche Parallelität unterstützen kann, können Sie diesen Wert auf maximal 30 erhöhen, indem Sie die CONFIGURE_CONCURRENCY-Prozedur aufrufen.

Set up data ingestion using Snowsight

Um die Datenaufnahme 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 Navigationsmenü die Option Catalog » Apps aus.

  3. Suchen Sie nach der App Snowflake Connector for ServiceNow® und wählen Sie dann die Kachel für den Konnektor.

  4. Wählen Sie auf der Seite für den Snowflake Connector for ServiceNow® die Option Data Sync 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 neben der Tabelle, die Sie auswählen möchten, das Kontrollkästchen in der Spalte Status.

    3. Wählen Sie unter Sync 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 sync aus, um mit der Datenaufnahme in Ihr Snowflake-Konto zu beginnen.

Der Status des Konnektors ändert sich in Syncing data. Wenn mindestens eine der Tabellen erfolgreich aufgenommen wurde, ändert sich der Status des Konnektors in Last Sync: just now.

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

Modify data ingestion using Snowsight

Um die aufzunehmenden 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 Navigationsmenü die Option Catalog » Apps aus.

  3. Suchen Sie nach der App Snowflake Connector for ServiceNow® und wählen Sie dann die Kachel für den Konnektor.

  4. Wählen Sie auf der Seite für den Snowflake Connector for ServiceNow® die Option Data Sync aus.

  5. Wählen Sie die Schaltfläche Edit tables aus, um in den Bearbeitungsmodus zu wechseln.

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

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

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

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

  7. Wählen Sie Update data sync aus.

Set up data ingestion using SQL statements

To set up data ingestion using SQL statements, do the following:

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

Enable or disable the table synchronization

Dieser Abschnitt beschreibt, wie Sie die Synchronisierung einer Tabelle in ServiceNow® aktivieren oder deaktivieren. Die Synchronisierung kann sowohl mit der Standardkonfiguration als auch mit der benutzerdefinierten Konfiguration aktiviert werden.

Enable multiple tables using the default configuration

Um die Synchronisierung von Daten für mindestens eine Tabelle in ServiceNow® zu ermöglichen, rufen Sie die Prozedur ENABLE_TABLES mit 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. Gehen 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

Disable multiple tables

Um die Synchronisierung von Tabellendaten für eine bestimmte Tabelle in ServiceNow® zu deaktivieren, rufen Sie die 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. Gehen 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

Wenn Sie die Tabelle deaktivieren, wird die Synchronisierung so schnell wie möglich beendet. Wenn die Tabellensynchronisierung wieder erneut aktiviert wird, wird die Erfassung an der Stelle fortgesetzt, an der sie unterbrochen wurde.

Bemerkung

Disabling all tables from synchronization does not mean that the Snowflake Connector for ServiceNow® stops incurring cost. Background tasks, such as those related to notifications, can continue to execute.

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

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 Tabelle :ref:` neu laden <label-servicenow_connector_reload_table>`.

Enable a single table by using custom configuration

  • Um die Synchronisierung von Daten mit benutzerdefinierter Konfiguration für eine bestimmte Tabelle in ServiceNow® zu aktivieren, rufen Sie die ENABLE_TABLE gespeicherte Prozedur mit den folgenden Argumenten auf:

    CALL ENABLE_TABLE('<table_to_enable>', <table_config>);
    
    Copy

    Wobei:

    table_to_enable

    Gibt einen ServiceNow®-Tabellennamen an.

    table_config

    Optional: Gibt ein Objekt mit der Tabellenkonfiguration für die Datenaufnahme an. Wenn nicht angegeben, wird für die Tabellenerfassung die Standardkonfiguration verwendet.

    Folgende Konfigurationen werden derzeit unterstützt:

    Bemerkung

    Alle kundenspezifischen Konfigurationen können in einem einzigen Objekt kombiniert und gleichzeitig für die Erfassung einer einzelnen Tabelle verwendet werden.

    Beispiel:

    Die Tabelle sys_audit hat die folgende Konfiguration:

    • Die Tabelle sollte jeden Samstag um 10:00 Uhr AM UTC synchronisiert werden.

    • Es sollten nur die Spalten newvalue und reason erfasst werden.

    • Es sollten nur die Zeilen erfasst werden, deren Spalte newvalue mit der Zeichenfolge privacy beginnt.

    • Wenn eine Journaltabelle konfiguriert ist, sollten die Löschungen nicht synchronisiert werden.

    • Anzeigewerte sollten für alle Felder abgerufen werden.

    Um die Erfassung der Tabelle zu aktivieren, führen Sie den folgenden Befehl aus:

    CALL ENABLE_TABLE('sys_audit', {
      'schedule': { 'type': 'custom', 'value': { 'hour': 10, 'day_of_week': '6' } },
      'include_columns': ['newvalue', 'reason'],
      'row_filter': 'newvalue STARTSWITH "privacy"',
      'sync_deletions': false,
      'fetch_display_values': true
    });
    
    Copy

Enable a single table by using column filtering

If you don’t need all columns from a ServiceNow® table in Snowflake, the connector can ignore them. For example, skip columns if a single row exceeds the maximum row size of 128 MB.

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

CALL ENABLE_TABLE('<table_to_enable>', <table_config>);
Copy

Wobei:

table_to_enable

Gibt einen ServiceNow®-Tabellennamen an.

table_config

Objekt mit include_columns- oder exclude_columns-Eigenschaften mit einer Liste von Spaltennamen. Wenn sys_id, sys_created_on und sys_updated_on vorhanden sind, sind sie immer enthalten. Sie müssen sie nicht dem included_columns-Array hinzufügen und können sie auch nicht mit excluded_columns ausschließen, da der Konnektor sie beim Datenaufnahmeprozess 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 die Eigenschaft exclude_columns weglassen 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.

Zum Beispiel mit einer ServiceNow®-Tabelle namens u_table mit den Spalten sys_id, sys_updated_on, col_1 und col_2 und der Ausführung:

CALL ENABLE_TABLE('u_table', { 'include_columns': ['sys_id', 'sys_updated_on'] });
Copy

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

CALL ENABLE_TABLE('u_table', { 'exclude_columns': ['col_1'] });
Copy

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

The connector validates the provided columns and rejects the enablement request if any of the columns are not available in ServiceNow®. ServiceNow® API supports only include mode. As a result the connector transforms provided column arrays into included columns list and sends them with each request to ServiceNow®. The URL with included columns could possibly be too long to be handled by ServiceNow®. The connector validates this limitation when the ENABLE_TABLE is invoked.

Die Konfiguration der Spalten für jede Tabelle finden Sie in der Spalte INCLUDED_COLUMNS in der Ansicht CONFIGURED_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 Tabelle nur mit der Prozedur ENABLE_TABLE aktivieren. Sie können die Funktion ENABLE_TABLES nicht verwenden, die eine Liste von Tabellen als Argument akzeptiert.

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 die Spaltenfilterung nicht konfiguriert ist, enthalten die Ansichten alle verfügbaren Spalten.

Bemerkung

Die Änderung der Konfiguration hat keine Auswirkungen auf die zuvor erfassten Daten. Die Spaltenfilterung wird nur auf die neu erfassten Datensätze angewendet. Um den Filter auf die zuvor erfassten Daten anzuwenden, muss die Tabelle neu geladen werden.

Enable a single table by using row filtering

Sie können die Datenerfassung für ausgewählte Zeilen aus einer ServiceNow®-Tabelle ausschließen, indem Sie eine Filterbedingung angeben. Zum Beispiel, um die Zeilen mit sensiblen Daten auszuschließen, die Sie nicht in Snowflake haben möchten, oder um die Zeilen mit unnötigen Daten auszuschließen, um Kosten zu sparen.

Führen Sie den folgenden Befehl aus, um das Erfassen von Tabellen mit einem bestimmten Zeilenfilter zu aktivieren:

CALL ENABLE_TABLE('<table_to_enable>', <table_config>);
Copy

Wobei:

table_to_enable

Gibt einen ServiceNow®-Tabellennamen an.

table_config

Objekt mit der Eigenschaft row_filter mit einem Filter-Ausdruck, der eine gültige Zeichenfolge ist.

Die derzeit unterstützten Operatoren für Filter sind:

Operator

Beschreibung

Beispiel

AND

Logischer Operator zur Verknüpfung von Bedingungen, die beide erfüllt sein müssen.

active = "true" AND impact = "2"

OR

Logischer Operator zur Verknüpfung von Bedingungen, von denen mindestens eine erfüllt sein muss.

Wichtig

Hat Vorrang vor dem Operator AND. Siehe die Beispiele unten.

tablename = "incident" OR tablename = "problem"

=

Gibt true zurück, wenn die Werte gleich sind.

priority = "1"

!=

Gibt true zurück, wenn die Werte nicht gleich sind.

state != "7"

LIKE

Gibt true zurück, wenn der Wert die angegebene Sequenz von Zeichen enthält. [1]

newvalue LIKE "privacy"

NOT LIKE

Gibt true zurück, wenn der Wert die angegebene Sequenz von Zeichen nicht enthält. [1]

description NOT LIKE "test"

STARTSWITH

Gibt true zurück, wenn der Wert mit der angegebenen Sequenz von Zeichen beginnt. [1]

description STARTSWITH "important"

ENDSWITH

Gibt true zurück, wenn der Wert mit der angegebenen Sequenz von Zeichen endet. [1]

description ENDSWITH "important"

IN

Gibt true zurück, wenn der Wert gleich einem der Werte der Liste ist. [2]

tablename IN ("incident", "task", "cmdb_ci")

NOT IN

Gibt true zurück, wenn der Wert nicht gleich einem der Werte der Liste ist. [2]

status NOT IN ("in progress", "on hold", "cancelled")

[1] – Die Felder müssen vom Datentyp string sein.

[2] – Die Auswahlfelder müssen Zeichenfolgen enthalten.

Regeln und Beschränkungen für den Filter-Ausdruck:

  • zwei beliebige Filter-Ausdrücke müssen mit den Operatoren AND oder OR verbunden werden.

  • Operatoren müssen durch Leerzeichen getrennt sein und in Großbuchstaben geschrieben werden.

  • Wertausdrücke müssen in doppelte Anführungszeichen gesetzt werden.

  • Bei Ausdrücken wird zwischen Groß- und Kleinschreibung unterschieden.

  • Der Ausdruck kann nicht auf den Spalten sys_id, sys_updated_on oder sys_created_on operieren.

Bemerkung

Änderungen an der Konfiguration wirken sich nicht auf die zuvor erfassten Daten aus. Das Filtern von Zeilen gilt nur für die neu erfassten Datensätze. Um den Filter auf die bereits erfassten Daten anzuwenden, muss die Tabelle neu geladen werden.

Beispiele

  • Um die Erfassung der Tabelle sys_audit zu aktivieren, aber nur die Zeilen zu synchronisieren, die sich auf die Datenschutzvorfälle in der Tabelle INCIDENT beziehen, führen Sie aus:

CALL ENABLE_TABLE('sys_audit', {
  'row_filter': 'tablename = "incident" AND fieldname = "cause" AND newvalue LIKE "privacy"'
});
Copy
  • Um das Erfassen der Tabelle incident zu ermöglichen, synchronisieren Sie nur die Zeilen, die den Bedingungen entsprechen:

    • active Feld ist gleich true,

    • sys_created_by Feld beginnt mit support oder endet mit admin,

    • category Feld ist eines von Network, Cloud Management,

    führen Sie aus:

CALL ENABLE_TABLE('incident', {
  'row_filter': 'active = "true" AND sys_created_by STARTSWITH "support" OR sys_created_by ENDSWITH "admin" AND category IN ("Network", "Cloud Management")'
});
Copy
  • Um die Erfassung der Tabelle incident zu aktivieren, aber nur die Zeilen im angegebenen Ereignisstatus und nur die angegebenen Spalten aufzunehmen, führen Sie aus:

CALL ENABLE_TABLE('incident', {
  'row_filter': 'incident_state IN ("1", "2", "3")', -- "New", "In Progress", "On Hold"
  'include_columns': ['incident_state', 'description']
});
Copy

Specify the synchronization schedule

Der Snowflake Connector for 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_DATA_INGESTION_SCHEDULE mit den folgenden Argumenten auf:

CALL CONFIGURE_DATA_INGESTION_SCHEDULE(<schedule>);
Copy

Wobei:

schedule

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

  • { 'type': 'continuous' }, was einem Zeitplan für die Datenaufnahme nahezu in Echtzeit entspricht. Eine Tabelle mit diesem Synchronisierungszeitplan verwendet einen dedizierten Worker, um Daten aufzunehmen, und wird nicht auf die maximale Anzahl von Tabellen angerechnet, die parallel synchronisiert werden können. Weitere Informationen dazu finden Sie unter Skalieren des Konnektors. Sie können bis zu 20 Tabellen mit einem kontinuierlichen Zeitplan konfigurieren.

    Warnung

    Tabellen mit kontinuierlichem Zeitplan verursachen eine erhöhte Last für die ServiceNow®-Instanz. Außerdem führt dies dazu, dass das Konnektor-Warehouse ständig genutzt wird, was den Verbrauch von Warehouse-Credits erhöht. Snowflake empfiehlt die Verwendung kontinuierlicher Zeitpläne mit Bedacht und nur für Tabellen, die Daten nahezu in Echtzeit in Snowflake erfordern. Um das Überladen einer ServiceNow®-Instanz zu verhindern, implementiert der Konnektor einen Erkennungsmechanismus, der in der Lage ist, fehlerhafte Tabellen mit kontinuierlichem Zeitplan automatisch zu deaktivieren. Weitere Informationen dazu finden Sie unter Tabelle mit kontinuierlichem Zeitplan, durch den Konnektor deaktiviert.

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

    • '30m'

    • '1h'

    • '3h'

    • '6h'

    • '12h'

    • '1d'

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

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

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

    • '0,5,6', um die Datenaufnahme 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.

Es ist möglich, den Datenaufnahme-Zeitplan für eine bestimmten Tabelle zu konfigurieren, während diese aktiviert wird. Um eine einzelne Tabelle zu aktivieren und ihren Zeitplan für die Datenaufnahme festzulegen, rufen Sie die gespeicherte Prozedur ENABLE_TABLE mit den folgenden Argumenten auf:

CALL ENABLE_TABLE('<table_name>', <table_config>);
Copy

Wobei:

table_name

Gibt einen ServiceNow®-Tabellennamen an, der aktiviert werden soll.

table_config

Objekt mit der Eigenschaft schedule, die die Konfiguration der Tabellensynchronisierung angibt. Weitere Informationen dazu finden Sie unter schedule der gespeicherten Prozedur CONFIGURE_DATA_INGESTION_SCHEDULE.

Um zum Beispiel die Datenaufnahme der Tabelle table_1 zu aktivieren und die Daten alle 3 Stunden zu synchronisieren, rufen Sie die folgende gespeicherte Prozedur auf:

CALL ENABLE_TABLE('table_1', { 'schedule': { 'type': 'interval', 'value': '3h' } });
Copy

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. Weitere Informationen dazu finden Sie unter schedule der gespeicherten Prozedur CONFIGURE_DATA_INGESTION_SCHEDULE.

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

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

Standardmäßig versucht der Konnektor, die Datenaufnahme in einem Zeitfenster von 3 Stunden ab der geplanten Startzeit zu beginnen. Wenn es nicht möglich ist, die Datenaufnahme 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 Datenerfassung im nächsten geplanten Zeitfenster auszuführen. Sie können die Dauer des Zeitrahmens ändern, indem Sie die gespeicherte Prozedur CONFIGURE_CUSTOM_SCHEDULE_START_INGESTION_WINDOW aufrufen:

CALL CONFIGURE_CUSTOM_SCHEDULE_START_INGESTION_WINDOW(<window_length>);
Copy

wobei window_length die Fensterlänge im Format ISO 8601 für die Zeitdauer angibt. Die Dauer muss auf die nächste 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 Datenaufnahme 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.

Specify whether deletions should be synchronized

Sie können angeben, ob der Konnektor Löschungen von ServiceNow® mit Snowflake synchronisieren soll. Standardmäßig synchronisiert der Konnektor Löschungen, wenn eine Journaltabelle konfiguriert ist. Es kann jedoch sein, dass Sie die Löschsynchronisierung einer bestimmten Tabelle deaktivieren und die globale Konfiguration nicht ändern möchten.

Um die Erfassung von Tabellen mit der angegebenen Einstellung für die Löschsynchronisierung zu aktivieren, führen Sie den folgenden Befehl aus:

CALL ENABLE_TABLE('<table_to_enable>', <table_config>);
Copy

Wobei:

table_to_enable

Gibt einen ServiceNow®-Tabellennamen an.

table_config

Objekt mit der booleschen Eigenschaft sync_deletions. Wenn der Wert auf true gesetzt ist, synchronisiert der Konnektor Löschungen für die Tabelle; wenn der Wert auf false gesetzt ist, synchronisiert er keine Löschungen für die Tabelle.

Um zum Beispiel die Erfassung der Tabelle incident zu aktivieren, aber die Löschungen nicht zu synchronisieren, führen Sie den folgenden Befehl aus:

CALL ENABLE_TABLE('incident', { 'sync_deletions': false });
Copy

Bemerkung

Wenn Sie die Standardkonfiguration verwenden möchten, geben Sie die Eigenschaft sync_deletions im Konfigurationsobjekt nicht an. Wenn die Journaltabelle nicht konfiguriert ist, synchronisiert der Konnektor unabhängig von der bereitgestellten Konfiguration keine Löschungen.

Specify whether display values should be fetched

Der Konnektor kann Anzeigewerte für alle unterstützten Arten von Feldern in ServiceNow® abrufen. Anzeigewerte sind lesbare Werte, die den tatsächlich in der Datenbank gespeicherten Werten entsprechen. Ein Feld mit einem Wert von 1 könnte beispielsweise den Anzeigewert High haben. Weitere Informationen zu den Anzeigewerten siehe die ServiceNow®-Dokumentation.

Der aufgelöste Wert wird in einer vereinfachten Ansicht in einer separaten Spalte mit dem Suffix __DISPLAY_VALUE angezeigt. Der Konnektor erstellt Text- und boolesche Spalten mit den Snowflake-Typen, aber für andere Typen, z. B. verschiedene mögliche Formate von Zahlen- oder Datumswerten, werden die Anzeigewerte als Varianten gespeichert.

Warnung

Metadaten-Tabellen werden für das Abrufen von Anzeigewerten nicht unterstützt.

Bemerkung

Änderungen an der Konfiguration wirken sich nicht auf die zuvor erfassten Daten aus. Das Abrufen von Anzeigewerten gilt nur für die neu erfassten Datensätze. Um Anzeigewerte für die bereits erfassten Daten abzurufen, muss die Tabelle neu geladen werden.

Abrufen von Anzeigewerten pro Tabelle

Um den Abruf von Anzeigewerten für eine bestimmte Tabelle zu aktivieren, rufen Sie die gespeicherte Prozedur ENABLE_TABLE mit den folgenden Argumenten auf:

CALL ENABLE_TABLE('<table_to_enable>', <table_config>);
Copy

Wobei:

table_to_enable

Gibt einen ServiceNow®-Tabellennamen an.

table_config

Objekt mit der booleschen Eigenschaft fetch_display_values. Wenn der Wert auf true gesetzt ist, ruft der Konnektor Anzeigewerte für die Tabelle ab; wenn der Wert auf false (Standard) gesetzt ist, ruft er sie für die Tabelle nicht ab.

Um z. B. die Erfassung der Tabelle incident zu aktivieren und die Anzeigewerte dafür abzurufen, führen Sie den folgenden Befehl aus:

CALL ENABLE_TABLE('incident', { 'fetch_display_values': true });
Copy

Bemerkung

Die Konfiguration pro Tabelle wird von der globalen Konfiguration nicht beeinflusst.

Configure default display values fetching setting for all tables

Um den Abruf von Anzeigewerten für alle Tabellen zu aktivieren, rufen Sie die gespeicherte Prozedur CONFIGURE_DISPLAY_VALUE_FETCHING mit den folgenden Argumenten auf:

CALL CONFIGURE_DISPLAY_VALUE_FETCHING(<fetch_display_values>);
Copy

Wobei:

fetch_display_values

Gibt einen booleschen Wert an. Wenn der Wert auf true gesetzt ist, ruft der Konnektor Anzeigewerte für alle Tabellen ab; wenn der Wert auf false (Standard) gesetzt ist, ruft er sie standardmäßig für keine Tabelle ab.

Um zum Beispiel das Abrufen von Anzeigewerten für alle Tabellen zu aktivieren, führen Sie den folgenden Befehl aus:

CALL CONFIGURE_DISPLAY_VALUE_FETCHING(true);
Copy

Specify the data range start time

Standardmäßig synchronisiert der Snowflake Connector for 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.

With such a configuration, records with the corresponding time column value older than the data range start timestamp are not ingested. The corresponding time column used by this procedure is determined in the same way as for the incremental updates .

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 Datenaufnahme der Tabelle noch nicht begonnen wurde, wird der Wert für die Startzeit des Datenbereichs bei der erstmaligen Datenaufnahme berücksichtigt.

  • Wenn die Datenaufnahme 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 Datenaufnahme 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:

  • for table table1, for example, if its ingestion has not started yet, all records with a corresponding time column value before 2022-11-23 07:00:00 are not ingested.

  • for table table2, for example, if its ingestion has already started, the data range time start value is ignored in all data synchronizations until reloading this table. During the reload, all records with a corresponding time column value before 2022-11-23 07:00:00 are not ingested.

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 Datenaufnahme der Tabelle table1 begonnen wurde, ist ein Neuladen dieser Tabelle erforderlich, um die Datenaufnahme aller Datensätze aus ServiceNow® zurückzunehmen.

Bemerkung

Loading data with the data range start time may take longer than loading all historical data because of lower performance of incremental updates.

Reload data in a table

Der Konnektor ermöglicht es Ihnen, Daten erneut in eine Tabelle zu laden. Dies ist nützlich, wenn Sie die Änderungen an der Konfiguration auf die bereits aufgenommenen Daten anwenden möchten oder wenn Sie sicherstellen möchten, dass die Daten auf dem gleichen Stand sind wie die Quelle.

Es gibt zwei Arten von erneutem Laden: vollständiges Neuladen für einen vollständigen Datenaustausch und gefiltertes Laden, das nur auf einen Teil der Daten abzielt, indem Bedingungen für das Neuladen festgelegt werden.

Bemerkung

Bei jedem Neuladen wird die aktuelle Konfiguration der neu geladenen Tabelle berücksichtigt. Dadurch kann z. B. eingeschränkt werden, welche Datensätze aufgenommen werden.

Um die Konfiguration der Haupttabelle anzuzeigen, überprüfen Sie die Ansicht CONFIGURED_TABLES.

Um die Ergebniskonfiguration der neu geladenen Tabelle anzuzeigen, überprüfen Sie die Ansicht RELOADED_TABLES.

Full reload

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 nimmt die Daten in diese neue temporäre Tabelle auf. Diese Tabelle wird in der Ansicht CONNECTOR_STATS als eine Tabelle mit dem Suffix __tmp angezeigt.

  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 Datenaufnahmeprozess abgeschlossen ist.

Gefiltertes Neuladen

Um nur einen Teil der Daten in einer bestimmten Tabelle neu zu laden, rufen Sie die gespeicherte Prozedur RELOAD_TABLE mit einem Konfigurationsobjektparameter auf:

CALL RELOAD_TABLE('<table_name>', <config>);
Copy

Wobei:

table_name

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

config

Gibt die Konfiguration für das Neuladen an. Das Konfigurationsobjekt kann die folgenden Eigenschaften enthalten:

  • sys_ids: Ein Array von ServiceNow®-Datensatzbezeichnern (sys_id), die neu geladen werden sollen.

  • data_reload_range_start_time und data_reload_range_end_time: Zeitstempelwerte, die den Datenbereich im Format TIMESTAMP_TZ angeben Abhängig vom angegebenen Tabellenaufnahmetyp werden nur Datensätze mit sys_updated_on oder sys_created_on innerhalb des angegebenen Zeitrahmens neu geladen.

  • conditions: Ein Zeichenfolgenausdruck, der die Bedingungen für die Felder in einer ServiceNow®-Tabelle angibt. Nur die Datensätze, die die Bedingungen erfüllen, werden neu geladen.

    Die Syntax des Ausdrucks ist identisch mit der für die Zeilenfilterung. Wenn das Filtern von Zeilen in der regulären Tabelle konfiguriert ist, wird es auch auf die Bedingungen angewendet.

Im Gegensatz zum vollständigen Neuladen werden beim gefilterten Neuladen nicht die Daten in der ursprünglichen Tabelle ersetzt, sondern nur die ausgewählten Datensätze geändert.

Tipp

Direkt nachdem Sie eine große Tabelle zum ersten Mal für die Datenaufnahme aktiviert haben, können Sie schnell eine kleine Teilmenge von Datensätzen aufnehmen, die von Interesse sind, ohne darauf warten zu müssen, dass das erstmalige Laden mithilfe eines gefilterten Neuladens abgeschlossen ist.

Bemerkung

Die Zeitbereiche data_reload_range_start_time und data_reload_range_end_time und der Filter conditions können gleichzeitig verwendet werden. Die Datensätze, die beide Bedingungen erfüllen, werden neu geladen.

sys_ids ist exklusiv mit anderen Konfigurationseigenschaften.

Um beispielsweise nur Datensätze mit den sys_id-Werten 1, 2 und 3 in der Tabelle incident neu zu laden, führen Sie den folgenden Befehl aus:

CALL RELOAD_TABLE('incident', { 'sys_ids': ['1', '2', '3'] });
Copy

Um nur Datensätze mit sys_updated_on-Werten zwischen 2022-11-23 07:00:00 und 2022-11-23 08:00:00 UTC zu laden, die noch in der Tabelle incident aktiv sind, führen Sie den folgenden Befehl aus:

CALL RELOAD_TABLE('incident', {
  'data_reload_range_start_time': TO_TIMESTAMP_TZ('2022-11-23 07:00:00 +00:00'),
  'data_reload_range_end_time': TO_TIMESTAMP_TZ('2022-11-23 08:00:00 +00:00'),
  'conditions': 'active = "true"'
});
Copy

Cancel table reload

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.

Configure the use of read replicas

Um den Konnektor für die Verwendung von Lesereplikaten in der ServiceNow®-Umgebung zu konfigurieren, können Sie eine kundenspezifische Abfragekategorie einrichten. Diese Konfiguration ermöglicht dem Konnektor, API-Anforderungen an Lesereplikate anstatt an die primäre Instanz weiterzuleiten, was die Verteilung der Last unterstützen und die Leistung verbessern kann.

Um eine kundenspezifische Abfragekategorie für die Verwendung von Lesereplikaten zu konfigurieren, rufen Sie die gespeicherte Prozedur CONFIGURE_QUERY_CATEGORY mit dem folgenden Argument auf:

CALL CONFIGURE_QUERY_CATEGORY('<query_category>');
Copy

Wobei:

query_category

Gibt den Abfragekategorie-Bezeichner an, der zu ServiceNow® API-Anforderungen hinzugefügt wird.

Wenn dies konfiguriert ist, fügt der Konnektor den Parameter sysparm_query_category=<query_category> zu allen ServiceNow® API-Anforderungen hinzu und ermöglicht ServiceNow® auf diese Weise, diese Anforderungen basierend auf der Instanzkonfiguration an die entsprechenden Lesereplikate weiterzuleiten.

Der Standardwert für die Abfragekategorie, der während der Installation des Konnektors festgelegt wurde, ist list.

Angenommen, der Konnektor ist so konfiguriert, dass er eine Abfragekategorie namens connector_replica verwendet. Führen Sie den folgenden Befehl aus:

CALL CONFIGURE_QUERY_CATEGORY('connector_replica');
Copy

Configure the size of a single page fetch for a table

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.

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 TABLES_STATE verfügbar. Um die Seitengröße anzuzeigen, führen Sie folgenden Befehl aus:

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

Wobei:

table_name

Gibt den Namen der ServiceNow®-Tabelle an, die aufgenommen 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 in den folgenden Beispielen gezeigt:

CALL RESET_PAGE_SIZE('<table_name>');
Copy

oder

CALL RESET_PAGE_SIZE('<table_name>', <page_size>);
Copy

Wobei:

table_name

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

page_size

(Optional) Gibt die Anzahl der Zeilen an, die auf einer einzelnen Seite abgerufen werden sollen. Wenn keine Angaben gemacht werden, wird der in der Konfiguration des Konnektors angegebene Standardwert verwendet. Der Standardwert und empfohlene Wert ist 10000. Der Mindestwert ist 1 und der Höchstwert ist 25000.

Bemerkung

Die Seitengröße kann auch für eine konfigurierte Journaltabelle festgelegt werden, normalerweise sys_audit_delete. Wenn beim Erfassen von Löschungen aus einer unterdurchschnittlichen Journaltabelle Fehler auftreten, können Sie die Seitengröße verringern, um weitere Fehler zu vermeiden.

Beachten Sie, dass die Journaltabelle nicht explizit für die Erfassung aktiviert werden muss, damit der Konnektor gelöschte Zeilen synchronisiert.

Datenaufnahmelauf

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.

Nächste Schritte

Führen Sie nach der Konfiguration der Datenaufnahme die unter Access the ServiceNow® data in Snowflake beschriebenen Schritte durch, um ServiceNow®-Daten anzuzeigen oder anderweitig darauf zuzugreifen.