先说我的猜测:
从代码上说,Superset是可以支持多表关联的(仅限于同一数据库之内),甚至在SQL Editor中可以绕过不支持多变关联的限制,自己写SQL语句,再保存成图表(slice)。
在界面上不支持多表关联,可能更多是从操作逻辑的角度考虑。也就是说,该如何设置多表关联呢?如果不引入《The Data Warehouse Toolkit》中介绍的“事实表+维度表”模型,则多表关联的意义过于宽泛,用户可以任意设定两表关联的条件,这样的话,界面该如何呈现才能符合用户的预期。如果引入“事实表+维度表”模型,则Superset的灵活性就会受到限制。
代码:
Superset执行SQL查询的代码在superset/connectors目录下,按文件名推测,应该是该目录下的models.py文件。该文件定义了SqlaTable类,该类继承了flask_appbuilder的Model和superset自己的basemodel的DataSource。
在前端执行Run Query操作,会调用到superset/viz.py中的get_df函数,该函数内部,会调用self.datasource.query函数,通过动态绑定,这个query函数实际执行的是SqlaTable的query函数,该函数的逻辑