永洪社区

标题: 中级数据分析师认证课程 脚本场景2-常用脚本案例 [打印本页]

作者: 天问台    时间: 2022-6-12 22:49
标题: 中级数据分析师认证课程 脚本场景2-常用脚本案例
本帖最后由 天问台 于 2022-6-12 22:53 编辑

课程内容

1.  脚本的基本介绍
2. 10个常用脚本案例的讲解



脚本执行顺序
https://www.yonghongtech.com/help/Z-Suite/9.4/ch/scriptexecuteorder.html

报告上脚本的顺序大概如下:
•执行“装载时运行”的脚本。
•执行“变化时运行”的脚本。
• 执行所有组件级脚本。
“装载时运行”仅在首次加载报告时执行一次。它可用于初始化变量和定义参数。报告有任何变化时,“变化时运行”都会重新执行。每当特定组件由于用户操作(在组件本身或相关组件上)而刷新时,组件上的脚本都会重新执行。因为所有组件上的脚本执行顺序是不确定的,所以应该避免从一个组件的脚本上设置另一个组件的属性。
报告打开时,脚本、参数、数据的整体顺序如下:
•“装载时运行”的脚本,是最先执行的。此脚本定义在报告上。
•通过输入框输入的参数。
•所有组件的查询数据。
•“变化时运行”的脚本。
•组件上的脚本。
报告变化时:
•变化时运行的脚本。
•组件上的脚本。

场景1topN场景
如果只是单向topN的场景,用产品默认的绑定参数即可
如果需要通过topN能自由选择看到最高的TopN(正数)和最低的topN(负数),还是得用脚本的形式

// 大小写敏感
var ranks1 = param["RANK"];
var col = 产品名称销量_总和.binding.getXCol(0);
if(ranks1>0){
col.sortType = 6;
}else{
col.sortType = 5;
}
col.sortRank = Math.abs(parseInt(ranks1));
产品名称销量_总和.binding.setXCol(0,col);

场景2-7
场景2-显示隐藏:可以通过参数选择的方式来设置组件/组合的可见性,从而大幅丰富报表内容
if(param['下拉参数1'] == '利润趋势图'){
图表1.visible =true;//图表1可见
1.visible =false; ;//1不可见
}
else{
图表1.visible =false;
1.visible =true;
}

场景3-批量提交:
// 新版本中可以直接选择提交按钮的类型成批量提交
// 老版本中需要设置提交按钮的组件脚本
step1:在报告设置中勾选『批量提交』
step2:在提交按钮的设置-脚本-提交时运行中,添加refreshData()

场景4-参数使用和传递
// 超链接中的传参过滤:确保主界面和子界面之间传递参数的时候的参数名称和类型一致
// URL中传参过滤:报告URL&参数名1=参数值&参数名2=参数值!a!参数值
// 报告中的参数传递给数据集中

场景5-自由式表格中的格间计算
// 参考格间计算的相关语法说明,能定位单元格的数据进行综合的计算

场景6-标签和提示信息中的更改,比方说
市场分布:{col["市场分布"]}
销售额:{col["销售额"],number,#,###0.0万元}
占比:{col['占比'],number,0.00%}

场景7-计算列的使用场景

场景8:参数/过滤的获取值和赋值

// 日期过滤的场景
// 获取日期过滤的值,并规范化成 yyyy-MM-dd的样式
if(日期过滤1.firstDates!=null)
{
    var a = 日期过滤1.firstDates[0];
    //日期过滤组件用脚本获取值会少一个月,所以需要dateAdd一个月回去
    var b = formatDate(dateAdd(parseDate(substring(a,1,a.length()),'yyyy-MM-dd'),"month",1),'yyyy-MM-dd');
}
debug(a);
debug(b);

// 设置日期过滤的值
// 设置日期成2022-04-04的话,参考以下写法,月份减一
日期过滤1.firstDates=["t2022-03-04"];


// 参数类型的组件赋值和获取值
市场分布.setSelectedObjects(["东部市场", "南部市场"], STRING);
debug(市场分布.getSelectedObjects()[0])
debug(市场分布.getSelectedObjects()[1])

// 在筛选器比较多的情况下,一般还会新增两个按钮,『提交』、『清空』
提交:即实现批量提交的功能
清空:将选择的条件进行清空,类似于以下写法
列表过滤1.setSelectedObjects(null)
列表参数1.setSelectedObjects([],STRING)

// 参数值的引用
// 文本/富文本中:?{参数名}
// 计算列/脚本中:param["参数名"]


场景9-10

// 场景9:获取组件的值

var data=getViewData("表格1");// 从表格1中获取数据
var b=data.get(2,1); // 获取第3行,第2列的数据 ; 索引index0开始计算,表格的标题占用一个空间
debug(b) // 返回422523

// 场景10-易错场景:除数为0
// 在计算列中往往会有除法的应用,当除数为0的时候,会报错;可以在计算列中添加判断来避免
if sum(col['销售额']) != 0 thensum(col['利润'])/sum(col['销售额']) else 0 end

// 更多场景可以参考帮助文档、论坛来进行学习














(, 下载次数: 477)