Warehouse aktualisieren¶
Die Aktualisierung des Warehouses ist ein Schritt, der direkt nach dem Schritt Konnektor anhalten aufgerufen werden kann. Dieser Schritt ermöglicht es dem Benutzer, das Warehouse zu aktualisieren, das während Connector Configuration
eingerichtet wurde und für die Ausführung von SDK-gesteuerten Aufgaben verwendet wird. Beim Überschreiben mit kundenspezifischer Logik muss diese Prozedur ersetzt werden, um einen kundenspezifischen Java-Handler anzugeben.
Zum Aufrufen dieser Prozedur muss dem Benutzer die Anwendungsrolle ADMIN
zugewiesen sein.
Der Schritt „Warehouse aktualisieren“ besteht intern aus mehreren Phasen. Einige von ihnen sind vollständig anpassbar und tun standardmäßig gar nichts. Die Phasen sind wie folgt:
Validierung des Status
Validierung der Eingabe
Interner Callback
SDK-Callback
Aktualisierung der Konfiguration
Anforderungen¶
„Warehouse-Konfiguration“ erfordert mindestens die folgenden SQL-Dateien, die während der Native App-Installation ausgeführt werden müssen:
core.sql
configuration/app_config.sql
configuration/connector_configuration.sql
configuration/update_warehouse.sql
Validierung des Status¶
Um eine Aktualisierung des Warehouses auszuführen, muss der interne Status des Konnektors PAUSED
sein.
Diese Validierung kann weder durch Verwendung von UpdateWarehouseHandlerBuilder
noch durch das Überschreiben von gespeicherten Prozeduren überschrieben werden. Es ist jedoch möglich, einen kundenspezifischen Handler zu implementieren, der diese Art der Validierung nicht durchführt.
Validierung der Eingabe¶
Die Eingabe muss ein String
-Wert mit dem neuen Warehouse sein. Dieses bereitgestellte Warehouse wird dann mit einer Implementierung von UpdateWarehouseInputValidator
validiert. Standardmäßig werden die folgenden Validierungen durchgeführt, die jeweils eine Ausnahme auslösen, wenn die erforderlichen Kriterien nicht erfüllt sind:
Validieren, ob das angegebene Warehouse ein gültiger Snowflake-Bezeichner ist.
Validieren, ob sich das neue Warehouse von dem bereits konfigurierten unterscheidet.
Validieren, ob die Anwendungsinstanz auf das neue Warehouse zugreifen kann (mit der Abfrage
SHOW WAREHOUSES
).
Dieser Eingabevalidierungsschritt kann nur durch Verwendung von UpdateWarehouseHandlerBuilder
und das Erstellen einer neuen, kundenspezifischen Handler-Instanz angepasst werden.
Interner Callback¶
Der interne Callback ist ein weiterer anpassbarer Schritt. Standardmäßig wird die Prozedur PUBLIC.UPDATE_WAREHOUSE_INTERNAL
aufgerufen, deren Standardimplementierung 'response_code': 'OK'
zurückgibt. Dieser Schritt kann verwendet werden, um kundenspezifische Logik für den Warehouse-Aktualisierungsprozess bereitzustellen, z. B. durch Ändern der vom Anwendungsentwickler erstellten Aufgaben. Der Callback kann über das SQL-Skript oder durch Verwendung von UpdateWarehouseHandlerBuilder
überschrieben werden, um eine kundenspezifische Implementierung der UpdateWarehouseCallback
-Schnittstelle bereitzustellen.
SDK-Callback¶
SDK-Callback ist ähnlich wie die interne Callback-Phase. Dessen Zweck ist es, die SDK-gesteuerten Komponenten zu aktualisieren, z. B. Aufgaben, die vom Task Reactor erstellt wurden.
Diese Validierung kann weder durch Verwendung von UpdateWarehouseHandlerBuilder
noch durch das Überschreiben von gespeicherten Prozeduren überschrieben werden. Es ist möglich, einen kundenspezifischen Handler zu implementieren, der diese Art der Validierung nicht durchführt, aber davon wird dringend abgeraten.
Aktualisierung der Konfiguration¶
Sobald die Validierungen und Callbacks erfolgreich durchgeführt wurden, wird das neue Warehouse in der internen Tabelle APP_CONFIG
gespeichert. Der dafür zuständige Dienst speichert das bereitgestellte Warehouse unter dem Schlüssel connector_configuration
und ersetzt damit den zuvor konfigurierten Wert.
Anzeigen der Konfiguration¶
Für die Anwendungsrollen ADMIN
und VIEWER
steht die Ansicht PUBLIC.CONNECTOR_CONFIGURATION
zur Verfügung, die die aktuelle Konfiguration aus der internen Tabelle APP_CONFIG
zurückgibt.
Antwort¶
Erfolgreiche Antwort¶
Wenn die Prozedur erfolgreich abgeschlossen wird, gibt sie eine Antwort mit dem OK
-Antwortcode zurück:
{
"response_code": "OK"
}
Fehlerantwort¶
Im Falle eines Fehlers hat die Antwort das folgende Format:
{
"response_code": "<ERROR_CODE>",
"message": "<error message>"
}
Mögliche Fehlercodes sind:
INVALID_CONNECTOR_STATUS
– Ungültiger Konnektorstatus. Erwarteter Status:[PAUSED]
INTERNAL_ERROR
– Es gibt intern eine Problem; die Meldung sollte beschreibend sein.PROCEDURE_NOT_FOUND
– Die Prozedur, die aufgerufen wurde, existiert nicht.UNKNOWN_SQL_ERROR
– Dieser Fehler tritt auf, wenn beim Aufruf interner Prozeduren etwas Unerwartetes passiert.INVALID_RESPONSE
– Dieser Fehler tritt auf, wenn die von der internen Prozedur empfangene Antwort nichtresponse_code
enthält oder eine Fehlerantwort nichtmessage
enthält, sondernresponse_code
.UNKNOWN_ERROR
– Dies bedeutet, dass etwas Unerwartetes passiert ist (die Meldung der ausgelösten Ausnahme wird weitergeleitet).EMPTY_IDENTIFIER
– Der bereitgestellte Bezeichner ist ein NULL-Wert oder ein leerer String-Wert.INVALID_IDENTIFIER
– Der bereitgestellte Warehouse-Bezeichner ist nicht gültig.WAREHOUSE_ALREADY_USED
– Das bereitgestellte Warehouse wird bereits von der Anwendung verwendet.INACCESSIBLE_WAREHOUSE
– Das bereitgestellte Warehouse kann von der Anwendungsinstanz nicht genutzt werden (kein Zugriff).Kundenspezifische Fehlercodes, die von der Prozedur
UPDATE_WAREHOUSE_INTERNAL
empfangen werden – vom Entwickler des Konnektors definiert