Tutorial: Snowflake Native SDK for Connectors Beispiel Java-Konnektor¶
Einführung¶
Willkommen zu unserem Tutorial über einen Beispielkonnektor, der mit Snowflake Native SDK for Connectors erstellt wurde. Diese Anleitung zeigt Ihnen, wie Sie einen Beispielkonnektor erstellen, bereitstellen, installieren und konfigurieren.
Die mitgelieferte Beispielanwendung erfasst die Daten von GitHub-Problemen, indem sie sich mit GitHub API verbindet, um Informationen zu Problemen aus den angegebenen Repositorys abzurufen.
In diesem Tutorial lernen Sie Folgendes:
Erstellen eines Beispielkonnektors aus Quellen
Bereitstellen eines neuen Anwendungspakets und einer neuen Version
Installieren einer neuen Anwendungsinstanz
Konnektorinstanz für die Datenaufnahme konfigurieren
Voraussetzungen¶
Bevor Sie beginnen, müssen Sie sicherstellen, dass Sie folgende Voraussetzungen erfüllen:
Grundkenntnisse in Java
Grundkenntnisse zu Snowflake Native Apps
Grundkenntnisse zur Streamlit-UI
Zugriff auf ein Snowflake Konto mit einer
ACCOUNTADMIN
-RolleGitHub-Konto mit dem Sie GitHub Apps erstellen können
MacOS- oder Linux-Computer, um das Projekt zu erstellen und die Bereitstellungsskripte auszuführen
Bereiten Sie Ihre lokale Umgebung vor¶
Bevor Sie fortfahren, müssen Sie sicherstellen, dass alle erforderlichen Programme auf Ihrem Computer installiert sind, und das Beispiel-Repository für Konnektoren klonen.
Java-Installation¶
Snowflake Native SDK for Connectors erfordert Java LTS (Long-Term Support) Version 11 oder höher. Wenn die minimal erforderliche Version von Java nicht auf Ihrem Rechner installiert ist, müssen Sie entweder Oracle Java oder OpenJDK installieren.
Oracle Java¶
Das neueste LTS-Release der JDK kann kostenlos unter der Oracle NFTC heruntergeladen und verwendet werden. Anleitungen zum Download und zur Installation finden Sie auf der Oracle-Seite.
OpenJDK¶
OpenJDK ist eine Open-Source-Implementierung von Java. Anleitungen zum Download und zur Installation finden Sie unter openjdk.org und jdk.java.net.
Sie können auch eine OpenJDK-Version eines Drittanbieters verwenden, wie Eclipse Temurin oder Amazon Corretto.
Klonen von Repositorys¶
Klonen Sie das Repository connectors-native-sdk auf Ihren Rechner.
Snowflake-CLI-Konfiguration¶
Das Tool Snowflake CLI ist erforderlich, um den Konnektor zu erstellen, bereitzustellen und zu installieren. Wenn Sie Snowflake CLI nicht auf Ihrem Computer haben, installieren Sie es gemäß den Anweisungen, die Sie hier https://docs.snowflake.com/en/developer-guide/snowflake-cli/installation/installation finden.
Nachdem das Tool installiert ist, müssen Sie in Ihrer Konfigurationsdatei eine Verbindung zu Snowflake konfigurieren.
Wenn Sie noch keine Verbindung konfiguriert haben, erstellen Sie eine neue mit dem Namen native_sdk_connection
. Eine Beispielverbindung finden Sie in der Datei deployment/snowflake.toml
.
Wenn Sie bereits eine Verbindung konfiguriert haben und diese mit dem Konnektor verwenden möchten, verwenden Sie den Namen der Verbindung anstelle von native_sdk_connection
, wenn diese in diesem Tutorial verwendet wird.
Projektstruktur¶
Das Projekt Snowflake Native SDK for Connectors besteht aus mehreren Hauptelementen.
Natives SDK für Java-Konnektoren¶
Das Verzeichnis connectors-native-sdk-java
enthält den gesamten Java-Code von Snowflake Native SDK for Connectors, mit Unit- und Integrationstests für die SDK-Komponenten. Aufgrund der Natur von Native Apps in Snowflake bedeutet dies nicht nur Java-Code, sondern auch SQL-Code, der zur Erstellung einer funktionierenden Anwendung erforderlich ist. Die Definitionen der Datenbankobjekte finden Sie im Verzeichnis src/main/resources
. Diese Dateien werden beim Erstellen einer Anwendung verwendet, um festzulegen, welche Objekte in der Anwendung verfügbar sein sollen. In dem Beispielkonnektor verwenden wir die Datei all.sql
, die Objekte für alle verfügbaren Features erstellt. Diese Datei wird während des Installationsprozesses der Anwendungsinstanz ausgeführt.
Test des nativen Konnektor-SDK in Java¶
Das Verzeichnis connectors-native-sdk-test-java
enthält den Quellcode einer Hilfsbibliothek, die in Unit-Tests verwendet wird, z. B. Objekte, die zum Nachahmen bestimmter Komponenten verwendet werden, benutzerdefinierte Assertionen usw. Diese Dateien sind nicht Teil der Konnektor-Anwendung.
Beispiel-Java-GitHub-Konnektor¶
Der eigentliche Beispielkonnektor befindet sich im Verzeichnis examples/connectors-native-sdk-example-java-github-connector
. Das Verzeichnis app/
enthält alle Dateien, die zur Ausführung der Native App benötigt werden:
Das Verzeichnis
app/streamlit/
enthält Quelldateien, die zur Ausführung der Streamlit-UI des Konnektors erforderlich sind.Die
setup.sql
-Datei wird während der Installation der Anwendungsinstallation ausgeführt und ist für die Erstellung der erforderlichen Datenbankobjekte verantwortlich. Diese Datei führt die zuvor erwähnte Dateiall.sql
sowie einen benutzerdefinierten SQL-Code aus.Die
manifest.yml
-Datei ist das Manifest der Native App. Es ist erforderlich, ein Anwendungspaket und dann die Anwendungsinstanz selbst zu erstellen. In dieser Datei werden die Anwendungseigenschaften sowie die von der Anwendung benötigten Berechtigungen festgelegt.
Zusätzlich enthält das Verzeichnis examples/connectors-native-sdk-example-java-github-connector
das Unterverzeichnis src/
, das die benutzerdefinierte Konnektorlogik enthält, wie z. B. die Implementierung der erforderlichen Klassen und Anpassungen der Standardkomponenten SDK.
Natives SDK für Template Konnektoren¶
Eine Vorlage für ein Gradle-Java-Projekt, das Snowflake Native SDK for Connectors als Abhängigkeit verwendet, damit Sie schnell einen neuen Konnektor erstellen können. Mehr dazu erfahren Sie unter Tutorial: Snowflake Native SDK for Connectors Java-Konnektor-Vorlage.
Erstellung, Bereitstellung und Installation¶
In den folgenden Abschnitten erfahren Sie, wie Sie den Beispielkonnektor erstellen, bereitstellen und installieren.
Erstellen des Konnektors¶
Das Erstellen eines Konnektors, der mit Snowflake Native SDK for Connectors erstellt wurde, unterscheidet sich ein wenig vom Erstellen einer typischen Java-Anwendung. Neben der Erstellung der .jar-Archive aus den Quellen gibt es noch einige andere Dinge, die erledigt werden müssen. Das Erstellen der Anwendung besteht aus den folgenden Schritten:
Kopieren benutzerdefinierter interner Komponenten in das Build-Verzeichnis
Kopieren der SDK-Komponenten in das Build-Verzeichnis
Kopieren interner Komponenten¶
In diesem Schritt wird die .jar-Datei für den Konnektor erstellt und dann (zusammen mit den UI-, Manifest- und Setup-Dateien) in das Verzeichnis sf_build
kopiert.
Um diesen Schritt auszuführen, führen Sie den Befehl: ./gradlew copyInternalComponents
aus.
Kopieren der SDK-Komponenten¶
Dieser Schritt kopiert die SDK. jar-Datei (die als Abhängigkeit zum Gradle-Modul des Konnektors hinzugefügt wurde) in das sf_build
-Verzeichnis und extrahiert gebündelte .sql-Dateien aus dem .jar-Archiv.
Diese .sql-Dateien ermöglichen die Anpassung der bereitgestellten Objekte, die bei der Installation der Anwendung erstellt werden. Für Erstbenutzer wird eine Anpassung nicht empfohlen, da das Weglassen von Objekten bei falscher Ausführung zu Fehlern in bestimmten Funktionen führen kann. Die Beispiel-Konnektor-Anwendung verwendet die Datei all.sql
, die alle empfohlenen SDK-Objekte erstellt.
Um diesen Schritt auszuführen, führen Sie den Befehl: ./gradlew copySdkComponents
aus.
Konnektor bereitstellen¶
Zur Bereitstellung einer nativen App muss ein Anwendungspaket in Snowflake erstellt werden. Danach müssen alle Dateien aus dem sf_build
-Verzeichnis auf Snowflake hochgeladen werden.
Beachten Sie, dass für Entwicklungszwecke die Erstellung von Versionen optional ist. Eine Anwendungsinstanz kann direkt aus Stagingdateien erstellt werden. Auf diese Weise können Sie Änderungen in den meisten Konnektorateien sehen, ohne die Version und die Anwendungsinstanz neu erstellen zu müssen.
Die folgenden Operationen werden durchgeführt:
Erstellen eines neuen Anwendungspakets, wenn es noch nicht existiert
Erstellen eines Stagingbereichs für Schema und Datei innerhalb des Pakets
Hochladen von Dateien aus dem
sf_build
-Verzeichnis in den Stagingbereich (dieser Schritt kann einige Zeit in Anspruch nehmen)
Um den Konnektor bereitzustellen, führen Sie den Befehl: snow app deploy --connection=native_sdk_connection
aus.
Weitere Informationen zum Befehl snow app deploy
finden Sie unter snow app deploy.
Das erstellte Anwendungspaket wird nun auf der Registerkarte App packages
in der Kategorie Data products
in der Snowflake-UI Ihres Kontos angezeigt.

