Einrichten der Datenaufnahme (Data Ingestion) für Ihre ServiceNow®-Daten¶
Der Snowflake Connector für ServiceNow® V2 unterliegt den Nutzungsbedingungen für Snowflake Connector.
Unter diesem Thema wird beschrieben, wie Sie die Datenaufnahme für den Snowflake Connector for ServiceNow®V2 einrichten.
Bemerkung
Der Snowflake Connector for ServiceNow®V2 nimmt Daten aus ServiceNow®-Tabellen in Snowflake auf. Die Datenaufnahme hängt von v2
der ServiceNow®-Tabellen-API ab.
Unter diesem Thema:
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. 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 erfassten 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.
Bemerkung
Die Informationen über Löschungen stammen aus der Journaltabelle, die während der Konfiguration des Konnektors bereitgestellt wird.
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.
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 aufnehmen, wenn eine einzelne Zeile mehr als 16 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, erzeugt der Konnektor eine Fehlermeldung und fährt mit dem Erfassen anderer Tabellen fort. Um diese Beschränkung zu überwinden, können Sie Spaltenfilter so konfigurieren, dass große Spalten vom Erfassen ausgeschlossen werden.
Archivierte Datensätze¶
Der Konnektor spiegelt nicht aktiv die in ServiceNow auf Snowflake-Seite für die aufgenommenen Tabellen archivierten Datensätze wider. Unter der Annahme, dass Sie inaktive Datensätze, die älter als ein bestimmtes Datum sind, archivieren, gilt Folgendes:
Jeder Datensatz, der archiviert wurde, bevor der Konnektor ihn aufgenommen hat (z. B. vor dem erstmaligen Laden der Tabelle), ist in der Tabelle auf Snowflake-Seite nicht vorhanden.
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).Ein archivierter Datensatz, der während des erstmaligen Ladens der Tabelle wiederhergestellt wurde, kann auf Snowflake-Seite abhängig von seiner ID in die Spalte
sys_id
aufgenommen werden.
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.
Parallele Datenaufnahme 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. Standardmäßig verwendet der Konnektor 10 Worker-Threads, was als optimaler Wert angesehen wird, um die ServiceNow®-Instanz nicht zu überlasten. 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 Prozedur CONFIGURE_CONCURRENCY aufrufen.
Einrichten der Datenaufnahme mit Snowsight¶
Um die Datenaufnahme 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 » Apps aus.
Suchen Sie nach der Snowflake Connector für ServiceNow®V2-App, und wählen Sie dann die Kachel für den Konnektor aus.
Wählen Sie auf der Seite für den Snowflake Connector for ServiceNow®V2 die Option Data Sync 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 neben der Tabelle, die Sie auswählen möchten, das Kontrollkästchen in der Spalte Status.
Wählen Sie unter Sync 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 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®V2 finden Sie Informationen darüber, wie Sie den Inhalt der Tabellen in Snowflake anzeigen können.
Ändern der Datenerfassung mit Snowsight¶
Um die aufzunehmenden 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 » Apps aus.
Suchen Sie nach der Snowflake Connector für ServiceNow®V2-App, und wählen Sie dann die Kachel für den Konnektor aus.
Wählen Sie auf der Seite für den Snowflake Connector for ServiceNow®V2 die Option Data Sync aus.
Wählen Sie die Schaltfläche Edit tables aus, um in den Bearbeitungsmodus zu wechseln.
Ändern Sie die Tabellen, die Sie erfassen möchten:
Suchen Sie nach der Tabelle, die Sie erfassen möchten.
Aktivieren oder deaktivieren Sie neben der Tabelle, die Sie auswählen bzw. abwählen möchten, das Kontrollkästchen in der Spalte Status.
Wählen Sie unter Sync Schedule aus, wie häufig Sie die Tabelle zwischen Snowflake und ServiceNow® synchronisieren möchten.
Wählen Sie Update data sync 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;
Aktivieren oder Deaktivieren der Tabellensynchronisation¶
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.
Aktivieren mehrerer Tabellen in der Standardkonfiguration¶
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>);
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']);
Deaktivieren mehrerer Tabellen¶
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>);
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']);
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
Wenn Sie alle Tabellen von der Synchronisierung ausschließen, bedeutet das nicht, dass Snowflake Connector for ServiceNow®V2 keine Kosten mehr verursacht. Hintergrundaufgaben, z. B. im Zusammenhang mit Benachrichtigungen, können weiterhin ausgeführt werden.
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 ` neu laden :ref:`<label-servicenow_connector_reload_table_v2>.
Aktivieren einer einzelnen Tabelle über eine benutzerdefinierte Konfiguration¶
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>);
Wobei:
table_to_enable
Gibt einen ServiceNow®-Tabellennamen an.
table_config
Optional, gibt ein Objekt mit der Konfiguration der Tabellenerfassung an. Wenn nicht angegeben, wird für die Tabellenerfassung die Standardkonfiguration verwendet.
Folgende Konfigurationen werden derzeit unterstützt:
Spaltenfilterung, wo Sie
include_columns
oderexclude_columns
Eigenschaften mit einer Liste von Spaltennamen angeben können,Zeilenfilterung, wobei Sie die Eigenschaft
filter
mit einem Filter-Ausdruck versehen können,Zeitplan für die Synchronisierung, wo Sie
schedule
Eigenschaften mit einem benutzerdefinierten Zeitplan für die Erfassung bereitstellen können.
Bemerkung
Alle benutzerdefinierten Konfigurationen können in einem einzigen Objekt kombiniert und gleichzeitig für die Erfassung einer einzelnen Tabelle verwendet werden, z. B. um die Erfassung der Tabelle
sys_audit
mit der folgenden Konfiguration zu ermöglichen:die Tabelle sollte jeden Samstag um 10:00 Uhr synchronisiert werden AM UTC,
es sollten nur die Spalten
newvalue
undreason
erfasst werden,es sollten nur die Zeilen erfasst werden, deren Spalte
newvalue
mit der Zeichenfolgeprivacy
beginnt,
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"' });
Aktivieren einer einzelnen Tabelle durch Spaltenfilterung¶
Wenn Sie nicht alle Spalten einer ServiceNow®-Tabelle in Snowflake benötigen, kann der Konnektor sie ignorieren. Überspringen Sie zum Beispiel Spalten, wenn eine einzelne Zeile die maximale Zeilengröße von 16 MB überschreitet.
Um das Erfassen von Tabellen mit bestimmten Spalten zu aktivieren, führen Sie den folgenden Befehl aus:
CALL ENABLE_TABLE('<table_to_enable>', <table_config>);
Wobei:
table_to_enable
Gibt einen ServiceNow®-Tabellennamen an.
table_config
Objekt mit
include_columns
- oderexclude_columns
-Eigenschaften mit einer Liste von Spaltennamen. Wennsys_id
,sys_created_on
undsys_updated_on
vorhanden sind, sind sie immer enthalten. Sie müssen sie nicht demincluded_columns
-Array hinzufügen und können sie auch nicht mitexcluded_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'] });
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('u_table', { 'exclude_columns': ['col_1'] });
In diesem Fall werden sys_id
, sys_updated_on
und auch col_2
erfasst.
Der Konnektor überprüft die angegebenen Spalten und lehnt die Anfrage zur Aktivierung ab, wenn eine der Spalten in ServiceNow® nicht verfügbar ist. ServiceNow® API unterstützt nur den Modus „include“. Daraufhin wandelt der Konnektor die bereitgestellten Arrays in eine Liste der enthaltenen Spalten um und sendet sie mit jeder Anfrage an ServiceNow®. Die URL mit enthaltenen Spalten könnte möglicherweise zu lang sein, um von ServiceNow® verarbeitet zu werden. Der Konnektor validiert diese Einschränkung, wenn ENABLE_TABLE
aufgerufen wird.
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.
Aktivieren einer einzelnen Tabelle mithilfe des Filterns von Zeilen¶
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>);
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"
=
Prüft, ob die Werte gleich sind.
priority = "1"
!=
Prüft, ob die Werte nicht gleich sind.
state != "7"
LIKE
Prüft, ob der Wert die angegebene Sequenz von Zeichen enthält.*
newvalue LIKE "privacy"
STARTSWITH
Prüft, ob der Wert mit der angegebenen Sequenz von Zeichen beginnt.*
description STARTSWITH "important"
ENDSWITH
Prüft, ob der Wert mit der angegebenen Sequenz von Zeichen endet.*
description ENDSWITH "important"
IN
Prüft, ob der Wert gleich einem beliebigen Wert aus der Liste der Werte ist.**
tablename IN ("incident", "task", "cmdb_ci")
(*) – Felder müssen vom Datentyp
string
sein. (**) – 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
oderOR
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
odersys_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 TabelleINCIDENT
beziehen, führen Sie aus:
CALL ENABLE_TABLE('sys_audit', {
'row_filter': 'tablename = "incident" AND fieldname = "cause" AND newvalue LIKE "privacy"'
});
Um das Erfassen der Tabelle
incident
zu ermöglichen, synchronisieren Sie nur die Zeilen, die den Bedingungen entsprechen:active
Feld ist gleichtrue
,sys_created_by
Feld beginnt mitsupport
oder endet mitadmin
,category
Feld ist eines vonNetwork
,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")'
});
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']
});
Festlegen des Synchronisierungszeitplans¶
Der Snowflake Connector for ServiceNow®V2 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>);
Wobei:
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>, 'day_of_week': '<day_of_week>' } }
, wobeihour
die Stunde in der UTC-Zeitzone angibt, zu der die Datenaufnahme beginnen soll, undday_of_week
den Wochentag, an dem die Datenaufnahme 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.
Es ist möglich, den Datenaufnahme-Zeitplan 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>);
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 unterschedule
der gespeicherten ProzedurCONFIGURE_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' } });
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. Weitere Informationen dazu finden Sie unter
schedule
der gespeicherten ProzedurCONFIGURE_DATA_INGESTION_SCHEDULE
.
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, 'day_of_week': '0,6' } });
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>);
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 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.
Festlegen der Startzeit des Datenbereichs¶
Standardmäßig synchronisiert der Snowflake Connector for ServiceNow®V2 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 aufgenommen. 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 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 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 Datenaufnahme der Tabelle table1
begonnen wurde, ist ein Neuladen dieser Tabelle erforderlich, um die Datenaufnahme aller Datensätze aus ServiceNow® zurückzunehmen.
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.
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 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.Bemerkung
Bei jedem Neuladen wird der Wert für die Startzeit des Datenbereichs berücksichtigt, wodurch eingeschränkt werden kann, welche Datensätze aufgenommen werden.
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 Datenaufnahmeprozess 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.
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 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>';
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 im folgenden Beispiel gezeigt:
CALL RESET_PAGE_SIZE('<table_name>');
Wobei:
table_name
Gibt den Namen der ServiceNow®-Tabelle an, die aufgenommen 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 Datenaufnahme die unter Zugriff auf ServiceNow®-Daten in Snowflake beschriebenen Schritte durch, um ServiceNow®-Daten anzuzeigen oder anderweitig darauf zuzugreifen.