Doris行权限入门实战

Doris行权限原理

Doris支持了行级数据权限,当多租户模式使用的是共享表模式的情况下该功能能很方便的帮用户数实现行级权限控制。

Doris的行级权限是通过安全策略(ROW POLICY)实现的。
具体做法为:用户在指定表上创建安全策略并授权到具体的用户,当用户查询数据的时候查询规划会对SQL进行改写,将用户的安全策略注入到SQL中,改写后的SQL会携带用户的行权限。以实现多用户的数据行级权限控制。

(1)设置ROW POLICY:
在表test.table1 上创建一个名称为test_row_policy_1的ROW POLICY,并将POLICY绑定在用户test_user上。POLICY策略为:tenantid = ‘a’

CREATE ROW POLICY test_row_policy_1 ON test.table1 
AS RESTRICTIVE TO test_user USING (tenantid = 'a');

(2)使用ROW POLICY查询:
当用户test_user执行查询语句的时,Doris进行SQL改写,将ROW POLICY注入到SQL中。

select * from (select * from table1 where tenantid 
### 关于 Apache Doris 复杂报表的实战案例与教程 #### 背景概述 Apache Doris 是一款高性能、实时分析型数据库,支持多种数据导入方式和丰富的查询功能。其强大的聚合能力使其成为构建复杂报表的理想工具[^1]。在实际应用中,Doris 可以通过 Routine Load 持续消费 Kafka Topic 中的数据来实现实时更新,从而满足动态报表需求[^2]。 #### 表设计与实现方式 为了更好地支持复杂报表场景,在表设计方面可以采用星型模型或雪花模型进行维度建模[^5]。具体来说: - **事实表**:用于记录具体的业务事件,通常包含时间戳字段以便按时间段统计。 - **维表**:定义分类属性(如地区、产品类别),便于多维度交叉分析。 以下是基于 Doris 的复杂报表实现的一个典型例子——电商销售数据分析: ```sql -- 创建订单事实表 (Order Fact Table) CREATE TABLE order_fact ( order_id BIGINT, user_id INT, product_id INT, amount DECIMAL(10, 2), create_time DATETIME, region STRING COMMENT 'Region of the customer' ) DISTRIBUTED BY HASH(order_id); -- 创建商品维表 (Product Dimension Table) CREATE TABLE product_dim ( product_id INT, category_name STRING, brand_name STRING ) DISTRIBUTED BY HASH(product_id); ``` #### 数据同步逻辑 对于复杂的报表系统而言,确保数据的一致性和时效性至关重要。以下是一个完整的同步流程说明[^4]: 1. **初始加载阶段** 使用批量 ETL 工具(如 Spark 或 Flink)将历史数据从 OLTP 数据库或其他外部存储迁移到 Doris 中[^3]。 2. **增量同步阶段** 配置 Routine Load 来订阅 Kafka 主题中的变更日志,自动捕获新增或修改的操作并写入目标表[^2]。 3. **合并阶段** 定期执行 SQL 查询语句完成最终的结果汇总,例如按照日期分区生成每日摘要视图。 #### 示例代码片段 下面展示如何利用窗口函数计算最近7天内的热门商品排行列表: ```sql SELECT p.category_name AS CategoryName, COUNT(*) AS OrderCount, SUM(o.amount) AS TotalSalesAmount FROM order_fact o JOIN product_dim p ON o.product_id = p.product_id WHERE o.create_time >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) GROUP BY p.category_name ORDER BY TotalSalesAmount DESC; ``` 此脚本能够帮助分析师快速了解哪些类别的商品在过去一周表现最佳。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值