Konnektor installieren¶
Die Installation der Anwendung ist der letzte Schritt des Prozesses. Er erstellt eine Anwendung aus dem zuvor erstellten Anwendungspaket.
Um den Konnektor zu installieren, führen Sie den Befehl: snow app run --connection=native_sdk_connection
aus.
Weitere Informationen zum Befehl snow app run
finden Sie unter snow app run.
Die installierte Anwendung wird nun auf der Registerkarte Installed apps
in der Kategorie Data products
in der Snowflake-UI Ihres Kontos angezeigt.

Aktualisieren der Konnektordateien¶
Wenn Sie zu irgendeinem Zeitpunkt eine der Konnektordateien ändern möchten, können Sie die geänderten Dateien einfach in den Stagingbereich des Anwendungspakets hochladen. Der Befehl zum Hochladen hängt davon ab, welche Dateien aktualisiert wurden.
Bevor einer der Update-Befehle ausgeführt wird, müssen Sie die neuen Dateien Ihres Konnektors in das Verzeichnis sf_build
kopieren, und zwar mit folgende Befehl: ./gradlew copyInternalComponents
UI. py-Dateien oder connector .java-Dateien¶
Verwenden Sie den Befehl snow app deploy --connection=native_sdk_connection
. Die aktuelle Anwendungsinstanz wird die neuen Dateien ohne Neuinstallation verwenden.
setup.sql- oder manifest.yml-Dateien¶
Verwenden Sie den Befehl snow app run --connection=native_sdk_connection
; die aktuelle Anwendungsinstanz wird neu installiert, nachdem die neuen Dateien in den Stagingbereich hochgeladen wurden.
Konnektorablauf¶
Bevor wir mit der Konfiguration des Konnektors und dem Einlesen der Daten beginnen, sollten wir uns kurz ansehen, wie der Konnektor eigentlich funktioniert. Unten sehen Sie alle Schritte, die in den nächsten Schritten dieses Tutorials ausgeführt werden. Der Ausgangspunkt ist das Erfüllen der Voraussetzungen und das Durchlaufen des Assistenten.
Die Assistentenphase des Konnektors führt die Benutzer durch alle erforderlichen Konfigurationen, die der Konnektor benötigt. Im Stagingbereich können Benutzer Statistiken einsehen, Repositorys für die Aufnahme konfigurieren und den Konnektor pausieren/fortsetzen.
Konfigurationsassistent¶
Nach dem Öffnen der Anwendung wird die Assistenten-UI-Seite geöffnet. Der Konnektor benötigt einige vom Benutzer bereitgestellte Informationen, bevor er mit dem Einlesen der Daten beginnen kann. Der Assistent führt Sie durch alle erforderlichen Schritte in der Anwendung selbst, aber auch im gesamten Snowflake-Konto und manchmal sogar im externen System, das die Quelle der aufgenommenen Daten sein wird, in diesem Fall GitHub. Wenn alle diese Schritte abgeschlossen sind, ist der Konnektor bereit für die Aufnahme der Daten.
Voraussetzungen¶
Der erste Schritt des Assistenten sind die Voraussetzungen. In diesem Schritt finden Sie eine Liste mit Dingen, die vor der Konfiguration des Konnektors vorbereitet werden sollten. Die Erfüllung der Voraussetzungen ist nicht erforderlich, wird aber empfohlen, um später einen reibungsloseren Konfigurationsprozess zu gewährleisten.
Im Fall des GitHub-Konnektors gibt es zwei Dinge, die Sie beachten müssen, bevor Sie weitermachen:
Vorbereiten eines GitHub-Kontos
Bestätigen des Zugriffs auf die GitHub Repositorys, die Sie aufnehmen möchten

