# openmetadatasdksamples **Repository Path**: trumyang/openmetadatasdksamples ## Basic Information - **Project Name**: openmetadatasdksamples - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-18 - **Last Updated**: 2025-09-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenMetadata to Dify 同步工具 该工具用于从 OpenMetadata 获取表结构元数据和指标信息,并推送到 Dify 知识库中。 ## 功能特性 1. 获取 OpenMetadata 中的所有表结构信息 2. 获取表的详细元数据,包括列信息、约束等 3. 获取所有指标信息及其详细元数据 4. 将表元数据和指标元数据分别推送到不同的 Dify 知识库中 5. 提取并展示指标的加工逻辑表达式 6. 支持按服务名排除不需要同步的表结构信息 7. 支持将特定schema的元数据推送到专用知识库 ## 安装依赖 ```bash pip install -r requirements.txt ``` ## 配置说明 所有配置信息都存储在 [config.json](file:///D:/myworkspaces/openmetadatasdksamples/config.json) 文件中,请根据实际情况修改以下配置项: ```json { "openmetadata": { "url": "http://localhost:8585", "token": "your-openmetadata-api-token" }, "dify": { "url": "http://localhost:8000", "api_key": "your-dify-api-key", "table_dataset_id": "your-table-dataset-id", "metric_dataset_id": "your-metric-dataset-id", "schema_dataset_id": "your-schema-dataset-id" } } ``` 配置项说明: - `openmetadata.url`: OpenMetadata 服务地址 - `openmetadata.token`: OpenMetadata API token - `dify.url`: Dify 服务地址 - `dify.api_key`: Dify API 密钥 - `dify.table_dataset_id`: Dify 表元数据知识库 ID - `dify.metric_dataset_id`: Dify 指标元数据知识库 ID - `dify.schema_dataset_id`: Dify schema元数据知识库 ID(用于推送特定schema的元数据) ## 表同步配置 在 `config.json` 中可以通过 `table_sync` 部分配置表同步的相关选项: ```json { "table_sync": { "target_databases": ["database1", "database2"], "excluded_services": ["service1", "service2"], "target_schemas": ["service1.database1.schema1", "service2.database2.schema2"] } } ``` - `target_databases`: 指定要同步的数据库列表,如果为空则同步所有数据库的表 - `excluded_services`: 指定要排除的服务列表,以这些服务开头的表将不会被同步 - `target_schemas`: 指定要推送到专用schema知识库的schema列表 例如,如果配置了 `"excluded_services": ["mysql", "postgres"]`,那么所有以 `mysql.` 或 `postgres.` 开头的表将不会被同步。 ## 使用方法 1. 修改 [config.json](file:///D:/myworkspaces/openmetadatasdksamples/config.json) 文件中的配置参数 2. 运行脚本: ```bash # 同步所有元数据 python openmetadata_dify_sync.py # 仅同步表元数据 python openmetadata_dify_sync.py table # 仅同步指标元数据 python openmetadata_dify_sync.py metric # 仅同步schema元数据到专用知识库 python openmetadata_dify_sync.py schema ``` ## 代码说明 ### 主要类和方法 - `OpenMetadataDifySync`: 主要的同步工具类 - `get_all_tables()`: 获取所有表信息 - `get_table_details(table_fqn)`: 获取表的详细信息 - `get_all_metrics()`: 获取所有指标信息 - `get_metric_details(metric_fqn)`: 获取指标的详细信息 - `format_table_metadata(table_details)`: 格式化表元数据为文本 - `format_metric_metadata(metric_details)`: 格式化指标元数据为文本,包括加工逻辑表达式 - `push_to_dify_knowledge_base(dataset_id, title, content)`: 将内容推送到指定的Dify知识库 - `sync_table_metadata()`: 同步表元数据到Dify知识库 - `sync_metric_metadata()`: 同步指标元数据到Dify知识库 - `sync_schema_metadata()`: 同步schema元数据到Dify专用知识库 - `sync_all_metadata()`: 同步所有元数据到Dify知识库 ## 配置说明 在使用前需要配置以下参数: ```python # OpenMetadata 配置 OPENMETADATA_URL = "http://localhost:8585" # 替换为实际的OpenMetadata地址 OPENMETADATA_TOKEN = "your-openmetadata-api-token" # 替换为实际的API token # Dify 配置 DIFY_URL = "http://localhost:8000" # 替换为实际的Dify地址 DIFY_API_KEY = "your-dify-api-key" # 替换为实际的API key TABLE_DATASET_ID = "your-table-dataset-id" # 替换为实际的表元数据知识库ID METRIC_DATASET_ID = "your-metric-dataset-id" # 替换为实际的指标元数据知识库ID SCHEMA_DATASET_ID = "your-schema-dataset-id" # 替换为实际的schema元数据知识库ID ``` ## 注意事项 1. 确保 OpenMetadata 和 Dify 服务正常运行 2. 确保提供的 API token 和 API key 有效 3. 确保网络连接正常,可以访问 OpenMetadata 和 Dify 服务 4. 根据实际情况调整请求频率,避免对服务造成过大压力 5. 表元数据和指标元数据现在会分别推送到不同的知识库中 6. 指标元数据现在包含加工逻辑表达式信息 7. 特定schema的元数据可以推送到专用的知识库中,便于专门管理和检索