背景:bi上有很多个数据集,每个数据集对不同的用户有不同的权限,需要将这类权限进行归类合并。(实现前提,需要申请元数据只读账号,可联系对应csm来进行申请) 核心表关联:数据集表(data_source) vs 权限表(resource_role_rel)关联条件
resource_role 字段中存储的数值(如 0、1、2、3)分别对应(所有者、使用者、导出者、目录可见性 )步骤一、在etl里面先选择这些输入数据集的特定字段,避免一些多余的字段影响分析 ①:data_source表里面选择以及ds_id(数据集id)、name(数据集名称) ②:resource_role_rel表里面选择resource_id(资源id)、resource _role(资源角色)、subject_id(授权主体id) 步骤二、通过数据集id和资源id进行关联,从而获取数据集对应的人员权限信息(所有者 / 使用者/导出者/目录可见性)及权限人员 ID。 得到关联后的数据之后,又因为资源角色的字段存的是数字不太直观,所以可以通过新建计算字段来进行转换一下。 此时会得到 步骤三:需要再和user表进行关联,通过授权主体id来获取到对应的名称。 得到的结果为下图,但是一个用户对应的权限会有多条数据,然后此时可以做一个合并的操作。 参考公式:concat_ws(',',collect_set([人员权限类型])over(partition by [数据集id],[授权主体id])) 最终通过分组聚合就可得到(不选合并前的那个字段)一份完整数据集权限分散表了 |