尧图精选

OpenMetadata Qlik Sense 连接器配置指南:Engine API 认证、证书管理与元数据提取

🕒 发布时间:2026/9/15 3:02:31 📁 来源:尧图网络
OpenMetadata Qlik Sense 连接器配置指南Engine API 认证、证书管理与元数据提取【免费下载链接】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/OpenMetadataOpenMetadata 的 Qlik Sense 仪表盘连接器通过 Qlik Sense Engine JSON APIWebSocket 协议提取应用、工作表Sheet、图表与数据模型的元数据并借助加载脚本解析血缘关系。本文以连接器在 OpenMetadata UI 中的连接配置文档openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QlikSense.md为骨架逐字段讲解 Base URL、WebSocket 地址、三张客户端证书、SSL 配置与用户身份等全部参数并结合ingestion模块的源码实现与测试用例说明每个配置项在元数据提取过程中的真实作用帮助你在 OpenMetadata 中正确创建 Qlik Sense 服务、完成连接测试并运行仪表盘元数据摄取。前置要求Engine API 与证书认证Qlik Sense 连接器并不通过常规的 HTTP REST 接口读取元数据而是直接对接 Qlik Sense Engine JSON API。该 API 基于 WebSocket 双向通信客户端需要具备可访问的 Qlik Sense Engine WebSocket 端点默认端口4747协议为wss://或ws://提供 Qlik Sense 生成的客户端证书client.pem、client_key.pem、root.pem完成双向 TLS 认证在连接请求中携带用户目录User Directory与用户 IDUser ID用于身份映射。从源码 client.py 可以看到连接时除建立 WebSocket 外还会附加X-Qlik-User请求头其值形如UserDirectoryuserDirectory; UserIduserId这正是 Qlik Sense 服务端识别调用者身份的方式。连接器对证书的两种提供方式路径方式与值方式在 JSON Schema qlikSenseConnection.json 中以oneOf声明二者只能择一。Connection Details全部连接参数详解以下参数即 OpenMetadata UI 中「Qlik Sense 服务连接」表单的完整字段集合配置完成后可通过「Test Connection」按钮校验连通性。Qlik Sense Base URLdisplayUrl该字段填写 Qlik Sense Portal 的访问地址用于生成仪表盘与图表的跳转链接sourceUrl。示例https://server.domain.com或https://server.domain.com/virtual-proxy-path底层实现中若配置了displayUrl仪表盘链接会被构造成displayUrl/sense/app/qDocId/overview工作表图表链接构造成displayUrl/sense/app/qDocId/sheet/qId具体拼接逻辑见 metadata.py。若留空则提取到的 Dashboard/Chart 实体不会生成sourceUrl。注意该字段仅用于生成跳转链接不参与 Engine API 的通信。Qlik Engine JSON API Websocket URLhostPort填写 Qlik Sense Engine JSON API 的 WebSocket 地址连接器据此建立与 Engine 的实时通道。该字段在 Schema 中被标记为必填required中包含hostPort。示例wss://server.domain.com:4747或wss://server.domain.com[/virtual proxy]注意该地址必须以wss://或ws://开头。源码 client.py 中连接器会将hostPort与/app/{app_id}拼接后调用create_connection因此在填写时不要额外附带路径参数。Client Certificate ValueclientCertificateData该字段用于以「值」方式提供client.pem证书内容。由于 YAML 配置与 UI 表单均不支持直接换行需要将证书中的换行符替换为\n-----BEGIN CERTIFICATE-----\nMII..\nMBQ...\nCgU..\n8Lt..\n...\nh4\n-----END CERTIFICATE-----\n源码中_clean_cert_value会在写入临时文件前将\n还原为真实换行因此两种写法真实换行 /\n转义都能被正确解析。Client Key Certificate ValueclientKeyCertificateData以「值」方式提供client_key.pem私钥证书内容格式要求同上。原始 PEM 内容类似-----BEGIN RSA PRIVATE KEY----- MII.. MBQ... CgU.. 8Lt.. ... h4 -----END RSA PRIVATE KEY-----转义后应形如-----BEGIN RSA PRIVATE KEY-----\nMII..\nMBQ...\nCgU..\n8Lt..\n...\nh4\n-----END RSA PRIVATE KEY-----\nRoot Certificate ValuerootCertificateData)以「值」方式提供root.pem根证书内容用于校验服务端证书链。原始内容与转义格式与其他证书一致-----BEGIN CERTIFICATE-----\nMII..\nMBQ...\nCgU..\n8Lt..\n...\nh4\n-----END CERTIFICATE-----\nSSL CAcaCertificate在「值」配置方式下sslConfig中的 CA 证书用于 SSL 校验。对应 JSON Schema verifySSLConfig.json 中的 CA Certificate 字段。SSL CertificatesslCertificate客户端认证使用的 SSL 证书对应sslConfig中的 SSL Certificate 字段。SSL KeysslKey与该 SSL 证书关联的私钥对应sslConfig中的 SSL Key 字段。上述三项共同构成「按值」提供证书时的完整 SSL 上下文。在 client.py 中连接器会将这些值交给SSLManager生成 SSL 上下文并写入临时文件后建立wss连接。Staging Directory PathstagingDir指定临时暂存目录证书会在摄取Ingestion期间被临时写入该目录摄取作业结束后自动删除。JSON Schema sslCertValues.json 中该字段的默认值为/tmp/openmetadata-certs。若以「值」方式提供证书建议显式指定一个可写目录避免默认目录权限问题。Client Certificate PathclientCertificate以「路径」方式指定client.pem证书的文件路径。示例/path/to/client.pemClient Key Certificate PathclientKeyCertificate)以「路径」方式指定client_key.pem私钥证书的文件路径。示例/path/to/client_key.pemRoot Certificate PathrootCertificate以「路径」方式指定root.pem根证书的文件路径。示例/path/to/root.pem路径方式要求三个路径全部填写Schema 中qlikCertificatePath的required为clientCertificate、clientKeyCertificate、rootCertificate三项。源码_get_ssl_context中路径方式直接将三个路径作为ca_certs、certfile、keyfile传入 SSL 上下文。User DirectoryuserDirectory填写用户的目录名与userId一起构成X-Qlik-User请求头中的身份标识用于 Qlik Sense 服务端鉴权与用户映射。User IDuserId填写用户 ID与userDirectory组合使用示例配置中二者均为demo。Validate Host NamevalidateHostName开关项控制是否校验主机名与所提供证书是否匹配。JSON Schema 中该字段默认值为false。源码_get_ssl_context将validateHostName直接映射为 SSL 上下文的check_hostname设为true时启用严格主机名校验生产环境建议开启设为false时跳过主机名校验便于自签证书或证书 CN 与访问域名不一致的场景。证书两种提供方式与完整 YAML 工作流路径方式适合证书文件已存在于执行摄取任务的机器上值方式适合将证书内容直接固化在配置中多用于 UI 配置或临时环境。参考工作流示例 qlik_sense.yaml路径方式的完整配置如下source: type: qliksense serviceName: final_lineage serviceConnection: config: type: QlikSense hostPort: wss://localhost:4747 displayUrl: https://localhost certificates: # pass certificate paths clientCertificate: /path/to/client.pem clientKeyCertificate: /path/to/client_key.pem rootCertificate: /path/to/root.pem # pass certificate values # clientCertificateData: -----BEGIN CERTIFICATE-----\n....\n.....\n-----END CERTIFICATE-----\n # clientKeyCertificateData: -----BEGIN RSA PRIVATE KEY-----\n....\n....\n-----END RSA PRIVATE KEY-----\n # rootCertificateData: -----BEGIN CERTIFICATE-----\n....\n...-----END CERTIFICATE-----\n # stagingDir: /tmp/stage userId: user_id userDirectory: user_dir sourceConfig: config: type: DashboardMetadata lineageInformation: dbServiceNames: - mysql - postgres chartFilterPattern: {} # dashboardFilterPattern: # includes: # - .*mysql.* includeDraftDashboard: True sink: type: metadata-rest config: {} workflowConfig: openMetadataServerConfig: hostPort: http://localhost:8585/api authProvider: openmetadata securityConfig: jwtToken: your-jwt-token配置要点certificates下路径方式与值方式二选一示例中值方式被注释掉二者不可混用includeDraftDashboard控制是否提取未发布的草稿仪表盘。源码 metadata.py 中当该开关为False时会依据 Qlik 返回的qMeta.published标志过滤掉草稿应用sourceConfig.config.type固定为DashboardMetadatalineageInformation.dbServiceNames用于指定血缘匹配的数据库服务前缀。底层实现Engine API 调用链与元数据提取流程连接器与 Qlik Engine 的交互由 constants.py 中的 JSON-RPC 请求模板驱动核心调用序列为GetDocList获取全部应用App列表对应每个 Qlik 应用即一个 OpenMetadata Dashboard 实体OpenDoc CreateSessionObject GetLayout打开指定应用并创建工作表会话返回该应用的全部工作表每个工作表映射为一个 Chart 实体GetTablesAndKeys优先与GetObject(LoadModel) GetLayout兜底提取数据模型表Data Model Tables及其字段映射为 DashboardDataModel 实体。其中GetTablesAndKeys能覆盖由加载脚本创建的表LoadModel兜底路径只能返回通过 Data Manager 创建的表见 client.pyGetScript读取应用的加载脚本通过正则解析FROM/JOIN子句建立「Qlik 表 → 源 SQL 表」的映射用于生成表级与列级血缘见 client.py 与 metadata.py。提取到的数据模型字段统一以DataType.UNKNOWN/Qlik Field类型登记字段名取自 Engine 返回的字段 IDqOriginalFieldName或qName过长字段名会被truncate_column_name截断。血缘解析时若加载脚本中能匹配到源表则优先使用脚本血缘否则回退到connectorProperties.tableQualifiers推断库/模式名再通过 OpenMetadata 的search_in_any_service跨服务检索目标表。连接测试与测试用例验证创建服务时 UI 会触发连接测试其实现位于 connection.pyQlikSenseConnection继承BaseConnection测试步骤仅一项GetDashboards通过QlikSenseClient.get_dashboard_for_test_connection建立 WebSocket、发送GetDocList请求并解析响应成功即代表地址、证书与用户身份配置均正确。仓库中的单元测试覆盖了上述行为test_connection.py 验证连接类继承关系、客户端构建与测试步骤分发test_qliksense.py 基于QlikSenseSource拓扑验证仪表盘、图表实体的生成逻辑其 mock 配置展示了certificates路径方式与userDirectory/userId/hostPort/displayUrl的完整字段组合。小结Qlik Sense 连接器的配置核心在于三件事正确的 WebSocket 地址hostPort、可用的双向 TLS 证书路径或值二选一以及合法的用户身份userDirectoryuserId。displayUrl决定元数据页面的跳转链接validateHostName控制证书主机名校验强度stagingDir管理临时证书生命周期。配置完成后连接器会通过 Engine JSON API 依次提取应用、工作表、数据模型并结合加载脚本还原表级与列级血缘帮助你将 Qlik Sense 中的分析资产纳入 OpenMetadata 的统一数据目录。进一步阅读连接器完整实现见 qliksense 目录连接配置 JSON Schema 见 qlikSenseConnection.jsonUI 表单定义见 connectionSchemas/qlikSenseConnection.json。【免费下载链接】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),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →