如何优先考虑来自超集中不同用户角色的查询?

问题描述

我有低优先级用户高优先级用户。首先,我需要处理来自高优先级用户查询低优先级用户最初应该受到限制,因为它们会降低高优先级用户的速度。

目前我还没有找到解决方案。这通常是可能的还是我需要分叉 apache-superset 并在源代码中自己实现这样的逻辑?路线图中是否计划了此功能

无论如何,我将不胜感激!

解决方法

超集通常是现有数据存储上的一个薄层,没有太多的计算层。

考虑到这一点,正确的技术决策可能是在数据库/数据存储层进行配置。许多人将 LDAP 集成到 Superset 和他们的数据存储中,因此可以配置角色和数据的 2 向配置优先级/权限。

话虽如此,Superset 是开源的!绝对欢迎您 fork 代码并自己实现它。更好的是,您可以随时通过创建 Github 问题来进行讨论。

,

就像 Srini 所说,这取决于您的数据层。

实现此目的的一种方法是在您的 SQL_QUERY_MUTATOR 中定义自定义 superset_config.py

# superset_config.py
def SQL_QUERY_MUTATOR(sql,username,security_manager):
    pool = "vip" if username in VIP_LIST else "normal"
    return f"-- pool: {pool}\n{sql}"

这将在查询前添加一条注释,指定一个池是“vip”还是“normal”。然后,您可以将其发送到解析评论并将查询分派到正确标头的代理。

另一种方法是指定一个 DB_CONNECTION_MUTATOR 来根据用户设置连接参数:

# superset_config.py
def DB_CONNECTION_MUTATOR(uri,params,security_manager,source):
    pool = "vip" if username in VIP_LIST else "normal"
    params["configuration"] = {"job.queue.name": pool}}
    return uri,params