Konnektorkonfiguration¶
Der nächste Schritt des Assistenten ist die Konnektorkonfiguration. Dieser Schritt ermöglicht dem Benutzer:
Gewähren von Anwendungsberechtigungen, die über das Native Apps Permission-SDK angefordert werden
Wählen Sie ein Warehouse aus, auf das bei der Planung von Datenaufnahmeaufgaben verwiesen wird
Wählen Sie die Zieldatenbank und das Schema für die Daten aus, die aufgenommen werden sollen
Berechtigungen¶
Für die Anwendung sind zwei Kontoberechtigungen erforderlich: CREATE DATABASE
und EXECUTE TASK
.
Die erste Berechtigung ist erforderlich, um eine Zieldatenbank für die eingelesenen Daten zu erstellen. Diese Datenbank sollte außerhalb der Anwendung erstellt werden, sodass die aufgenommenen Daten intakt bleiben, wenn die Anwendung deinstalliert wird. In diesem Beispiel wird dieses Feature jedoch nicht unterstützt, es wird immer eine neue Datenbank erstellt.
Die zweite Berechtigung wird benötigt, um periodische Aufgaben zu planen, die die Daten von GitHub abrufen und in der Zieldatenbank speichern.
Sie können diese Berechtigungen über die Registerkarte „Sicherheit“ oder über die Schaltfläche Grant privileges
im Konfigurationsbildschirm des Konnektors erteilen. Letzteres führt dazu, dass ein Popup auf dem Bildschirm erscheint.

