文章 查看内容

《基于多表关联,合并数据集同主体权限类型的方法》

《基于多表关联,合并数据集同主体权限类型的方法》

370 0 产品实操 2025-6-30 17:03 发布者: 观小枫

背景:bi上有很多个数据集,每个数据集对不同的用户有不同的权限,需要将这类权限进行归类合并。(实现前提,需要申请元数据只读账号,可联系对应csm来进行申请)核心表关联:数据集表(data_source) vs 权限表(re ...

背景:bi上有很多个数据集,每个数据集对不同的用户有不同的权限,需要将这类权限进行归类合并。

(实现前提,需要申请元数据只读账号,可联系对应csm来进行申请)

核心表关联:数据集表(data_source) vs 权限表(resource_role_rel)

关联条件

  • 主外键关联:通过 data_source.ds_id(数据集 ID)与 resource_role_rel.resource_id(资源 ID)建立匹配关系。
  • 关联目的:获取数据集对应的人员权限信息(所有者 / 使用者)及权限人员 ID。
数据集名称
data_source.name直接取自数据集表的名称字段。
数据集 IDdata_source.ds_id数据集唯一标识,用于关联权限表。
数据集权限人员 IDresource_role_rel.subject_id通过关联后获取权限表中的用户 ID
人员权限类型(所有者 / 使用者)resource_role_rel.resource_role权限表中role_key字段值通常为 owner(所有者)或 user(使用者),需转换为中文。

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]))

最终通过分组聚合就可得到(不选合并前的那个字段)一份完整数据集权限分散表了








路过

雷人

握手
1

鲜花

鸡蛋

刚表态过的朋友 (1 人)

评论

您需要登录后才可以发表言论 登录立即注册
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去评论 去发文 返回顶部
返回顶部