是否可以在Purview中更新资产的数据所有者?SDK调用后字段为空
Microsoft Purview 是否支持更新资产的数据所有者?
Microsoft Purview 原生支持更新资产的数据所有者字段,你遇到的更新后字段为空的问题,是代码写法和传参不符合SDK要求导致的。
现有代码的问题
- 无差别捕获所有异常直接返回
None,把接口返回的具体报错信息全部吞掉,无法定位失败根因 - 调用
partial_update_entity时缺少必填的实体类型参数,且属性传参结构不符合接口要求,传入的owner字段会被接口直接忽略,不会写入资产属性 - 对
owner字段的传值规则理解错误:该字段不接受普通的用户名、邮箱字符串,要求传入对应所有者的Azure AD对象ID(GUID格式),传值不符合规则时接口不会抛出显性错误,但前端页面不会正常渲染所有者信息
正确实现方式
首先确认你安装的官方azure-purview-catalog SDK版本不低于1.0.0b4,过低版本存在实体更新的已知bug。
参考以下可直接运行的代码实现:
def bind_data_owner_to_asset(owner_aad_object_id: str, asset_guid: str, asset_type_name: str): """ 为Purview资产绑定数据所有者 :param owner_aad_object_id: 数据所有者对应的Azure AD用户/安全组的对象ID(GUID格式,从Azure AD管理页面可查询) :param asset_guid: 目标资产在Purview中的全局唯一GUID :param asset_type_name: 目标资产的类型定义名,例如azure_sql_table、adls_gen2_file、powerbi_dataset等 """ try: update_result = purview_client.partial_update_entity( guid=asset_guid, typeName=asset_type_name, # 必须传入实体类型,SDK才能匹配对应属性schema attributes={ "owner": owner_aad_object_id } ) return update_result except Exception as e: print(f"更新资产所有者失败,错误信息:{str(e)}") raise
注意事项
- 执行更新操作的账号/服务主体,需要拥有Purview的数据策展人角色,否则没有资产属性的修改权限
- Purview门户的资产属性有最长30秒的索引延迟,接口返回更新成功后稍等片刻再刷新页面即可看到生效的所有者信息
- 不要传入邮箱、显示名作为owner值,必须使用Azure AD中对应主体的Object ID,否则字段无法正常关联显示
内容的提问来源于stack exchange,提问作者Fernando Messas
相关产品推荐
相关产品推荐