Warehouse-Referenz¶
Der Konnektor benötigt ein Warehouse, um Datenaufnahme-Aufgaben auszuführen und zu planen. Die Anwendung wird das Warehouse über eine Referenz nutzen. Die Warehouse-Referenz wird in der Datei manifest.yml
definiert:
references:
- WAREHOUSE_REFERENCE:
label: "Warehouse used for ingestion"
description: "Warehouse which will be used to schedule ingestion tasks"
privileges: [USAGE]
object_type: WAREHOUSE
register_callback: PUBLIC.REGISTER_REFERENCE
Die Referenz kann über die Registerkarte „Sicherheit“, wie bei den Berechtigungen oben, oder über die Schaltfläche Choose warehouse
festgelegt werden.

Zieldatenbank und -schema¶
Wie bereits erwähnt, benötigt der Konnektor eine Datenbank, um die eingegebenen Daten zu speichern. Diese Datenbank wird in einem späteren Schritt mit dem vom Benutzer angegebenen Schema erstellt. Der Name der Datenbank ist dem Benutzer überlassen, sofern die bereitgestellte Datenbank nicht bereits existiert.
Der Bildschirm der fertigen Konnektorkonfiguration sieht ungefähr so aus:

Verbindungskonfiguration¶
Der nächste Schritt des Assistenten ist die Verbindungskonfiguration. In diesem Schritt kann der Benutzer die Verbindung zu einer externen Datenquelle einrichten. Wir empfehlen, wann immer möglich, die OAuth2-Authentifizierung anstelle Benutzer/Kennwort oder Klartext-Tokens zu verwenden.
GitHub unterstützt derzeit zwei Arten der OAuth2-Authentifizierung – OAuth-Apps und GitHub-Apps. OAuth-Apps sind etwas einfacher einzurichten und zu verwenden, bieten jedoch nicht die gleiche Granularität bei der Berechtigungskontrolle. Wir empfehlen für dieses Beispiel die Verwendung einer GitHub-App. Wenn Sie jedoch eine OAuth-App verwenden möchten, wird der Konnektor trotzdem wie vorgesehen funktionieren.
Einrichten des Berechtigungs-SDK¶
Für die OAuth2-Authentifizierung müssen im Konto des Benutzers eine Sicherheitsintegration, ein Geheimnis und eine Integration für externen Zugriff erstellt werden. Unser Konnektor verwendet die Native Apps Permission SDK, um die Erstellung dieser Objekte anzufordern.
Referenzen für die Integration für externen Zugriff und das Geheimnis, die der Konnektor benötigt, werden in der manifest.yml
-Datei definiert:
references:
- GITHUB_EAI_REFERENCE:
label: "GitHub API access integration"
description: "External access integration that will enable connection to the GitHub API using OAuth2"
privileges: [USAGE]
object_type: "EXTERNAL ACCESS INTEGRATION"
register_callback: PUBLIC.REGISTER_REFERENCE
configuration_callback: PUBLIC.GET_REFERENCE_CONFIG
- GITHUB_SECRET_REFERENCE:
label: "GitHub API secret"
description: "Secret that will enable connection to the GitHub API using OAuth2"
privileges: [READ]
object_type: SECRET
register_callback: PUBLIC.REGISTER_REFERENCE
configuration_callback: PUBLIC.GET_REFERENCE_CONFIG
Außerdem muss eine spezielle Prozedur in der Datei setup.sql
hinzugefügt werden. Sie wird in der Eigenschaft configuration_callback
für jede der oben vorgestellten Referenzen referenziert:
CREATE OR REPLACE PROCEDURE PUBLIC.GET_REFERENCE_CONFIG(ref_name STRING)
RETURNS STRING
LANGUAGE SQL
AS
BEGIN
CASE (ref_name)
WHEN 'GITHUB_EAI_REFERENCE' THEN
RETURN OBJECT_CONSTRUCT(
'type', 'CONFIGURATION',
'payload', OBJECT_CONSTRUCT(
'host_ports', ARRAY_CONSTRUCT('api.github.com'),
'allowed_secrets', 'LIST',
'secret_references', ARRAY_CONSTRUCT('GITHUB_SECRET_REFERENCE')
)
)::STRING;
WHEN 'GITHUB_SECRET_REFERENCE' THEN
RETURN OBJECT_CONSTRUCT(
'type', 'CONFIGURATION',
'payload', OBJECT_CONSTRUCT(
'type', 'OAUTH2',
'security_integration', OBJECT_CONSTRUCT(
'oauth_scopes', ARRAY_CONSTRUCT('repo'),
'oauth_token_endpoint', 'https://github.com/login/oauth/access_token',
'oauth_authorization_endpoint', 'https://github.com/login/oauth/authorize'
)
)
)::STRING;
ELSE
RETURN '';
END CASE;
END;
Für die Integration für externen bietet die Prozedur eine Referenz:
host_ports
– Hostnamen der externen Datenquelle, auf die während der Aufnahme zugegriffen werden sollsecret_references
– Array von Namen von Referenzen auf OAuth-Geheimnisseallowed_secrets
–LIST
, die dem Berechtigungs-SDK mitteile, dass es die im Feldsecret_references
angegebenen Geheimnisse verwenden soll
Für die Geheimnisreferenz bietet das Verfahren:
type
-OAUTH2
im Fall unseres Geheimnissessecurity_integration
– Eigenschaften der erstellten Sicherheitsintegration:oauth_scopes
– eine Liste der OAuth-Bereiche, die vom Konnektor angefordert werden (bei Verwendung einer GitHub-App ist dieses Feld optional)oauth_token_endpoint
– Endpunkt, von dem das Aktualisierungs- und Zugriffstoken bezogen wirdoauth_authorization_endpoint
– Endpunkt, an den die Autorisierungsanfrage gesendet werden soll
Einrichten der GitHub-App¶
Der nächste Schritt ist die Einrichtung einer GitHub-App im Konto des Benutzers. Diese App wird verwendet, um beschränkten Zugriff auf das Konto zu gewähren, sodass Daten aufgenommen werden können.
Drücken Sie zunächst die Schaltfläche Request access
in der Konnektor-UI.

