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-Rolle

  • GitHub-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 Datei all.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:

  1. Kopieren benutzerdefinierter interner Komponenten in das Build-Verzeichnis

  2. 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:

  1. Erstellen eines neuen Anwendungspakets, wenn es noch nicht existiert

  2. Erstellen eines Stagingbereichs für Schema und Datei innerhalb des Pakets

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

Ansicht der App-Pakete

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.

Ansicht der installierten Anwendungen

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.

Überblick über den Ablauf von Konnektoren

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:

  1. Vorbereiten eines GitHub-Kontos

  2. Bestätigen des Zugriffs auf die GitHub Repositorys, die Sie aufnehmen möchten

Voraussetzungen

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.

Berechtigungen

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
Copy

Die Referenz kann über die Registerkarte „Sicherheit“, wie bei den Berechtigungen oben, oder über die Schaltfläche Choose warehouse festgelegt werden.

Warehouse-Referenz

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:

Bildschirm der Konnektorkonfiguration

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
Copy

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;
Copy

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 soll

  • secret_references – Array von Namen von Referenzen auf OAuth-Geheimnisse

  • allowed_secrets – LIST, die dem Berechtigungs-SDK mitteile, dass es die im Feld secret_references angegebenen Geheimnisse verwenden soll

Für die Geheimnisreferenz bietet das Verfahren:

  • type - OAUTH2 im Fall unseres Geheimnisses

  • security_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 wird

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

OAuth-Zugriff anfordern

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

EAI-Endpunkte überprüfen

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.

OAuth-Weiterleitungs-URL

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:

  1. Geben Sie den Namen und die Homepage-URL Ihrer App ein

  2. Fügen Sie die von Ihnen kopierte Weiterleitungs-URL in das Feld Callback URL ein

  3. Stellen Sie sicher, dass die Option Expire user authorization tokens ausgewählt ist

  4. Stellen Sie sicher, dass Request user authorization (OAuth) during installation nicht ausgewählt ist

  5. Wenn Sie sie nicht benötigen, deaktivieren Sie die Option Active im Bereich Webhook

  6. Wählen Sie die Berechtigungen aus, die für die Funktion des Konnektors erforderlich sind:

    1. Repository permissions > Issues mit dem Read-only-Zugriff

    2. Repository permissions > Metadata mit dem Read-only-Zugriff

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

OAuth-Konfiguration

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.

Bildschirm der Verbindungskonfiguration

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.

Bildschirm „Konfiguration abschließen“

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:

Ressourcen definieren

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:

Auflisten definierter Ressourcen

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.

Sync-Status

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:

Datenaufnahmestatistiken

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:

  1. Tabelle ISSUES, sie enthält die folgenden Spalten:

    • ORGANIZATION

    • REPOSITORY

    • RAW_DATA

  2. 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;
Copy

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.

Konnektor anhalten

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.

Konfigurationseinstellungen für den Konnektor
Konfigurationseinstellungen für die Verbindung

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: