找文章 / 找答案
分享到

干货丨脚本实现动态切换组件绑定的字段

资讯 2022-9-5 13:57 2085人浏览 1人回复
摘要

大家在使用永洪BI做数据可视化的分析时,难免有些小伙伴会有对组件绑定的字段在某些特定的条件下进行动态替换的需求,要满足这个需求有时我们会用到参数列的形式来实现列的动态绑定,但是在使用参数列来实现动态绑定 ...

大家在使用永洪BI做数据可视化的分析时,难免有些小伙伴会有对组件绑定的字段在某些特定的条件下进行动态替换的需求,要满足这个需求有时我们会用到参数列的形式来实现列的动态绑定,但是在使用参数列来实现动态绑定的情况下会有一定的局限性,比如不能很好的调整聚合的类型以及需要替换的字段的位置等,所以下面我们要介绍的内容就是如何使用脚本的方式来实现控制组件中绑定的字段的动态切换。

首先说明下我们的需求:下图中有三个组件,分别是柱图、表格和下拉参数组件。其中柱图绑定了省份和总成本两个字段,表格绑定了产品种类、产品名称和总成本三个字段,下拉参数中有三个值可供选择,现在我们需要通过选择下拉参数中相应的值来达到动态替换掉柱图和表格组件中绑定的总成本这个字段。


下面为选择相应值后的效果图:



下面就为大家详细介绍下具体的实现步骤:


01


从右侧组件库中拖拽三个组件到画布中(柱图、表格、下拉参数),然后给柱图和表格组件绑定初始所需的字段(这里以柱图展示为例)



02


在下拉参数的绑定数据——>自定义数据——>编辑数据中键入三个值(利润、销售额、销量)




03


在画布的上方工具栏中找到报告-脚本,进入之后在变化中运行编辑处编辑相应的处理脚本,相应处理脚本及操作如下:


var bcol = new BCol("总成本", INTEGER, false);

if(param["度量切换"] == "利润"){

bcol = new BCol("利润", INTEGER, false);

}

if(param["度量切换"] == "销售额"){

var bcol = new BCol("销售额", INTEGER, false);

}

if(param["度量切换"] == "销量"){

var bcol = new BCol("销量", INTEGER, false);

}

var qcol = new ChartMeasureCol(SUM, bcol, null);

图表1.binding.setYCol(0, qcol);

图表2.binding.setCol(2, qcol);



该脚本中的逻辑是:判断度量切换参数的值,若为利润,则使用BCol来引用利润字段,其他两个值同理,然后创建一个度量字段ChartMeasureCol,引用刚才的BCol,设置聚合类型为总和SUM,然后使用setYCol或者setCol函数引用度量字段来替换掉对应位置的字段,从而实现动态替换组件绑定的字段。


下面是对于脚本中一些对象的描述:

01

BCol

概述:创建一个底层字段,包含名称、字段类型、是否是维度字段三个属性。如果字段存在别名的话则需要添加的属性的格式应该是:名称、别名、字段类型、是否是维度字段。

语法:new BCol(String name, int type, boolean dim),new  BCol(String name,  String view, int type, boolean dim)

name,view,type,dim分别是其属性,表示名称,别名,数据类型,是否是维度。


➢例如:

•var b=new BCol("City", STRING, true);

•var b=new BCol(times," 感染次数 ", LONG, false); //有别名的情况

•还可写成 var b=new BCol("City", 2, true);

•可通过b.name,b.view,b.type,b.dim的形式来引用成员的属性。


02

ChartMeasureCol

概述:创建图表所用的度量字段。

语法:new ChartMeasureCol(String total, QCol col, QCol col2) //没有 col2 时设置为 null

total:统计函数。

col:是需要做统计函数的度量字段。

col2:做统计时需要的第二字段,对于部分函数需要。


➢例如:

计算数据的权重之和函数 SumWT(col['sales'], col['profit']) ;计算数据的四分位点Quartile(col['sales'], 4) ;

col['profit']);

axisOpt:该度量数据段对应的轴属性;  // new AxisOpt();


➢例如:

var bcol = new BCol("price", DOUBLE, false);

var bcol1 = new BCol("profit", DOUBLE, false);

var a = new ChartMeasureCol(SUM, bcol, null);

var b = new ChartMeasureCol(SumWT, bcol, bcol1);

var c = new ChartMeasureCol(Quartile, bcol, 4)

对于其他字段对象的描述可见下面链接:

https://www.yonghongtech.com/help/Z-Suite/9.4/ch/scriptobjects.html



评论
2085人参与,1条评论

精彩评论

查看全部评论>>

32 文章910 人气
数据分析
热门问答
  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部