Einrichten der Datenerfassung (Data Ingestion) für Ihre ServiceNow®-Daten¶
Der Snowflake-Konnektor für ServiceNow® unterliegt den Nutzungsbedingungen für Konnektoren.
Unter diesem Thema wird beschrieben, wie Sie die Datenerfassung (Data Ingestion) für den Snowflake Connector for ServiceNow® einrichten.
Bemerkung
Der Snowflake Connector for 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 Phase des erstmaligen Ladens 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
- odersys_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
- odersys_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 alssys_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:
Melden Sie sich bei Snowsight als Benutzer mit der Rolle ACCOUNTADMIN an.
Wählen Sie im Navigationsmenü die Option Data Products » Marketplace aus.
Suchen Sie nach dem Snowflake-Konnektor für ServiceNow®, und wählen Sie dann die Kachel für den Konnektor aus.
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.Wählen Sie die Tabellen aus, die Sie importieren möchten:
Suchen Sie nach der Tabelle, die Sie erfassen möchten.
Aktivieren Sie das Kontrollkästchen in der Spalte Status neben der Tabelle, die Sie auswählen möchten.
Wählen Sie unter Synch Schedule aus, wie häufig Sie die Tabelle zwischen Snowflake und ServiceNow synchronisieren möchten.
Wiederholen Sie diese Schritte für jede Tabelle, die Sie in Snowflake erfassen möchten.
Wählen Sie die Überschrift der Spalte Status aus, um die aktuell ausgewählten Tabellen anzuzeigen.
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:
Melden Sie sich bei Snowsight als Benutzer mit der Rolle ACCOUNTADMIN an.
Wählen Sie im Navigationsmenü die Option Data Products » Marketplace aus.
Suchen Sie nach dem Snowflake-Konnektor für ServiceNow®, und wählen Sie dann die Kachel für den Konnektor aus.
Wählen Sie auf der Seite für Snowflake Connector for ServiceNow® die Option Edit aus.
Ändern Sie die Tabellen, die Sie erfassen möchten:
Suchen Sie nach der Tabelle, die Sie erfassen möchten.
Aktivieren Sie das Kontrollkästchen in der Spalte Status neben der Tabelle, die Sie auswählen oder Auswahl entfernen möchten.
Wählen Sie unter Synch Schedule aus, wie häufig Sie die Tabelle zwischen Snowflake und ServiceNow synchronisieren möchten.
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;
Festlegen des Synchronisierungszeitplans¶
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_CONNECTOR
mit den folgenden Argumenten auf:
CALL CONFIGURE_CONNECTOR('data_ingestion_schedule', '<schedule>');
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>);
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>' }
, wobeiinterval_value
einer der folgenden Zeichenfolgenwerte ist:
'30m'
'1h'
'3h'
'6h'
'12h'
'1d'
{ 'type': 'custom', 'value': { 'hour': <hour>, 'dayOfWeek': '<day_of_week>' } }
, wobeihour
die Stunde in der UTC-Zeitzone angibt, zu der die Erfassung beginnen soll, undday_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'
- SamstagAndere 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
undtable_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' } });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>);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>');
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 ProzedurCONFIGURE_CONNECTOR('data_ingestion_schedule', 'schedule')
festgelegt haben.
Festlegen der Startzeit des Datenbereichs¶
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.
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>);
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'));
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);
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>);
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']);
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>);
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']);
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 Connector for 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>);
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 oderFALSE
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();
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:
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;
Entfernen Sie in der von diesem Befehl zurückgegebenen Liste alle Tabellen, die nicht synchronisiert werden sollen.
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>);
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
undsys_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
undsys_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'], []);
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']);
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>');
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:
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.
Der Konnektor erstellt eine separate temporäre Tabelle für die Erfassung.
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.
Nach dem Erfassen der Daten ersetzt der Konnektor die Daten in der Originaltabelle durch die Daten in der temporären Tabelle.
Der Konnektor löscht die temporäre Tabelle.
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>');
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:
Anfänglich ist die Standardseitengröße auf 10.000 Zeilen eingestellt.
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.
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>';
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>');
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
.
Nächste Schritte¶
Führen Sie nach der Konfiguration der Datenerfassung die unter Zugriff auf ServiceNow®-Daten in Snowflake beschriebenen Schritte durch, um ServiceNow-Daten anzuzeigen oder anderweitig darauf zuzugreifen.