连接器配置¶
连接器配置是向导阶段的第一个必需步骤。连接器配置可确保连接器具有所有连接器类型之间通用的对象配置,而不考虑实际的源系统和域。名为 PUBLIC.CONFIGURE_CONNECTOR(config VARIANT)
的过程是通过 UI 或工作表来执行此操作的入口点。使用自定义逻辑进行覆盖时,请记住,需要替换此过程,因为此过程作为处理程序指向 Java 中的 ConfigureConnectorHandler.configureConnector
静态方法。
要调用此过程,用户需要已获得 ADMIN
应用程序角色。
连接器配置步骤在内部由几个阶段组成。其中一些是完全可自定义的,默认情况下,不执行任何操作。这些阶段如下所示:
状态验证
字段验证
输入验证
配置更新
内部回调
状态更新
要求¶
在原生应用程序安装过程中,连接器配置至少需要执行以下 SQL 文件:
core.sql
configuration/app_config.sql
configuration/connector_configuration.sql
状态验证¶
要执行连接器配置,连接器的内部状态必须为 CONFIGURING
。不能通过使用 ConfigureConnectorHandlerBuilder
或覆盖存储过程来覆盖此验证。但是,也可以实现一个自定义处理程序,它不会进行这种验证。
字段验证¶
连接器配置需要包含一组特定字段。所有字段都是可选的,但是任何其他字段都会引发异常。允许的键包括:
warehouse
destination_database
destination_schema
operational_warehouse
global_schedule
data_owner_role
agent_username
agent_role
仓库¶
连接器使用仓库来运行排程器、执行任务和运行查询。
Destination_database¶
目标数据库用于存储连接器引入的数据。此数据库应位于连接器外部。它可以是现有的数据库,但是连接器需要对其具有写入权限。它也可以是新创建的数据库,但是,这不会自动发生,必须在连接器配置或配置完成期间作为内部回调的一部分来实现。
Destination_schema¶
目标架构将是上述 destination_database 中使用的架构。
Operational_warehouse¶
有时,连接器需要将需要仓库的实际引入过程与连接器内部操作相关的过程分开。指定第二个仓库以在它们之间分配负载。
Global_schedule¶
此属性定义了排程器任务的运行计划。当前,排程器只能处理具有 scheduleType=GLOBAL
的资源。此属性的值应类似于以下值:
"global_schedule": {
"scheduleType": "CRON",
"scheduleDefinition": "*/10 * * * *"
}
Data_owner_role¶
该角色可用于授予同步数据库的所有权,以便在卸载连接器时保留数据。
Agent_username¶
基于推送的连接器的代理在连接 Snowflake 时使用的用户名。
Agent_role¶
基于推送的连接器的代理在连接 Snowflake 时使用的角色。
输入验证¶
输入必须是有效的 Variant
,此外,SDK 还提供名为 PUBLIC.CONFIGURE_CONNECTOR_VALIDATE(config VARIANT)
的内部存储过程。默认情况下,此过程仅返回 'response_code': 'OK'
,但是可以通过覆盖此存储过程来对其进行更改。或者,也可以使用 ConfigureConnectorHandlerBuilder
并提供 ConfigureConnectorValidator
接口的自定义实现来对其进行自定义。
配置更新¶
成功通过验证后,配置将保存到内部 APP_CONFIG
表中。负责此阶段的服务将提供的 Variant
保存在 connector_configuration
键下。
内部回调¶
内部回调是另一个可自定义的步骤。默认情况下,它会调用 PUBLIC.CONFIGURE_CONNECTOR_INTERNAL(config VARIANT)
,返回 'response_code': 'OK'
。可以通过 ConfigureConnectorCallback
脚本或使用 ConfigureConnectorHandlerBuilder
提供 接口的自定义实现来将其覆盖。
状态更新¶
成功完成上述所有阶段后,连接器的内部状态将更新为:
{
"status": "CONFIGURING",
"configurationStatus": "CONFIGURED"
}
有关状态转换的示意图,请参阅 连接器流。
响应¶
成功响应¶
如果该过程成功完成,它将返回以下格式的响应:
{ "response_code": "OK", }
错误响应¶
如果出现错误,响应将遵循以下格式:
{ "response_code": "<ERROR_CODE>", "message": "<error message>" }
可能的错误代码包括:
INVALID_CONNECTOR_STATUS
– 在已配置的连接器上调用了该过程CONNECTOR_CONFIGURATION_PARSING_ERROR
– 给定配置不是有效的 JSONCONNECTOR_STATUS_NOT_FOUND
– 数据库中不存在连接器状态记录CONNECTOR_STATUS_PARSING_ERROR
– 存储在表APP_STATE
的connector_status
键下的值格式不正确,应用程序无法解析该值