本手册以财务模型为例,说明如何用财务模型数据源创建图表。
搭建图表前需做好如下准备工作:
注册UX、财务模型等组件;
创建好维度、财务模型并录入好数据;(如有必要需提前做好相关计算)
创建入口:元素管理界面,点击新建->UX
添加数据源:切换到数据源标签页,点击添加按钮,弹出添加数据源弹窗,选择数据源类型,我们以财务模型数据源为例
点击【下一步】,选择财务模型元素,【确定】
查询配置:点击查询配置编辑图标,分配维度到背景、行列,配置维度成员或表达式,【确定】,至此一个简单的财务模型数据源就配置好了
切换到控件栏标签页,将图表控件拖拽至画布,弹出数据源弹窗,选择已有数据源进行关联,【确定】
图表属性配置中,选择图表类型(默认为柱状图),选择轴Period,选择值data
保存UX元素:点击【保存】,弹出弹窗,输入编码、描述,选择保存路径,点击【确定】,至此一个简单的柱状图就配置好了
此时我们发现上述柱状图月份乱序显示,实际场景中我们需要按照月份进行排序。 配置如下:进入数据源,点击数据处理与转换模块的【编辑】按钮,弹出弹窗,排序方式选择“按指定列排序”,维度选择Period,【确定】,保存元素,此时图表轴就会按照Period维度成员的顺序进行排列。
我们还想看每个月的数据由哪些科目成员组成,此时可以通过颜色进行区分。 配置如下:图表属性配置界面,颜色选择Account,设置成“堆叠”展示,还可选择不同颜色模板。
若要对同月份的不同科目成员的数据进行对比,可将颜色字段设置为“分组”展示
通过选择不同的年份、组织、场景实现人力成本实际数与预测数对比的动态查询。
根据业务场景,我们希望使用的时候能够根据用户选择的条件(筛选器)或输入的值动态查询图表,那么不管是选择的一个选项还是输入的内容就需要作为参数传给财务模型,但因为是动态的无法在财务模型数据源中写死一个固定的值,因此我们需要通过表达式的方式动态的获取用户选择的值,而用户选择的值在UX中一般可以理解为就是控件的value,所以就变成了我们需要通过表达式让传参来源是作为条件控件的value。
1、在控件栏的自定义组件中拖入4个“维度选择器”到画布中,分别关联Year、Scenario、Org维度,并配置好可选范围、默认值。
2、在数据源的查询配置中直接引用动态的控件值,其中deep_dimension_VXzz为Year的维度选择器编码
也可以通过表达式配置$components.object_select_NY4A.value的形式,其中object_select_NY4A为Org维度选择器编码
表达式相关说明:
以year{$components.deep_dimension_VXzz.value}
为例,其中:
$components.deep_dimension_VXzz.value
是获取维度成员值的逻辑,是一个js表达式,用于获取维度选择器控件的值,通过该表达式可以动态获取到用户输入的值,具体解释可参考此文档。DeepUX操作手册
3、拖拽图表控件至画布中,选择配置好的财务模型数据源作图,此图表即可根据筛选器切换动态查询。
预算编制场景下,所有用户对当前年份统一进行预算编制,并对当前年份的预算结构总量进行分析,不同部门用户可针对各自部门进行相关数据查看。
根据上述业务场景,我们得知需要配置变量元素,设置一个Year全局变量,一个Entity用户变量,预算结构总量分析的ux界面可将维度选择器的默认值设置为变量值。
1、配置变量元素:添加全局变量Year,值设置为2023年;添加用户变量Entity,默认值设置为EGroup-临港集团,自定义值设置为用户所在部门,如EC01-集团总部。
2、ux界面变量tab中选择变量元素,添加需要用到的页面变量Year,Entity
3、维度选择器Year默认值可配置维度表达式UX变量Year,维度选择器Entity默认值可选择维度表达式ux变量Entity
使用效果如下:
注:此处变量值字段类型仅支持维度。
图表之间联动实际是为了实现默认值,有两种方式:一种是通过控件做,即通过控件值修改,将点击事件获取到的值赋值给目标控件,详情见场景一;另一种是直接通过在财务模型数据源中配置点击事件表达式实现,详情见场景二。
点击不同月份、场景的人力成本对比图表可以查看不同月份及场景的薪资项明细。
根据上述业务场景,我们得知需要配置两个图表,其中一个图表的查数条件来源于另外一个图表。通过点击人力成本对比的图表把获取到数据传给明细图表的数据源,从而实现了两个图表相互联动。
1、配置两个图表,一个饼图(薪资项明细图表)一个柱状图(人力成本对比图表)。 2、在薪资项明细图表的数据源行列中配置表达式,如下图所示:
** 说明:**
Period 切换成表达式以获取人力成本对比图表点击抛出来的数据,写法为:$components.chart_BISI.clickItem?.["period"] || 'TotalPeriod'
,Scenario同理。
● 其中chart_BISI为人力成本对比柱状图的图表编码;
● period 为具体需要获取的维度成员数据;
● clickItem为图表特有的变量,用于获取图表点击事件触发后的数据;
● TotalPeriod为无点击事件时的默认值。
另外,需注意的是明细图表的数据源需勾选上“参数变化时自动执行”,否则图表不会自行查数。
点击不同的销售实体的销售收入图表可以按不同的工厂查看不同产品销售明细。
除了上述直接通过筛选器进行筛选外,当点击某个图的部分图形,例如某根柱子、某个点时,也希望看到页面的数据根据所点击的内容被筛选。 类似地,对于筛选器与图表,我们通过将筛选器的值配在图表数据源的查询条件中;对于图表,我们可以通过表达式:$components.xxx.clickItem.Entity 来获取其点击的值,并同样配置在数据源查询条件中即可。
但往往存在该被联动的图表数据源同时也受某个筛选器控制。即筛选器配置了 公司和产品;A图点击A产品,希望联动B图也展示A产品的内容。但此时若直接配置联动,则: 1)B图原来已配置了通过产品筛选器联动 2)若直接联动,则可能B图展示的内容与页面筛选器的不一致,造成歧义 3)图表的默认值无处可取
因此,在这种情况下,建议将所有需要用到的筛选条件放到顶端的筛选区域,点击图表的联动效果统一转换为修改筛选器的值,再通过筛选器联动图表。
1、配置两个图表,一个饼图(明细图表)一个柱形图(销售收入图表),同时配置一个“工厂”的控件(POV)作为明细图表数据的查询条件,配置过程参考前文,不再赘述; 2、在销售收入的图表的“点击数值单元格”事件,配置控件值修改的动作,如下图所示:
** 事件动作说明:**
点击数值单元格:即点击图表中的图触发的事件;
控件值修改:通过该动作可以修改控件的value;
目标控件:选择需要修改的控件,为了实现图表联动,我们这里需选择明细图表的POV控件“工厂”;
赋值为:即将目标控件的值修改成多少,这里需切换成表达式以获取销售收入图表点击数值单元格事件抛出来的数据,写法为:$components.chart_zGir.clickItem.Entity_s
● 其中Entity_s 为具体需要获取的维度成员数据;
● clickItem为图表特有的变量,用于获取图表点击事件触发后的数据;
另外,需注意的是明细图表的数据源需勾选上“参数变化时自动执行”,否则图表不会自行查数。
按费用性质划分,对同种费用性质不同部门的信息化支出进行对比分析。
根据上述场景,配置一个柱状图,轴为部门,值为信息化支出金额,数据按照费用性质进行过滤。
1、拖拽一个“费用性质”选择框至画布,信息化支出数据源为财务模型,Entity、Account放在行列上,其他维度放背景,Entity的ud1为费用性质,此时Entity配置表达式如下:
"AndFilter(Base(GLBMYSTB, 0), Attr(ud1, " + `"${$components.input_GH8U.value}"` + "))"
** 表达式说明:**
字符串拼接成维度成员表达式,传参结果为AndFilter(Base(GLBMYSTB,0),Attr(ud1,”M”));
用+进行拼接;
$components.input_GH8U.value,取选择框“费用性质”的值;
2、拖拽图表控件至画布,配置柱状图,轴:Entity,值:data,坐标轴转置。
注意:数据源需勾选“参数变化时自动执行”,使用时切换费用性质控件值时,图表会跟随联动。
人力成本对比的场景取两个筛选器的值:基线场景、对比场景,财务模型数据源查询配置可将两个控件的值做拼接处理(中间用+拼接),两个成员中间用分号隔开,目的是与直接选择多个维度成员时传参格式保持一致,$components.comp_sce.value + ";" + $components.base_sce.value
通过不同的视角查看下半年资金计划,支持多视角查看。
根据业务场景,我们希望使用的时候能够根据用户选择的条件(筛选器多选)动态查询图表,需要将选择条件作为参数传给财务模型,而用户选择的值在UX中一般可以理解为就是控件的value,所以就变成了我们需要通过表达式让传参来源是作为条件控件的value。
1、在控件栏的自定义组件中拖入一个“维度选择器”到画布中,关联Dataview维度,开启“允许多选”配置,并配置好可选范围、默认值。
2、在数据源的查询配置中直接引用动态的控件值,选择FX表达式 $components.deep_dimension_kybq.value?.join(';')
表达式相关说明:
其中deep_dimension_kybq为Dataview的维度选择器编码;
因为维度筛选器为多选(数组格式),故取控件值表达式后需要加上?.join(';')
,作用为将数组转换成由分号拼接的字符串。
3、拖拽图表控件至画布中,选择配置好的财务模型数据源作图,此时即可按照多视角对下半年资金计划进行查看。
项目做预实对比分析时,经常会用到组合图。接下来介绍两种常规的预实对比场景组合图:
一种配置柱形+散点组合图(通过柱子与竖线做预实对比)或者柱形组合图(通过空心与实心柱子做预实对比),此种方式比较直观的体现是否达到预测目标,详情见场景一;
一种配置折现组合图,此种方式能更好体现趋势的变化及对比,详情见场景二;
1、财务模型数据源查询配置中,将period、scenario分配到行列上
2、数据处理与转换将scenario列成员Actual-实际数、Forecast-预测数透视出来
3、图表类型选择组合图(柱状图+散点图)时,period做轴,柱状图中值为Actual实际数,形状为实心;散点图中值为Forecast预测数,形状为竖线。通过柱子和竖线更加直观清晰的体现实际数是否达到预测目标。
图表类型选择组合图(柱状图+柱状图)时,period做轴,柱状图1中值为Actual实际数,形状为实心;柱状图2中值为Forecast预测数,形状为空心。通过实心和空心柱子更加直观清晰的体现实际数是否达到预测目标。 注意:组合图受图形顺序控制,顺序错误会造成图形遮挡覆盖等现象。
1、财务模型数据源查询配置中,将period、scenario分配到行列上
2、图表配置时,图表类型选择组合图,添加多个折线图(折线图能更好体现变化趋势),共享轴为period,多个折线图的值均为scenario的成员,值均设置为主轴,可单独配置对应折线图的形状(样式:直线、平滑;线型:实线、虚线;数据点:实心、空心、无)
最终效果:
在数据源管理中,点击添加,在弹窗数据源类型中选择财务模型,点击确定生成数据源实例。
通过取数范围的配置可以调用财务模型的取数接口拿到相应的数据,支持UI与脚本模式
所谓脚本模式即调取财务模型取数接口时需传给财务模型的一段特定格式的脚本,财务模型通过解析该脚本中的维度筛选出数据返回给UX;
可配置固定值或表达式;
可以在此处配置按维度成员进行排序;
透视列:财务模型原生取到的为含data列的格式,通常需要进行透视处理。选择要透视的列以及需要用到的成员,会进行行转列的透视操作,便于后续的作图;
维度显示格式:可配置显示名称/描述;
合并字段:通常用于展示有效组合,将对值与描述均以”-“拼接。
总费用金额、占比分析时,需要对费用及占比两个数据进行展示,常规的data值无法满足此种场景,此时可通过对维度(如scenario)需要用到的成员进行透视处理。
此时数据标签中可以添加透视出来的多个成员,数据标签显示位置“居外”,我们的饼图即可同时展示出金额及占比两个值。
年度预算分析时,需对去年执行数以及今年预算数等进行对比分析,此场景下柱状图轴需要对年份及场景拼接。
1、首先财务模型数据源分配维度时,需配置多行列,行列1:年份=当前年份-1,场景=实际数;行列2:年份=当前年份,场景=年初预算;行列3:年份=当前年份,场景=年中预算。
2、数据处理与转换中,需要对Year和Scenario做合并处理,即合并字段选择Year、Scenario即可。
3、将图表控件拖拽到画布上,选择柱状图,轴下拉选择合并字段Year-Scenario,值为data,颜色Account(堆叠显示)。
在结构中会显示财务模型传参的数据结构,包括行列维度、财务模型存数的字段data;
参数变化时自动执行:勾选后系统会实时监听脚本模式中参数的变化,然后自动查询无需额外配置查数动作,建议勾选;例如,配置筛选器动态查询图表时,若勾选参数变化时自动执行,切换筛选器时,图表会自动查询切换后的数据;若不勾选,切换筛选器,图表不会根据切换后的数据进行查询展示。
任一参数为空值时不执行:勾选后,查询数据源数据时只要有一个参数为空(null/undefined/空字符),则不调用查数接口。解决接口入参必填时,多个参数从无到有变化,导致调用多次,并且出现接口抛错,建议勾选。
下方只对一些不太好理解的图表配置进行介绍说明,对于图表常规配置不再赘述。 排序方式:即图表渲染时数据的排序方式,可添加多个维度;
初始默认柱形图,可选择饼图、瀑布图、散点图等其他类型图表;
对于柱形图,轴选择需要分析的维度,有几个成员就会生成几根柱子,值选择data数据,选择完后即可渲染出图表;
经营性净现金流间接法:从净利润出发,通过调整不涉及现金的收入、费用以及营业外收支等项目,同时剔除投资活动和筹资活动对现金流量的影响,从而计算出经营活动产生的现金流量。此种场景,可通过瀑布图展示。
1、添加财务模型数据源,Year、Entity、Period、View等可取界面维度筛选器控件的值,FX表达式:$components.XXX.value,数据处理与转换-按指定列Account维度成员排序,勾选“参数变化时自动执行”和“任一参数为空值时不执行”
2、拖拽图表控件至画布,选择关联已有数据源,【确定】
3、图表类型选择“瀑布图”,选择轴Account,值data,可根据数据项配置颜色。
4、样式配置中根据实际情况配置对应样式属性,如标题、X轴旋转角度、Y轴单位计算格式等。选择瀑布图小计项:经营性实得现金流。
返回数据结构如下(_start、_end列忽略):
使用视图效果如下:
坐标轴转置: 勾选后轴会显示在Y轴上,值显示在X轴上;
工具提示: 悬停到图表上时显示的tooltips,可配置维度成员或data;
数据标签: 用于显示或标记数据值;
位置优化配置包括:超出时隐藏、重叠时隐藏、重叠时调整、不处理。
超出时隐藏效果:
重叠时隐藏效果:
重叠时调整效果:
不处理效果:
显示范围: 可自定义配置Y轴或X轴刻度的最大值、最小值以及每个刻度之间的间隔;
支持动态值配置: 坐标轴由于数据是动态的,需要按动态的比例配置最大最小值。最大值、最小值中增加表达式配置,随着用户输入的值不同,坐标轴动态改变。 默认显示范围效果:
自定义动态值配置:
($dataSources.data_QUERY8_Bz3V.data ?? []).reduce((max, obj) => obj?.['激励结果'] > max ? obj?.['激励结果'] : max, -Infinity) * 1.2
($dataSources.data_QUERY8_Bz3V.data ?? []).reduce((min, obj) => obj?.['激励结果'] < min ? obj?.['激励结果'] : min, Infinity) * 0.8
其中:
data_QUERY8_Bz3V为数据源编码;
激励结果为图表中值选择的字段;
1.2,0.8为想要显示的范围比例;
使用时按需求替换即可。
自定义动态值显示效果:
坐标轴最大最小值显示范围超出: 超出坐标轴的值会被强行压缩到坐标轴范围内。 未配置显示范围时效果如图:
配置了最大值/最小值,且存在超出配置范围的数据时,效果如下:
自动旋转刻度: 当轴刻度较多显示较拥挤时,我们可以勾选【自动旋转刻度】,此时刻度会旋转显示。
未勾选时效果:
勾选后效果:
自动缩略刻度: 当轴刻度较多显示较拥挤时,我们可以勾选【自动缩略刻度】,此时刻度会缩略显示。
未勾选时效果:
勾选后效果:
单位计算: 可对data的数据进行二次处理,例如单位计算设置为千,则data数据会除以1000后再渲染在图表中,此计算为纯前端计算, 不影响数据源的数据;
缩略轴: 当图表中数据量比较多,用户希望集中关注某个区域数据的时候,可拖动略轴的滑条进行查看;
小计项: 小计是瀑布图独有的功能,每个小计项是前面一系列柱子计算的结果,通过配置小计项可以实现一个图表放置多个瀑布图;
大小: 一般指图表中每个图的大小,可手动配置。在散点图中,大小也可以由data值决定(值越大,每一个圆点越大,反之越小);
共享轴: 组合图特有配置,即多个不同的图形公共的轴;
排序配置
2022和2023年计划标准成本与实际成本对比,然后按实际数从高到低排;
排序方式:嵌套;
排序目标:实际场景一般选配在轴上的文本列,此处为Year;
筛选依据:先选数据源里的列实际场景通常为颜色字段,此处为scenario,再选该列的成员Actual-实际数;
排序依据:data,可选降序、升序;
如图例,即要按实际数从大到小,排Year字段。
筛选配置
销售收入预实对比场景,我们可以按实际销售收入进行排序,筛选出销量前10的品类进行分析。 此时需要在图表数据配置中进行排序和筛选配置:
排序方式:按指定列;
排序依据:Actual,降序;
筛选依据:Actual;
筛选方式:前N项,10; 即按照实际数进行排序筛选,金额从大到小,筛选出销量前10的数据进行展示。
回到顶部
咨询热线