开源|Davinci用户体验:你离数据可视精美大屏只差一个Davinci!

导读:同比和环比是衡量企业某个数据周期性增长速度变化的重要指标,但是一味的看数据,我们很难对增长率的大小做出比较,这个时候就需要可视化工具来帮助我们。小编这次又“编造”了另外一组数据,利用Moonbox写出SQL求同比环比增长率,最后借用Davinci展示出来。具体请看正文~

Davinci介绍:Davinci是一个DVAAS(Data Visualization as a Service)平台解决方案。Davinci面向业务人员/数据工程师/数据分析师/数据科学家,致力于提供一站式数据可视化解决方案。既可作为公有云/私有云独立使用,也可作为可视化插件集成到三方系统。用户只需在可视化UI上简单配置即可服务多种数据可视化应用,并支持高级交互/行业分析/模式探索/社交智能等可视化功能。

特别鸣谢

感谢万能的 Wormhole一姐王小燕同学 & Moonbox大神王浩同学 提供SQL技术支持!

一、Introduction

环比指本期统计数据与上期统计数据做对比,如2018年2月的数据与2018年1月的数据做对比。

同比指本期的统计数据与往年同期的统计数据做对比,如2018年1月与2017年1月的数据做对比。

同比和环比都反映变化速度,但侧重点不同:利用环比,我们会看到数据的短期趋势,但是这个数据可能是因为受到季节等因素的影响;而同比则更加侧重反映长期的大趋势,这样我们分析数据也就规避了季节的因素。

图1是小编随意编造的一组很简单的数据,表头包括年、月、场次、观众人数、票房及广告收入,用英文表示是为了之后写SQL的时候方便一些。


(图1)

暂且称这组数据为“ABD虚拟影院相关数据”,接下来,就是借助Davinci展示同比环比的时刻啦!

二、Process

Step 1:增加数据源

点击Source界面右上角“+”,在Source List里新增数据源(图2),上传CSV文件至指定数据库中(图3),小编使用的数据库为MySQL。


(图2)


(图3)

上传完CSV文件之后,就来到了我们特别重要的一步:写SQL、求出同比环比增长率。

计算同比环比可借助SQL里的window窗口函数实现。MySQL数据库8.x版本才支持window函数,然而小编所用数据库版本为5.x,升级比较麻烦,所以小编在这里使用Moonbox计算同比环比增长率。步骤如下:

(1)把 CSV文件对应数据源挂载到Moonbox计算引擎中。


(图4)

