
DataHub GraphQL 实战3 条查询加 1 个变更覆盖你日常 90% 的元数据场景【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub当你需要回答这张表的数据从哪来、又影响了谁时翻文档往往比动手查还慢。在 DataHub 里最直接的动手方式是它的 GraphQL API一次请求把数据集详情、负责人、多跳血缘一次拉回还能顺手把元数据改了。本文就按你实际要干的三件小事——查档案、追血缘、改描述——把这套接口走一遍。起个环境敲下第一条查询如果还没起本地环境克隆仓库后跑一下 quickstart 即可git clone https://gitcode.com/GitHub_Trending/da/datahub然后执行./docker/quickstart.sh。服务起来后访问http://localhost:9002/api/graphiqlGraphiQL 自带 schema 提示字段名写错会直接报出来比对着文档猜名字快得多。先来一条最小查询。URN 是 DataHub 里每个实体的唯一标识dataset 的格式固定为urn:li:dataset:(urn:li:dataPlatform:平台名,库.表,环境)。把 URN 填进去一次请求拿回名称、描述、平台和负责人query GetDataset { dataset(urn: urn:li:dataset:(urn:li:dataPlatform:hive,sales.orders,PROD)) { urn name description platform { name } owners { owners { urn username } } } }注意 GraphQL 的按需取字段特性你不写schemaMetadata响应里就绝不会出现它。对比 REST 接口动辄返回一整个 JSON 大对象这一点在写脚本解析结果时特别省心。追多跳血缘searchAcrossLineage 比一层 edges 省事拿到单表档案只是开胃菜。真实工作里你更常问的是上游第三层是谁——比如要下线一个 ODS 表得确认它到底波及几张 DWS。逐层查upstream关联要发 N 次请求而searchAcrossLineage直接把多跳遍历丢给后端query { searchAcrossLineage(input: { urn: urn:li:dataset:(urn:li:dataPlatform:hive,sales.orders,PROD) direction: INCOMING count: 20 }) { total searchResults { degree entity { ... on Dataset { name } } } } }direction: INCOMING查上游、OUTGOING查下游每个结果的degree告诉你它离你几跳。这里有个坑血缘图很大时结果可能被截断返回里会有isPartial标记看到它是 true 就别把 total 当完整口径汇报给老板。想只数数不拉数据还有专门的searchAcrossLineageCounts。查到了数据接下来你可能想改它GraphQL 的 mutation 和查询走同一个端点、同一套 schema。最轻量的变更是更新数据集描述——比如把临时表改成一句能说明业务的正名mutation { updateDataset( urn: urn:li:dataset:(urn:li:dataPlatform:hive,sales.orders,PROD) input: { description: 订单主表T1 凌晨 2 点更新口径见数据字典 } ) { urn description } }执行完响应里直接带回改后的字段方便你在脚本里做断言。如果要批量改几十张表别在循环里逐条发请求——schema 里有updateDatasets批量入口一次事务搞定。更复杂的关系变更比如换 Owner、加血缘边对应的 mutation 在 datahub-graphql-core/ 的 schema 文件里都能搜到命名都叫update*或set*GraphiQL 的自动补全会替你找到它们。不知道 URN 怎么办跨实体搜索兜底手上有 URN 是理想情况现实里你往往只有关键词。searchAcrossEntities一次请求跨所有实体类型搜结果用 fragment 按类型分开展开query { searchAcrossEntities(input: { query: orders, types: [DATASET, CORP_USER], count: 5 }) { total searchResults { entity { ... on Dataset { name platform { name } } ... on CorpUser { username displayName } } } } }结果里数据集和负责人混排出现各自带自己的字段。拿到 URN 之后回到本文开头那条查询继续深挖就行。结果超过一页时用scrollAcrossEntities配合scrollId翻页能突破 10k 条上限。几个实战里容易踩的点URN 环境别混PROD 和 DEV 的 URN 是不同的实体查错环境会查到空。认证生产环境请求要带Authorization: Bearer tokentoken 获取方式见 docs/api/graphql/ 下的 token-management 文档。别过度取字段把schemaMetadata整段拉回来再自己挑字段等于把 GraphQL 的按需优势用没了。血缘写操作有专门入口updateLineage接受edgesToAdd/edgesToRemove移除优先于新增改血缘前先确认幂等。更多可查的字段和操作直接翻 GraphiQL 左侧的 schema 文档即可那里比任何教程都新。打开 GraphiQL敲下你的第一条dataset(urn: ...)剩下的交给 DataHub。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考