OpenMetadata Drive 服务元数据采集管道配置指南:过滤器模式、实体开关与删除标记详解
发布时间:2026/9/15 23:27:38 作者:尧图编辑部 阅读量:1,286

OpenMetadata Drive 服务元数据采集管道配置指南过滤器模式、实体开关与删除标记详解【免费下载链接】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 中Drive 服务如 Google Drive元数据采集管道Metadata Pipeline的完整配置展开逐项讲解目录/文件/电子表格/工作表四类过滤器模式Filter Pattern、Include 系列实体开关、删除标记Mark Deleted策略、Owner/标签摄取以及并发线程数等关键参数。读完本文你将能够基于 driveServiceMetadataPipeline.json 定义的配置模型在 YAML 工作流或 UI 中正确配置 Drive 元数据采集并通过源码确认每个参数的实际作用路径。一、管道定位Drive 元数据在拓扑中的角色在 OpenMetadata 中Drive 服务Google Drive、SharePoint、OneDrive、Box、Dropbox 等以DriveMetadata类型的 sourceConfig 进行元数据采集。其采集拓扑定义在 drive_service.py 的DriveServiceTopology中层级关系为serviceDrive 服务→ directory目录→ file文件/ spreadsheet电子表格→ worksheet工作表该拓扑的设计注释明确指出Drive 层级比数据库层级更灵活目录可以嵌套父子关系、文件可以脱离目录独立存在、电子表格是包含工作表的特殊实体。整个管道围绕目录、文件、电子表格、工作表四种实体展开本文所述的全部配置参数也正是服务于这四类实体的提取、过滤与生命周期管理。二、管道配置模型总览所有配置项在 driveServiceMetadataPipeline.json 中以 JSON Schema 形式定义并生成对应的DriveServiceMetadataPipeline类被 drive_service.py 中的source_config字段直接引用。完整参数及默认值如下配置项类型默认值作用typestringDriveMetadata管道类型标识directoryFilterPatternfilterPattern空目录包含/排除正则fileFilterPatternfilterPattern空文件包含/排除正则spreadsheetFilterPatternfilterPattern空电子表格包含/排除正则worksheetFilterPatternfilterPattern空工作表包含/排除正则includeDirectoriesbooleantrue是否采集目录元数据includeFilesbooleantrue是否采集文件元数据includeSpreadsheetsbooleantrue是否采集电子表格元数据includeWorksheetsbooleantrue是否采集工作表元数据includeTagsbooleantrue是否摄取标签includeOwnersbooleanfalse是否摄取所有者markDeletedDirectoriesbooleantrue源端删除的目录是否软删除markDeletedFilesbooleantrue源端删除的文件是否软删除markDeletedSpreadsheetsbooleantrue源端删除的电子表格是否软删除markDeletedWorksheetsbooleantrue源端删除的工作表是否软删除useFqnForFilteringbooleanfalse过滤时匹配 FQN 还是原始名称overrideMetadatabooleanfalse是否用源端元数据覆盖服务端已有值threadsinteger1并行采集线程数其中filterPattern的结构定义在 filterPattern.json 中仅包含两个字段{ includes: [正则表达式列表], excludes: [正则表达式列表] }三、过滤器模式Filter Patterns四层精准圈定采集范围过滤器模式用于控制元数据采集的范围OpenMetadata 对匹配到的实体执行正则匹配未匹配的实体在状态中被标记为 Filtered Out可参考 drive_service.py 中的_get_filtered_directory_names实现过滤命中后调用self.status.filter(...)记录状态。3.1 Directory Filter Pattern目录过滤器Include显式包含目录只有名称匹配任一正则的目录会被采集其余目录全部排除。例如只采集以project开头的目录^project.*Exclude显式排除目录名称匹配任一正则的目录会被跳过其余目录全部采集。例如排除名称中包含archive的目录.*archive.*目录过滤器在源码中通过filter_by_directory执行见 drive_service.py并且直接受useFqnForFiltering参数控制匹配对象。3.2 File Filter Pattern文件过滤器文件过滤器按名称或扩展名控制哪些文件进入元数据提取。Include 常用示例.*\.xlsx?$— 包含 Excel 文件.xlsx/.xls.*\.csv$— 包含 CSV 文件.*\.pdf$— 包含 PDF 文档.*\.docx?$— 包含 Word 文档.docx/.docExclude 常用示例~\$.*— 排除 Office 临时文件\.tmp$— 排除.tmp扩展名文件^\..*— 排除隐藏文件以.开头的文件3.3 Spreadsheet Filter Pattern电子表格过滤器电子表格过滤器控制哪些电子表格文件如 Google Sheets、Excel参与元数据提取。Include添加正则来按名称包含指定电子表格Exclude添加正则排除指定电子表格。当只需要把部分电子表格作为数据源处理、忽略其余表格时此配置尤为有用。对应实现为 drive_service.py 的get_spreadsheet方法遍历电子表格列表后调用filter_by_spreadsheet命中则记录 Spreadsheet Filtered Out 状态并跳过。3.4 Worksheet Filter Pattern工作表过滤器工作表过滤器控制电子表格内部哪些工作表参与元数据提取。Include 常用示例^data_.*— 包含以data_开头的工作表.*_final$— 包含以_final结尾的工作表Exclude 常用示例^temp_.*— 排除临时工作表.*_draft$— 排除草稿工作表3.5 Use FQN For Filtering基于 FQN 过滤默认false时上述正则作用于实体的原始名称Raw Name例如file_name。开启后正则将作用于完全限定名FQN例如service_name.directory_name.file_name当希望基于完整路径或层级进行过滤而不仅是单项名称时应启用此开关。从源码看该参数直接影响目录过滤时传给filter_by_directory的对象drive_service.py开启时传 FQN关闭时传原始目录名。四、Include 系列开关按实体类型控制采集粒度这组开关控制采集什么类型的数据全部默认开启true可按需关闭以缩小采集范围、减少 API 调用量。4.1 Include Directories采集目录开启时提取目录相关元数据包括目录结构与层级关系含嵌套父子关系目录权限与归属创建时间、修改时间等目录元数据若只想提取文件级元数据、不需要目录信息可关闭此开关。在 Google Drive 实现 metadata.py 中该开关直接决定是否生成目录列表并推进拓扑的directory节点。4.2 Include Files采集文件开启时提取所有类型文件的元数据包括文档PDF、Word 等图片视频其他文件类型只想提取目录或电子表格元数据时可关闭此开关对应 Google Drive 实现中的 includeFiles 判断。4.3 Include Spreadsheets采集电子表格开启时将电子表格文件Google Sheets、Excel作为结构化数据源处理提取电子表格结构工作表名称及其关系基础 Schema 信息关闭后电子表格不会被当作数据源处理。基类的get_spreadsheet方法在入口处即判断此开关drive_service.py。4.4 Include Worksheets采集工作表开启时为电子表格内的每个工作表提取详细元数据包括列头与数据类型行数统计工作表特有元数据若只需要电子表格级元数据、不需要工作表细节可关闭此开关对应 Google Drive 实现中的 includeWorksheets 判断。4.5 Include Tags 与 Include Owners标签与所有者Include Tags默认true控制标签摄取。开启时连接器从源 Drive 系统提取标签并应用到 OpenMetadata 中的摄取实体。基类为目录、文件、电子表格、工作表分别定义了yield_*_tag_details方法且每个方法都以if self.source_config.includeTags:为前提drive_service.py。Include Owners默认false控制所有者摄取。开启后当源端所有者邮箱与 OpenMetadata 服务器中存储的用户匹配时会将其作为摄取实体的所有者但如果摄取实体已存在且已有所有者则不会被覆盖。基类中提供了get_owner_ref钩子drive_service.py具体实现由各 Drive 服务子类完成。五、Mark Deleted 系列源端删除后的软删除策略这组开关控制当源端实体被删除时OpenMetadata 中的对应实体如何处理全部默认开启true采用软删除soft delete机制。其底层统一由delete_entity_from_source工具完成实现于基类的四个mark_*_as_deleted方法中drive_service.py并在拓扑的post_process阶段被调用。配置项开启时行为markDeletedDirectories源目录被删除时该目录在 OpenMetadata 中标记为已删除与之关联的所有实体文件、电子表格、工作表、血缘一并删除markDeletedFiles源文件被删除时文件标记为已删除关联实体血缘、关系一并删除markDeletedSpreadsheets源电子表格被删除时电子表格标记为已删除关联的工作表与血缘一并删除markDeletedWorksheets源工作表被删除时工作表标记为已删除关联血缘一并删除关闭对应开关可在源端删除后保留OpenMetadata 中的元数据。注意mark_worksheets_as_deleted有一个特殊前提当拓扑上下文中没有电子表格时该方法直接返回并记录 debug 日志No Spreadsheet found in the context...因为工作表删除必须以父电子表格的 FQN 为参数构建查询。六、Override Metadata源端与服务端的元数据覆盖策略overrideMetadata默认false控制源端拉取的元数据是否覆盖 OpenMetadata 服务器中的已有元数据开启true源端拉取的元数据将直接覆盖并替换 OpenMetadata 中已存在的元数据。关闭false源端拉取的元数据不覆盖已有值仅对 OpenMetadata 中尚无值的字段进行补充更新。该参数主要影响description描述、tags标签、owner所有者和displayName显示名这几类字段。默认关闭意味着更保守的合并策略避免源端信息误覆盖用户在 OpenMetadata 中人工维护的元数据。七、Number of Threads并行采集与性能权衡threads默认1控制 Drive 采集的并行线程数。提高线程数可显著提升大型 Drive 结构的采集性能但也会增加资源消耗和 API 限流压力。文档给出的推荐取值1 线程中小型 Drive 的安全默认值2–4 线程中大型 Drive且网络带宽良好时5 线程超大型 Drive且具备企业级 API 配额时八、端到端配置示例以下为完整的 Drive 元数据采集 YAML 配置基于仓库示例 sample_drive_data.yaml 扩展演示了过滤器模式与实体开关的组合用法source: type: sample-drive-data serviceName: sample_google_drive serviceConnection: config: type: GoogleDrive credentials: gcpConfig: type: service_account projectId: sample-project-id privateKeyId: sample-private-key-id privateKey: | -----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY----- clientEmail: sample-sasample-project.iam.gserviceaccount.com clientId: 123456789 driveId: 0APBVnJtQ-NLCUk9PVA driveName: Marketing Team Drive sourceConfig: config: type: DriveMetadata directoryFilterPattern: includes: - ^project.* excludes: - .*archive.* fileFilterPattern: includes: - .*\\.xlsx?$ - .*\\.csv$ excludes: - ~\\$.* - ^\\.\\..* # 排除隐藏文件 spreadsheetFilterPattern: includes: - .* worksheetFilterPattern: includes: - ^data_.* excludes: - ^temp_.* includeDirectories: true includeFiles: true includeSpreadsheets: true includeWorksheets: true includeTags: true includeOwners: false markDeletedDirectories: true markDeletedFiles: true markDeletedSpreadsheets: true markDeletedWorksheets: true useFqnForFiltering: false overrideMetadata: false threads: 2 sink: type: metadata-rest config: {} workflowConfig: loggerLevel: INFO openMetadataServerConfig: hostPort: http://localhost:8585/api authProvider: openmetadata securityConfig: jwtToken: eyJraWQiOiJHYjM4OWEtOWY3Ni1nZGpzLWE5MmotMDI0MmJrOTQzNTYiLCJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...在 OpenMetadata UI 中配置时上述参数以表单形式呈现在连接器的 Metadata 管道配置页即本文源文档 metadata.md 所对应的界面每个配置项均带独立帮助说明在代码生成或编排场景下则直接以 YAML/JSON 形式传入最终被解析为DriveServiceMetadataPipeline对象驱动采集。九、配置生效链路与源码印证完整理解这些配置参数需要知道它们在代码中的实际消费位置Schema 定义driveServiceMetadataPipeline.json 定义全部字段、类型与默认值additionalProperties: false意味着配置中不允许出现未定义字段基类消费drive_service.py 中过滤器directoryFilterPattern、spreadsheetFilterPattern、实体开关includeSpreadsheets、includeTags、includeOwners、删除标记markDeleted*和useFqnForFiltering均被直接读取具体实现消费Google Drive 子类 googledrive/metadata.py 中分别对includeDirectories、includeFiles、includeWorksheets做了入口判断决定是否推进对应拓扑节点拓扑编排DriveServiceTopologydrive_service.py将删除标记方法挂在根节点与电子表格节点的post_process阶段确保在采集完成后统一执行软删除逻辑。十、最佳实践建议先过滤、后开关优先用四类过滤器模式圈定范围再决定是否需要关闭 Include 开关避免不必要的 API 调用与元数据噪音。删除标记按需关闭若希望在源端删除文件后仍保留历史元数据如审计场景请将对应的markDeleted*开关设为false。谨慎开启 Override Metadata默认false的合并语义更安全确需源端权威覆盖时才开启。Owner 摄取的前提includeOwners依赖源端所有者邮箱与 OpenMetadata 用户邮箱匹配且已存在所有者不会被覆盖配置前应确认用户体系已就绪。线程数循序渐进从默认 1 线程开始观察 API 限流与资源占用后再逐步提升至 2–4 甚至 5。FQN 过滤需了解命名结构启用useFqnForFiltering前先确认实体的 FQN 层级结构service_name.directory_name.file_name否则正则可能意外失配。通过上述参数组合你可以将 Drive 元数据采集精确控制到哪些目录、哪些文件类型、哪些电子表格、哪些工作表的粒度同时定义源端删除后的生命周期策略从而构建一个干净、可控、可持续同步的 Drive 数据资产目录。【免费下载链接】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),仅供参考