(2)在Source界面继续添加来自Moonbox的数据源,小编将其命名为“growthSource”,连接Url写Moonbox jdbc服务地址(例:jdbc:moonbox://localhost:10010/growthSource),注意将Moonbox jdbc 驱动放至Davinci lib包下。


(图5)

点击保存,就新增了一个JDBC类型的数据源。

Step 2:添加View

点击View界面右上角“+”,出现图6界面。【View是 Davinci 中非常重要的概念,所有的 SQL 逻辑都需要在这里创建,所有在图表上展示的数据都是通过这里的 SQL 获取,可视化建模和团队数据权限控制也在这里进行。(引自Davinci用户手册)】


(图6)

点击图6左上角的“选择一个Source”,选择上一步中新增的“growthSource”数据源,接着就是写SQL语句了,求同比与环比增长率的SQL语句分别如代码块7、代码块8所示。

<span style="font-family: 黑体, SimHei;">select g1.year,g1.month, g1.box_office_mln, g1.last_year_month_box_office_mln, round((g1.box_office_mln - g1.last_year_month_box_office_mln)/g1.last_year_month_box_office_mln * 100.0, 2) asbox_office_mln_year_growth, g1.advertising_revenue_mln, g1.last_year_month_advertising_revenue_mln, round((g1.advertising_revenue_mln - g1.last_year_month_advertising_revenue_mln)/g1.last_year_month_advertising_revenue_mln * 100.0, 2) as advertising_revenue_mln_year_growth, g1.screening_ths, g1.last_year_month_screening_ths, round((g1.screening_ths - g1.last_year_month_screening_ths)/g1.last_year_month_screening_ths * 100.0, 2) asscreening_ths_year_growth, g1.audience_mln, g1.last_year_month_audience_mln, round((g1.audience_mln - g1.last_year_month_audience_mln)/g1.last_year_month_audience_mln * 100.0, 2) as audience_mln_year_growth from (select g.year, g.month, g.box_office_mln, lead(box_office_mln) over(partition by g.month order by g.year desc) aslast_year_month_box_office_mln, g.advertising_revenue_mln, lead(advertising_revenue_mln) over(partition by g.month order by g.year desc) as last_year_month_advertising_revenue_mln, g.screening_ths, lead(screening_ths) over(partition by g.month order by g.year desc) aslast_year_month_screening_ths, g.audience_mln, lead(audience_mln) over(partition by g.month order by g.year desc) as last_year_month_audience_mln from GrowthRate_SQL g order by g.month, g.year desc) g1;<br></span>

(代码块7)

<span style="font-family: 黑体, SimHei;">select g1.year,g1.month , g1.box_office_mln, g1.last_month_box_office_mln, round((g1.box_office_mln - g1.last_month_box_office_mln)/g1.last_month_box_office_mln * 100.0, 2) as box_office_mln_month_growth, g1.advertising_revenue_mln, g1.last_month_advertising_revenue_mln, round((g1.advertising_revenue_mln - g1.last_month_advertising_revenue_mln)/g1.last_month_advertising_revenue_mln * 100.0, 2) asadvertising_revenue_mln_month_growth, g1.screening_ths, g1.last_month_screening_ths, round((g1.screening_ths - g1.last_month_screening_ths)/g1.last_month_screening_ths * 100.0, 2) as screening_ths_month_growth, g1.audience_mln, g1.last_month_audience_mln, round((g1.audience_mln - g1.last_month_audience_mln)/g1.last_month_audience_mln * 100.0, 2) asaudience_mln_month_growth from (select g.year, g.month, g.box_office_mln, lead(box_office_mln) over(partition by g.year order by g.month desc) as last_month_box_office_mln, g.advertising_revenue_mln, lead(advertising_revenue_mln) over(partition by g.year order byg.month desc) as last_month_advertising_revenue_mln, g.screening_ths, lead(screening_ths) over(partition by g.year order by g.month desc) as last_month_screening_ths, g.audience_mln, lead(audience_mln) over(partition by g.year order by g.month desc) as last_month_audience_mln from GrowthRate_SQL g order by g.year, g.month) g1;<br></span>

(代码块8)

注:这里小编增加了两个“View”,分别是yearGrowth和monthGrowth。另外,为了方便计算,在写SQL时,四列主数据的后面生成了一列新数据,用来表示去年同月或同年上月的数据。

点击右下角“Execute”执行SQL语句,yearGrowth和monthGrowth里面的数据分别发生如下变化:


(图9)


(图10)

点击“Model”进行可视化建模,也就是数据中,哪几项用作维度,哪几项用作指标。更改完毕后,点击“保存”。在这两个View中,小编仅用年、月作为维度,其余都作为指标。

Step 3:制作Widget

可视化组件Widget是 Davinci 中功能最强大也最复杂的部分。同一个数据视图可以被多个可视组件使用,并用不同的图形展现。

在展示同比环比数据方面,我们一般会用柱状图或者折线图来表示,而在Davinci所支持的透视驱动和图表驱动里,都有柱状图和折线图。它们具体有什么区别呢?让我们在实例中感受一下吧~

注:想了解透视驱动和图表驱动?请参考Davinci用户手册:

https://edp963.github.io/davinci/widget_guide.html

点击Widget界面右上角“+”,选择一个View。选择完毕后,出现图11所示界面。


(图11)

其中,分类型字段对应View中设置的是维度的字段,数值型字段对应指标字段。当鼠标悬停在图形图标上,系统提示图形的配置要求,满足条件生成图形。

例如,小编想要了解一下2017年下半年各月票房的环比增长率趋势,用透视驱动中的柱状图表示。在这个需求中,简简单单拖拽几个字段就能配制出小编想要的图表。

选择“monthGrowth”这个View,将鼠标放在柱状图图标上,我们会发现要做这个柱状图会需要“0到多个维度”及“1到多个指标”。既然小编想看的是各月环比增长率,那维度这里我们就需要放上“month”字段(点击字段下拉菜单可以排序),指标则是票房环比增长率字段。

接下来我们就需要用到“筛选”一项,在小编的原始数据中,年份里包括2017和2018年,月份里有12个月。这里小编的要求是“2017年下半年”,因此需要将“year”和“month”字段都拖到筛选栏里,并且按照自己需求配置筛选。这几项配置完以后,出现了如图12所示界面:


(图12)

如果觉得单单只看图形,不够清晰明了,我们还可以将票房环比数据拖进标签栏,最终如图13所示:


(图13)

当然,大家也可以根据自己的喜好配置柱状图颜色、标题颜色及大小以及坐标轴颜色等(图14)。


(图14)

点击右上角“保存”,小编就成功制作了一个Widget。当然,这个Widget也可以用折线图来表示(图15),完全看个人需求~


(图15)

再例如,小编想试试用图表驱动里的折线图来展示一下2018年各月广告收入的同比增长率。这时候就要选择“yearGrowth”这个View了。然后将鼠标放在图表驱动的折线图图标上,我们会发现要做这个折线图需要“1个维度”及“1到多个指标”。

同样,将“month”字段拖入维度栏,“广告收入同比增长率”字段拖入指标栏。

Hmmmmm,就完成了。(图16)

(图16)

是不是过于简单了?

但是大家有没有发现一个问题:在这个数据配置栏里并没有“标签栏”,但是折线图中依然有数字。

原来这里的标签设置在样式配置中。

勾选样式配置中的“显示标签”,数字就出现在了折线图中(图17)。


(图17)

且慢!小编似乎发现了折线图可以变换面貌。点击了一下,发现果然平滑的折线图更符合小编心意。于是最终的“2018年各月广告收入同比增长率”折线图制作完成!(图18)


(图18)

最后例如,小编想看一下2018年各月场次的增减与各月广告收入的多少有没有关系。透视驱动和图表驱动里的柱状图和折线图都可以表示,小编暂且选择透视驱动里的折线图。

同样还是将需求所需字段拖入维度栏和指标栏 — “month”拖入维度栏,“广告收入”和“场次”拖入指标栏,把“year”拖入筛选栏,选择出2018年。完成!(图19)


(图19)

值得一提的是,在这里我们还可以按照自己喜好变换指标栏中的图形。(图20)


(图20)

于是,小编就这样靠着拖拉拽完成了很多Widget的制作。

三、Display

最终,我们来到了展示界面。在展示界面,分别有Dashboard和Display两种展示方式。Dashboard里面有很多更为高级的功能,比如联动关系配置和钻取设置。

然而,肤浅的小编暂时被Display展示吸引住了,所有兴趣都挂在了Display上面,因此,本文中小编只介绍Display展示,Dashboard功能之后再做详细介绍。

下面我们来介绍一下Davinci的Display展示功能。

其实也没有什么介绍的,直接上图吧!


(图21 简约风)


(图22 漫画风)


(图23 科技风)

如图所示,在Display的展示中,我们可以自己更改背景颜色或上传背景图片。设置好背景之后,点击左上角的“Widgets”图标,上传自己想展示的图表,排列成自己喜欢的形状,风格任君选择,一个个大屏就这样制作完成!

以上便是小编用Davinci展示同比环比的过程。由于数据是自己编的,难免会有不符合实际之处,敬请大家谅解。

另外,Davinci一直在不断的成长中。未来,我们还是支持在Davinci Widget中直接计算出同比环比增长率这项功能,还请大家耐心等待,继续支持。

因为你们的支持,是我们不断前进的动力!

本文Display设计方面很大一部分是借鉴了Davinci用户做出来的大屏,当然这里只copy到一点皮毛,要学习到大神所制Display的精髓还有很长的路要走。还请各位大神能不吝赐教,多多放上自己用Davinci制作出来的精美Display或者形成教程小文,让大家更多的学习精美大屏制作方法~

作者:李玲 王小燕

来源:宜信技术学院

原文地址:https://blog.51cto.com/14159827/2386274

时间: 2024-10-07 12:31:37

开源|Davinci用户体验:你离数据可视精美大屏只差一个Davinci!的相关文章

BI大数据智能可视化大屏分析系统建设软件开发

要建设企业级大数据可视化分析系统,需要构建企业统一的数据库体系或者直接将已有数据库对接.进行数据建模,为数据分析可视化呈现奠定基础.通过数据分析管理系统,有了数据基础,就可以构建BI大数据智能可视化大屏分析,满足企业的业务需求,提升数据价值. BI大数据智能可视化大屏分析系统建设软件开发的技术实现: 1.Hadoop:使用 hadoop作为系统的基础框架,对数据进行分布式的存储和分析.HDFS是 hadoop提供的分布式存储系统,它对体积巨大的数据切分成多个小块存储的不同的节点,每个块又做了多个

学会这一招,小白也能使用数据可视化BI软件创建医院数据实时展示大屏

灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件. 本文以医院数据实时展示大屏为例为大家演示如何在软件提供的模板基础上修改大屏. 首先我们点击我的项目页面上的新建大屏. 然后在模板中心里面选择医院数据实时展示大屏. 选中这个大屏之后,将鼠标移动到大屏上回出现一个提示按钮,提示大家是否立即使用此大屏,点击“立即使用”按钮就可以操作此大屏. 然后我们可以在这个界面上进行操作,页面上不同工

hibernate查询数据表char类型字段只返回一个字符

在oracle或sqlServer下会遇到,查询数据表字段类型为char,如果使用Hibernate原生SQL去执行查询,往往只会返回 一个字符.原因是char在java中只有两个字节. 解决方法 1.改成 select cast(列 as varchar2(列大小)) from 表;或者改为 select trim(列) from 表 2.指定列返回的类型. SQLQuery query = session.createSQLQuery(); query.addScalar(columnAli

CDN高级技术专家周哲: 深度剖析短视频分发过程中的用户体验优化技术点

2018深圳云栖大会已经圆满落幕,在飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储和分发的角度介绍整体方案,并且重点讲解短视频加速的注意事项和用户体验优化要点. 讲解从三个部分展开:短视频应用场景,阿里云短视频解决方案,阿里云对短视频用户体验优化的相关优化. 短视频应用场景 短视频比图片和文字包含更多的信息,在移动互联网普及的今天,短视频应用场景非常广泛. 一. 社群分享场景用户可以录制视频

CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点

深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储和分发的角度介绍整体方案,并且重点讲解短视频加速的注意事项和用户体验优化要点. 讲解从三个部分展开:短视频应用场景.阿里云短视频解决方案.阿里云对短视频用户体验的相关优化. 短视频应用场景 短视频比图片和文字包含更多的信息,在移动互联网普及的今天,短视频应用场景非常广泛. 一. 社群分享场景 用户可以录制视频

周鸿祎:需格外注意的五点用户体验

技术人员出身的产品经理非常有潜力,因为他懂技术,跟技术人员能更好的挑选技术方案.但我看到很多技术人员在做产品中犯的一个共同错误,太想要把自己的技术展现给用户,把先进的技术概念给用户. 这就是忘了从用户角度出发,用户到今天,特别是体验时代,什么叫体验时代?在电脑还是即刻时代的时候,电脑越复杂越好,能够输入复杂的指令,但是当一个产业,比如今天苹果都成了街机,电脑已经成了标配情况下,电脑从专家时代进入到大众时代,这时候体验就变得更加重要,用户甚至都不知道苹果用了什么CPU,很多拿苹果的白富美.高富帅不

Windows Server 2012 R2超级虚拟化之二 增强的用户体验

   WindowsServer 2012 R2超级虚拟化之二 增强的用户体验     在Windows Server2012 R2的Hyper-V中出现了一个新功能增强的会话模式,这个功能将虚拟机连接会话的本地资源重定向.当你与虚拟机进行交互时,它提供的功能是类似的远程桌面连接,提供增强的交互式会话体验.在以前版本的Hyper-V的虚拟机连接重定向到虚拟机的屏幕,键盘和鼠标的复制功能有限,为了获得额外的重定向能力,可以通过远程桌面连接到虚拟机,但是这需要一个虚拟机的网络路径.使用虚拟机连接时,

如何做大屏数据可视化设计?

文章结构及思维导图: 一.基础概念 1. 什么是数据可视化 把相对复杂.抽象的数据通过可视的方式以人们更易理解的形式展示出来的一系列手段叫做数据可视化,数据可视化是为了更形象地表达数据内在的信息和规律,促进数据信息的传播和应用. 在当前新技术支持下,数据可视化除了"可视",还可有可交流.可互动的特点.数据可视化的本质是数据空间到图形空间的映射,是抽象数据的具象表达. 数据可视化作品<launchit> 作者:Shane Mielke 作者写了本书,地图上显示了世界各地读者的

大数据可视化大屏设计经验,教给你!

 前言    大数据产业正在用一个超乎我们想象的速度蓬勃发展,大数据时代的来临,越来越多的公司开始意识到数据资源的管理和运用,大数据可视化大屏展示被更多的企业青睐,身为UI设计师的我们,也要紧跟时代的步伐学习这方面的设计. 今天要跟大家分享我一年多设计大数据可视化大屏的经验和观点,下面从UI设计.交互设计.动效设计三个方面来分享.  UI设计   设计大屏一样要谨记要以展示数据为核心,在任何炫酷屌炸天表现都要建立在不影响数据的有效展示上!   下图是天猫可视化大屏设计,图中屌炸天的3D地球围绕粒