有数的数据模型查询的原理

如图的数据模型,有数sql的拼接原理是什么?

只是我们从后台截取sql如下: SELECT * FROM dashboard.app_version AS t1
INNER JOIN dashboard.api_name AS t2 ON (t1.id <=> t2.id)
INNER JOIN dashboard.backend_message AS t3 ON (t1.id <=> t3.id) INNER JOIN dashboard.backend_deploy_persons AS t4 ON (t3.creator_id <=> t4.creator_id) INNER JOIN dashboard.bigviz_user AS t5 ON (t4.id <=> t5.id) WHERE (t5.id IN (8082))

从sql看出有数查询是以左边第一个表作为主节点依次关联形成最终sql,且一旦该sql形成,所有基于该模型创建的报告都会以此sql作为子查询。

如果在数据模型的列表筛选对其中一个表的字段设置了筛选,sql 如何执行?

先生成上面的sql代码,然后以此作为子查询做字段筛选。 具体场景:现在将t5的某个字段作为数据模型的列表筛选条件。 这样的一种设计方式会存在问题:如果t1和t5在不做筛选的时候会出来多条结果,对性能是一个负担。
优化:可以把t5创建一个自定义sql, 内容如: select * from t5 where 字段=xxx 。 然后把这个sql视图代替上图的t5单表。

这样的一个数据模型,在报告中,如果只用了某张表的一个字段,会如何?

有数还是会把数据模型的sql 当成一个子查询,在该sql上做查询。