Auf dem ersten Bildschirm können Sie die Endpunkte überprüfen, für die eine externe Konnektivität zugelassen wird.

Nachdem Sie Next
gedrückt haben, sehen Sie einen zweiten Bildschirm. Wählen Sie OAuth2
, um eine neue Integration und ein neues Geheimnis zu erstellen, und kopieren Sie die bereitgestellte Weiterleitungs-URL. Sie enthält den Namen Ihrer Organisation und die Region Ihres Kontos.

Gehen Sie dann auf die Seite mit den Einstellungen Ihres GitHub-Kontos, dann auf Developer settings > GitHub Apps
und klicken Sie auf die Schaltfläche New GitHub App
:
Geben Sie den Namen und die Homepage-URL Ihrer App ein
Fügen Sie die von Ihnen kopierte Weiterleitungs-URL in das Feld
Callback URL
einStellen Sie sicher, dass die Option
Expire user authorization tokens
ausgewählt istStellen Sie sicher, dass
Request user authorization (OAuth) during installation
nicht ausgewählt istWenn Sie sie nicht benötigen, deaktivieren Sie die Option
Active
im BereichWebhook
Wählen Sie die Berechtigungen aus, die für die Funktion des Konnektors erforderlich sind:
Repository permissions > Issues
mit demRead-only
-ZugriffRepository permissions > Metadata
mit demRead-only
-Zugriff
Wenn die App mit diesem Beispielkonnektor nur von Ihnen verwendet werden soll, wählen Sie am besten
Only on this account
im Abschnitt „Installationszugriff“.
Nachdem die App erstellt wurde, klicken Sie auf die Option Install app
in der linken Seitenleiste und installieren Sie die Anwendung in Ihrem Konto. Sie können wählen, auf welche Repositorys die App (und damit auch der Konnektor) zugreifen kann. Ohne diese Installation ist der Konnektor nur in der Lage, auf öffentliche Repositorys zuzugreifen.
OAuth-Integration¶
Kehren Sie nach der Installation zu Ihrer GitHub-App zurück und erstellen Sie ein neues Client-Geheimnis. Achten Sie darauf, dass Sie es sofort kopieren, da es nicht wieder angezeigt wird. Fügen Sie das Client-Geheimnis in das OAuth-Konfigurations-Popup Ihres Konnektors ein. Kopieren Sie schließlich die Client-ID (nicht App-ID) Ihrer Anwendung und fügen Sie sie ebenfalls in das OAuth-Konfigurations-Popup Ihres Konnektors ein.

