ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OpenMetadata Domo Database 连接器配置指南:从凭据字段到元数据提取原理

OpenMetadata Domo Database 连接器配置指南:从凭据字段到元数据提取原理 OpenMetadata Domo Database 连接器配置指南从凭据字段到元数据提取原理【免费下载链接】OpenMetadataThe Open Context Layer for Data and AI , OpenMetadata is the open platform for building trusted data context and business semantics for humans, AI assistants, and agents.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMetadata本篇技术指南以 OpenMetadata 官方 UI 配置文档DomoDatabase.md为核心系统讲解 Domo Database 连接器的完整配置过程。你将掌握 Client ID、Secret Token、Access Token、API Host、Instance Domain、Database Name 六个核心配置字段的含义与取值方法理解 OpenMetadata 如何借助官方pydomoSDK 与自建 REST 客户端双通道完成数据集元数据提取并学会编写可直接运行的连接器工作流 YAML 与验证连接是否成功。一、连接器概览Domo 数据集的元数据接入Domo 是一个云原生数据平台其核心数据单元是 Dataset数据集。OpenMetadata 的 Domo Database 连接器负责把 Domo 实例中的数据集列表、列结构Schema、描述、所有者等信息抽取为 OpenMetadata 中的 Table 实体从而纳入统一的元数据目录。从源码结构看该连接器由四部分构成连接处理与测试负责基于配置创建 Domo 客户端并执行连接测试元数据提取实现DatabaseServiceSource接口按拓扑逐层产出 Database、Schema、Table数据模型定义OutputDataset、SchemaColumn、Owner等 Domo API 响应模型服务规格注册将上述类注册为DefaultDatabaseSpec供工作流调度器按type: domodatabase自动装配。配置 Schema 定义在 domoDatabaseConnection.json其中clientId、secretToken、instanceDomain三个字段为必填项。二、前置要求Client ID 的 Scope 权限在创建服务连接之前需要先在 Domo 开发者平台准备应用凭据。官方文档明确要求对于元数据摄取metadata ingestion务必为所提供的 Client ID 添加至少data作用域scope。Scope 决定该应用被授权访问的 Domo API 范围data作用域是读取数据集元数据所必需的最低权限。若缺失该作用域后续调用datasets.list()等 API 时会被 Domo 拒绝。与 Scope 相关的更详细信息可在 Domo 开发者门户的 API Authentication 章节查阅原文档链接Domo API 认证。三、连接配置字段详解以下六个字段是 UI 表单与工作流 YAML 中出现的核心配置项逐一说明其用途、取值方式与源码层面的实际作用。Client IDclientId用途Domo 应用的客户端 ID用于 OAuth 2.0 客户端凭据流程的第一步认证。必填是。源码行为在 connection.py 中clientId作为Domo(clientId, secretToken, api_host...)构造函数的第一个参数传入官方pydomoSDK用于换取访问 Domo 官方 API 的令牌。说明该字段必须与Secret Token成对提供二者共同用于通过 Domo 官方 API 提取元数据。Secret TokensecretToken用途与 Client ID 配对的客户端密钥属于敏感凭据。必填是。Schema 定义在 JSON Schema 中该字段声明为format: passwordUI 会以密码输入框呈现OpenMetadata 后端以加密形式存储见 domoDatabaseConnection.json。源码行为连接时通过connection.secretToken.get_secret_value()取出明文传给pydomo的Domo构造函数。Access TokenaccessToken用途用于调用 Domo 实例上API 官方端点不支持的元数据接口例如 Cards仪表板卡片或 Pipeline Runs管道运行记录。原文档特别说明当需要通过 API 不支持的端点直接从实例自动化提取元数据时该字段是必需的。获取方式在 Domo 实例中生成 Developer Token 后填入原文档指引见 Troubleshoot 章节。源码行为自定义 REST 客户端 domo_client.py 会读取该字段并以X-DOMO-Developer-Token请求头形式注入每次 HTTP 调用if self.config.accessToken: self.headers[X-DOMO-Developer-Token] self.config.accessToken.get_secret_value()随后通过TrackedREST向instanceDomain/api/发起请求如content/v1/cards卡片详情、dataprocessing/v1/dataflows数据流/管道、dataprocessing/v1/dataflows/{id}/executions运行记录。test_list_cards()方法还用它验证 Access Token 有效性401 即视为无效。API HostapiHost用途Domo 实例的 API 主机地址默认值为api.domo.com。可选是有默认值。源码行为作为api_host参数传给pydomoSDK。不同地区/环境的 Domo 实例可能使用不同的 API 域名此时需要覆盖默认值。Instance DomaininstanceDomain用途Domo 实例 Web UI 的访问 URL例如https://your.domo.com。必填是JSON Schema 的 required 列表包含该字段。源码行为两处使用。其一自定义 REST 客户端以clean_uri(self.config.instanceDomain)作为base_url拼接api/版本前缀发起请求其二metadata.py 中的get_source_url()用它构造 Table 的源链接{instanceDomain}/datasources/{table_id}/details/overview该链接会被写入 Table 实体的sourceUrl用户在 OpenMetadata UI 中点击即可跳回 Domo 查看原始数据集。Database NamedatabaseName用途自定义 Domo 数据在 OpenMetadata 中归属的 Database 名称。可选是。不填时使用默认值default。层级背景原文档明确指出 OpenMetadata 的 Database Service 层级为Database Service Database Schema Table而 Domo 本身没有 Database 概念。因此连接器固定生成一个 Schema名称为default见get_database_schema_names()并把所有数据集放入该 Schema 下若希望数据展示在default以外的数据库名中通过本字段指定。四、完整配置示例工作流 YAML在非 UI 场景下可以直接通过 ingestion 工作流 YAML 配置该连接器。以下配置字段与 UI 表单一一对应参考 测试配置 中的完整示例source: type: domodatabase serviceName: domo_prod serviceConnection: config: type: DomoDatabase clientId: 00000 # 必填Domo 应用 Client ID需 data scope secretToken: abcdefg # 必填客户端密钥password 类型 accessToken: access_token # 可选Developer Token用于 API 不支持的端点 apiHost: api.domo.com # 可选API 主机默认 api.domo.com instanceDomain: https://domain.domo.com # 必填实例 UI 地址 databaseName: default # 可选自定义 Database 名称默认 default sourceConfig: config: type: DatabaseMetadata sink: type: metadata-rest config: {} workflowConfig: openMetadataServerConfig: hostPort: http://localhost:8585/api authProvider: openmetadata securityConfig: jwtToken: your_jwt_token需要注意type固定为DomoDatabase枚举定义见 domoDatabaseConnection.jsonclientId、secretToken、instanceDomain三者缺一不可缺省会导致工作流校验失败Schema 中还声明了schemaFilterPattern、tableFilterPattern、databaseFilterPattern三个过滤模式字段可通过正则包含/排除对应层级的数据集此外还支持supportsMetadataExtraction能力开关。五、连接认证原理双客户端架构Domo 连接器的认证设计是理解整个连接器行为的关键。从源码看它同时维护两条数据通道封装在OMPyDomoClient数据类中见 domo_client.py通道客户端认证方式用途官方 APIpydomo.DomoClient ID Secret TokenOAuth数据集列表、数据集详情、Schema、用户信息等官方端点实例 REST自定义DomoClient基于TrackedRESTAccess TokenX-DOMO-Developer-Token请求头API 不支持的端点如 Cards、Pipeline Runsconnection.py的_get_client()只负责第一条通道domo Domo( connection.clientId, connection.secretToken.get_secret_value(), api_hostconnection.apiHost, )而自定义 REST 通道则由DomoClient.__init__基于instanceDomain构建两者协作才能覆盖 Domo 全部元数据面。这一设计也解释了为什么 Access Token 在部分场景仅提取官方 API 支持的数据集元数据可以留空但在需要卡片、管道运行等元数据时成为必填。六、连接测试Test ConnectionUI 创建服务时执行的测试连接由test_connection()实现见 connection.py。其核心逻辑是执行一个名为GetTables的检查步骤def custom_executor(): result domo.datasets.list() return list(result) test_fn { GetTables: custom_executor, }即通过pydomo客户端调用 Domo 官方 API 的datasets.list()拉取数据集列表。该调用成功返回说明Client ID 与 Secret Token 认证通过所配置的 Scope 已授予data权限API Host 可达且路径正确。测试结果会写入 TestConnectionResult由test_connection_steps汇总同时支持作为 Automation Workflow自动化工作流在服务创建前独立执行默认超时时间为 3 分钟THREE_MIN。任何异常都会以SourceConnectionException形式抛出并显示在 UI 上。七、元数据提取流程从数据集到 Table 实体连接成功后摄取流程按Database Service Database Schema Table拓扑逐层执行核心逻辑见 metadata.pyDatabase 层get_database_names()返回service_connection.databaseName or DEFAULT_DATABASE即配置的 Database Name缺省为defaultSchema 层get_database_schema_names()固定产出名为default的 SchemaTable 层get_tables_name_and_type()调用domo_client.datasets.list()获取全量数据集应用tableFilterPattern正则过滤后以数据集 ID 作为表标识产出(table_id, TableType.Regular)元组列提取yield_table()调用datasets.get(table_id)获取数据集详情解析schema.columns得到列名、类型、描述与序号。对于联邦数据集federated dataset无内嵌 Schema 信息get_columns_from_federated_dataset()会执行SELECT * FROM {table_name} LIMIT 1查询仅取结果集的列元数据而不拉取任何数据行所有者解析get_owners()通过domo_client.users_get(owner.id)查询用户邮箱再由metadata.get_reference_by_email()关联到 OpenMetadata 用户源链接按{instanceDomain}/datasources/{table_id}/details/overview生成sourceUrl。与提取相关的数据模型定义在 models.pyOutputDataset承载rows、columns、schemas、owner、descriptionSchemaColumn承载列级type、name、description。注意OutputDataset.schemas通过aliasschema映射 Domo API 返回的schema字段。该流程的正确性由单元测试 test_domodatabase.py 验证test_yield_schema校验 Schema 请求的 FQN 拼接test_yield_table以模拟数据集响应含DOUBLE类型列校验CreateTableRequest的列名、类型、序位与描述均正确产出。八、常见问题与排查要点结合配置字段与源码行为给出几条高频问题的排查思路原文档的完整 Troubleshoot 指引见官方连接器文档页面测试连接报 401/403优先检查 Client ID 是否已配置datascope以及 Secret Token 是否与 Client ID 属于同一应用卡片/管道运行元数据缺失确认已填写 Access Token且该 Token 对目标实例具备读取权限可通过test_list_cards()的行为判断——它故意不带任何 URN 调用content/v1/cards正常应返回空结果而非 401UI 跳转不到 Domo 数据集检查instanceDomain是否填写了可访问的实例地址sourceUrl由它拼接生成数据集层级不符合预期Domo 无 Database 概念Schema 恒为default如需调整数据库展示名配置databaseName即可。九、小结本文围绕 OpenMetadata Domo Database 连接器完整覆盖了前置 Scope 要求、六个核心配置字段、可运行的 YAML 示例、双通道认证架构、连接测试机制与数据集元数据提取流水线。从 domoDatabaseConnection.json 的字段契约到 metadata.py 的拓扑实现再到 test_domodatabase.py 的用例验证配置与实现形成了完整闭环。照此配置即可在 OpenMetadata 中建立 Domo 数据目录将数据集、列结构、所有者与源链接统一纳入企业级元数据管理。【免费下载链接】OpenMetadataThe Open Context Layer for Data and AI , OpenMetadata is the open platform for building trusted data context and business semantics for humans, AI assistants, and agents.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMetadata创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表