对hive类型的行级权限设置字段和设置值慢,实现的新策略
更新时间: 2021-04-21 19:02:35
阅读 1020
对hive类型的行级权限设置字段和设置值慢,实现的新策略
之前说过行级权限的实质是在sql 上加条件(where)。具体可以参考:行级权限实质
在实际中对hive设置行级权限,因为hive 本身对查询就比较慢,所以在行级权限设置字段和设置值的时候,可能几乎读不出来。(读字段会去查询表结构,列表读值会去读表中内容,都涉及到sql 查询)
面对这种现象我们该如何处理?
建议添加一个维度表。
如之前讲的例子超市表现在是存在hive 中。此时设置行级权限响应就很慢。如果我们相对不同的人设置不同的地区权限。
我们需要创建一个维度表,这个表可以是excel 或者关系型数据库。
现在维度是地区,那么我们只要创建地区表就好了。我们只要对该维度表设置权限即可。
然后在数据模型中,原始模型和该表进行内连接。
1.最开始设置行级权限:
select * from 超市表
where 地区=xxx
2.现在加了纬度表,行级权限设置就成了:
select * from 超市表 ,地区表
where 超市表.地区=地区表.地区
and 地区表.地区=XXX
因为地区表是excel 或关系型数据库,查询很快,所以设置行级权限比较好。
还有一种方法:创建一个地区的维表设置行级权限。 (和上面相同)
然后做报表层把行级权限设置的表放入列表筛选器,最后利用筛选器的跨模型关联功能,和其他数据模型设置跨视图关联。
但是使用这个方法需要几个前提:①这个筛选器需要默认选择全部来影响 ②需要隐藏这个筛选器,以免通过清空选项来导致行级过滤无效
文档反馈
以上内容对您是否有帮助?