Nachdem Sie auf Connect
geklickt haben, erscheint ein GitHub-Fenster, in dem Sie um die Autorisierung der App für Ihr GitHub-Konto gebeten werden. Nach der Autorisierung werden Sie automatisch zur Konnektor-UI zurückgeleitet. Nach erfolgreicher Autorisierung (es kann ein paar Sekunden dauern, bis das Popup-Fenster geschlossen ist) wird die Seite mit den IDs der Integration für externen Zugriff und der Geheimnisreferenzen ausgefüllt.

Wenn Sie auf die Schaltfläche Connect
klicken, wird die Prozedur TEST_CONNECTION
im Konnektor ausgelöst. Bei dieser Prozedur wird versucht, auf den GitHub API Octocat-Endpunkt zuzugreifen, um zu prüfen, ob die externe Konnektivität korrekt konfiguriert wurde und das OAuth-Zugriffstoken korrekt erhalten wurde.
Wenn der Test erfolgreich war, wird die Anwendung mit dem Finalisierungsschritt fortgesetzt.
Abschließen der Konfiguration¶
Das Abschließen der Konfiguration ist der letzte Schritt des Assistenten. In diesem Schritt werden Sie aufgefordert, eine Organisation und einen Repository-Namen anzugeben. Auf dieses Repository muss mit dem OAuth-Token zugegriffen werden können, das Sie bei der Konfiguration der Verbindung erhalten haben. Das bereitgestellte Repository wird nur zur Überprüfung der Verbindung verwendet.
Dies unterscheidet sich ein wenig von dem vorherigen Schritt, denn die Prozedur TEST_CONNECTION
prüft nur, ob die GitHub API erreichbar und das angegebene Token gültig ist.
Der Finalisierungsschritt stellt sicher, dass das vom Benutzer bereitgestellte Repository mit dem bereitgestellten GitHub API-Token zugänglich ist. Es schlägt fehl, wenn das Token nicht über die erforderlichen Berechtigungen für den Zugriff auf das Repository verfügt. Wenn Sie Daten aus privaten Repositorys aufnehmen möchten, empfehlen wir Ihnen, die Konfiguration mit einem privaten Repository abzuschließen, um sicherzustellen, dass diese korrekt funktionieren.
Außerdem werden in diesem Schritt die Datenbank und das Schema, die in der Konfigurationsphase des Konnektors festgelegt wurden, in Ihrem Konto erstellt.

