sql查询davinci看板数据
davinci是一个开源的数据可视化解决方案,公司用这个开源项目搭建了很多的数据看板,比较轻量级,但是挺好用的。但是这个项目有一点不好,业务人员如果觉着看板不好,需要研发修改,在主搜索页面上并没有搜索widget或者dashboard的地方,只能搜索项目,当项目很多,dashboard很多的时候,会非常不方便,只能一个项目一个项目的翻,非常的耗时,还有可能找不到,很耽误事。
发现这个不方便的点后,我下载了源代码,想着对这个项目进行二开。这个项目是一个单体项目,前后端写到了一起,前端用的是TypeScript,后端是java。TS不熟,有学习成本,另外,本地想部署这个项目,折腾了几次,都因为各种原因失败了。这个项目现在也不维护了,提issue也不会有人回复了,只能自己硬磕。继续搞下去,我肯定能把搜索功能给加上,但是时间成本有点高。那还有没有其他方法呢?
回到最初的问题上,我们的问题就是没法搜索widget,以及dashboard。其实,不管前后端咋折腾,最后也得从数据库拿数据,既然能查库,我们直接找到表,写sql查,效果是一样的啊。
想到这一点,我先读了一下这个项目的文档,看看这个项目的结构是什么样的。然后找了台云服务器,搭建了davinci测试环境,初始化了相关的表,创建几条测试的数据,很快就搞明白了表结构关系,写出了sql。
SET @base_url = 'http://davinci.example.com:58080/#/project/';
SELECTp1.`name` AS '项目名称',CONCAT(@base_url,p1.id,"/vizs") AS 'dashboard列表',d1.name AS 'dashboard名称',CONCAT(@base_url,p1.id,"/portal/",d1.id,"/dashboard/",m1.dashboard_id) AS 'dashboard链接',d.`name` AS '看板名称',CONCAT(@base_url,p1.id,"/widget/",w1.id) AS 'Widget访问链接',w1.name AS 'View名称',CONCAT(@base_url,p1.id,"/view/",v1.id) AS 'View访问链接'
FROM dashboard dLEFT JOIN dashboard_portal d1 ON d1.id = d.dashboard_portal_idLEFT JOIN project p1 ON p1.id = d1.project_idLEFT JOIN mem_dashboard_widget m1 ON d.id = m1.dashboard_idLEFT JOIN widget w1 ON m1.widget_Id = w1.idLEFT JOIN view v1 ON v1.id= w1.view_id
WHERE
d.name = '项目相关服务数据'
这么搞,虽然没有搞页面直观,但是能解决眼前的问题,后面可以用熟悉的语言再封装一下sql,搞个页面,比开发原项目肯定是快。
希望能帮助到遇到这个问题的小伙伴