Tägliche Verwendung¶
Nachdem der Konfigurationsassistent erfolgreich abgeschlossen wurde, können Sie nun Ihren Beispiel-GitHubKonnektor verwenden.
In den nächsten Schritten wird Folgendes erklärt:
Konfigurieren der Ressourcen für die Datenaufnahme
Funktionsweise des Datenaufnahmeprozesses
Anzeigen von Statistiken über die aufgenommenen Datensätze
Anzeigen von importierten Daten
Anhalten und Fortsetzen des Konnektors
Ressourcen konfigurieren¶
Um Ressourcen zu konfigurieren, gehen Sie auf die Registerkarte Data Sync
. Auf dieser Registerkarte wird eine Liste der Repositorys angezeigt, die bereits für die Datenaufnahme konfiguriert sind. Wenn Sie die Liste zum ersten Mal öffnen, ist sie leer.
Um eine Ressource zu konfigurieren, geben Sie die Namen der Organisation und des Repositorys in die dafür vorgesehenen Felder ein, und klicken Sie dann auf die Schaltfläche Queue ingestion
. Beispiel:

Die Definition für eine neue Ressource wird gespeichert und vom Scheduler gemäß dem globalen Zeitplan abgerufen. Es wird einige Zeit dauern, bis die Daten aufgenommen werden und in der Senkentabelle sichtbar sind. Die Daten werden in der Tabelle unten angezeigt:

Zeitplan und Status der Datenaufnahme¶
Oben auf der Registerkarte Data Sync
finden Sie einen Abschnitt mit allgemeinen Informationen über die Datenaufnahme. In diesem Abschnitt kann der Benutzer den globalen Zeitplan sehen, mit dem die konfigurierten Ressourcen aufgenommen werden. Die Beschriftung in der unteren rechten Ecke zeigt den aktuellen Datenaufnahmestatus an. Zunächst wird der Status NOT SYNCING
angezeigt, bis die erste Ressource definiert ist. Danach wechselt die Anzeige zu SYNCING
und zeigt schließlich – wenn mindestens eine Ressourcenzufuhr erfolgreich abgeschlossen wurde – das Enddatum dieser Aufnahme an.

Datenaufnahmeprozess¶
Der Datenaufnahmeprozess wird über die Komponenten Scheduler Task
und Task Reactor
abgewickelt. Der Scheduler holt die definierten Ressourcen gemäß dem globalen Zeitplan ab und gibt sie als Work Items
an eine Warteschlange weiter. Dann nimmt eine Task Reactor-Komponente namens Dispatcher
diese auf und teilt sie auf die festgelegte Anzahl von Workers auf. Jeder Worker führt die eigentliche Datenaufnahme für jedes Objekt durch, das er aus der Warteschlange abholt.
Die einmalige Aufnahme einer Ressource besteht darin, die Daten von den Endpunkten in der GitHub API abzurufen und sie dann in den dafür vorgesehenen Tabellen in der Sink-Datenbank zu speichern. In diesem Beispiel werden alle Daten in jedem Durchlauf abgerufen, was dazu führt, dass der Tabelle neue Datensätze hinzugefügt und alte Datensätze aktualisiert werden. Außerdem werden bei der Ausführung jedes Work Item
Daten wie Start- und Enddatum, Anzahl der eingelesenen Zeilen, Status usw. in internen Konnektortabellen protokolliert, die dann für statistische Zwecke verwendet werden.
Anzeigen von Statistiken¶
Der Bildschirm Home
enthält Statistiken über die vergangenen Datenaufnahmeläufe. Die Daten basieren auf der Ansicht PUBLIC.AGGREGATED_CONNECTOR_STATS
. Die Ansicht fasst die Anzahl der aufgenommenen Zeilen basierend auf der Tageszeit zusammen, zu der sie aufgenommen wurden. Die Daten aus dieser Ansicht können mithilfe von SELECT
-Abfragen in einem Arbeitsblatt abgerufen werden. Auf diese Weise können die Daten auch in einem Zeitfenster von mehr als einer Stunde aggregiert werden.
Es gibt eine weitere Ansicht, die über das Arbeitsblatt verfügbar ist – PUBLIC.CONNECTOR_STATS
. Anhand dieser Daten können Sie den Status, das Start- und Enddatum, die durchschnittliche Anzahl der pro Sekunde erfassten Zeilen und einige andere Informationen zur Datenaufnahme ablesen.
Beispiel für ein Diagramm zur Datenaufnahmestatistik:

Anzeigen der aufgenommenen Daten¶
Die eingegebenen Daten sind im UI nicht sichtbar, können aber durch Abfragen von Daten aus bestimmten Tabellen von Benutzern mit den Rollen ADMIN
oder DATA_READER
eingesehen werden. Um die Daten anzuzeigen, müssen Sie zu einem SQL-Arbeitsblatt gehen und einfach die Zieldatenbank auswählen. Die Zieldatenbank verwendet den Namen und das Schema, die bei der Konfiguration des Konnektors festgelegt wurden. Sie können Daten mit SELECT
auswählen von:
Tabelle
ISSUES
, sie enthält die folgenden Spalten:ORGANIZATION
REPOSITORY
RAW_DATA
Ansicht
ISSUES_VIEW
, sie enthält die folgenden Spalten:ID
ORGANIZATION
REPOSITORY
STATE
TITLE
CREATED_AT
UPDATED_AT
ASSIGNEE
Die in der Ansicht ISSUES_VIEW
sichtbaren Daten werden aus der Spalte raw_data
in der Tabelle ISSUES
extrahiert. Um die Daten einzusehen, können Sie eine der folgenden Abfragen verwenden:
SELECT * FROM DEST_DATABASE.DEST_SCHEMA.ISSUES;
SELECT * FROM DEST_DATABASE.DEST_SCHEMA.ISSUES_VIEW;
Pausieren und fortsetzen¶
Die Verbindung kann pausiert und fortgesetzt werden, wann immer Sie wollen. Klicken Sie dazu einfach auf die Schaltfläche Pause
auf der Registerkarte Data Sync
. Wenn die Pause ausgelöst wird, wird der zugrunde liegende Mechanismus zur Planung und Arbeitsausführung deaktiviert. Die aktive Aufnahme wird jedoch beendet, bevor der Konnektor tatsächlich in den Zustand PAUSED
übergeht. Aus diesem Grund kann es einige Minuten dauern, bis der Konnektor vollständig angehalten ist.
Um die Verbindung fortzusetzen, müssen Sie nur auf die Schaltfläche Resume
klicken, die anstelle der Schaltfläche Pause
angezeigt wird. Dadurch wird die Planungsaufgabe fortgesetzt und die Warteschlange für neue Work Items
wird gestartet.

Konnektoreinstellungen¶
Nachdem die Konfiguration abgeschlossen ist, wird eine weitere Registerkarte namens Settings
verfügbar. Auf dieser Registerkarte kann der Benutzer die aktuellen Konnektor- und Verbindungskonfigurationen einsehen. Die Daten auf dieser Registerkarte werden aus der zugrunde liegenden Konfigurationstabelle APP_CONFIG
extrahiert und sind schreibgeschützt.


Problembehandlung¶
Wenn der Konnektor auf Probleme stößt, werden diese in den Protokollen der event table
sichtbar, wenn die Tabelle im Konto erstellt und festgelegt wurde.
Mehr über die Aktivierung und Verwendung von event table
, die Ereignisprotokollierung und die Ereignisfreigabe in Native Apps finden Sie in der Dokumentation:
Bereinigen¶
Nach Abschluss des Tutorials können Sie den Konnektor entweder pausieren, wie im Abschnitt „Tägliche Verwendung“ erklärt, oder ihn mit dem folgenden Befehl vollständig aus Ihrem Konto entfernen:
snow app teardown --connection=native_sdk_connection --cascade --force
Die Option --cascade
wird benötigt, um die Zieldatenbank zu entfernen, ohne die Eigentümerschaft an den Administrator des Kontos zu übertragen. Bei echten Konnektoren sollte die Datenbank nicht entfernt werden, um die aufgenommenen Daten zu erhalten. Sie sollte entweder dem Kontoadministrator gehören oder die Eigentümerschaft sollte vor der Deinstallation übertragen werden.
Wenn der Bereinigungsteil übersprungen wird, verbraucht der Beispielkonnektor so lange Credits, bis er pausiert oder entfernt wird, auch wenn keine Repositorys für die Aufnahme konfiguriert wurden!
Anpassung¶
In diesem Tutorial haben wir Ihnen ein Beispiel für einen Konnektor gezeigt, der mit Snowflake Native SDK for Connectors erstellt wurde. Weitere Informationen dazu, wie Sie den Konnektor anpassen oder Ihren eigenen Konnektor von Grund auf neu erstellen können, finden Sie unter: