找文章 / 找答案
  • 发帖数6
  • 粉丝0

此人很懒,什么也没有留下

  • 解答问题超厉害

    经常帮助其他会员答疑
精选问答 更多内容

[常用脚本] 如何通过脚本给报表组件添加过滤条件

yhdata_fW9WQbbb青铜二 显示全部楼层 发表于 2024-6-25 11:37:01 |阅读模式 打印 上一主题 下一主题
       当前的报表组件添加过滤条件时,必须指定一个数据集的字段,如果对于日期类型的字段有多个时,要想基于这些日期字段实现过滤,则必须分开设置过滤条件,这样报表的查询条件设置就会比较臃肿,比如数据集字段有日期1、日期2、日期3、日期4等四个字段,每个字段都要设置起止日期进行过滤,通过文本参数设置时,日期1需要设置两个文本参数A1/A2,A1代表起始日期,A2代表截止日期。同样的日期2也要设置两个文本参数B1/B2,分别代表日期2的起止日期,这样下来,4个日期字段就要添加8个文本参数,显得比较臃肿。       计划手工自定义一个下拉参数S,值有日期1、日期2、日期3、日期4等四个字段,再定义两个文本参数A1/A2,分别代表起止日期,如果用户在下拉参数中选择日期1,则报表组件按日期1在A1-A2的起止日期范围内过滤显示结果;如果用户在下拉参数中选择日期2,则报表组件按日期2在A1-A2的起止日期范围内过滤显示结果等等。这个需求不知道是否可以通过脚本实现?或是有其它更好的实现方案?

最佳答案

社区管理员
yanieye 关注Ta

2024-06-25 11:37:02

1. 新建一个计算列,根据“下拉参数S”的选中值, 这个计算列就返回对应的日期列,类似于 if param['下拉参数S' == '日期列1' then col['日期列1'] else if param['下拉参数S' == '日期列2' then col['日期列2'] else if param['下拉参数S' == '日期列3' then col['日期列3'] else col['日期列4'] end 2. 在这个计算列上定义过滤器,使用起始日期和结束日期的参数。 ...
查看完整内容
回复

使用道具 举报

精彩评论7

yanieye 显示全部楼层 发表于 2024-6-25 11:37:02
1. 新建一个计算列,根据“下拉参数S”的选中值, 这个计算列就返回对应的日期列,类似于
   if param['下拉参数S' == '日期列1' then col['日期列1'] else if param['下拉参数S' == '日期列2' then col['日期列2'] else if param['下拉参数S' == '日期列3' then col['日期列3'] else col['日期列4'] end
2. 在这个计算列上定义过滤器,使用起始日期和结束日期的参数。
回复

使用道具 举报

yhdata_lyaa 显示全部楼层 发表于 2024-6-25 13:19:48
脚本不行哦,不建议使用脚本,另外   则报表组件按日期1在A1-A2的起止日期范围内过滤显示结果
报表组件同时绑定了4个日期字段吗。

回复

使用道具 举报

美滋滋白银二 显示全部楼层 发表于 2024-6-25 13:23:41
方法1:
根据下拉参数选择项,给参数组件设定值,或者直接自定义两个参数param['start'] ,param["end"] ,给这两个参数设定值。
然后其他组件的过滤条件用这两个参数进行过滤就可以了。
方法2:
用参数数据集,直接将参数传递至数据集的抽取SQL中。
回复

使用道具 举报

yhdata_lyaa 显示全部楼层 发表于 2024-6-25 13:24:01
使用参数列实现动态绑定
https://www.yonghongtech.com/rea ... 2%E6%95%B0%E5%88%97
下拉参数1  --- 新建参数列选择下拉列表参数1,绑定四个时间字段。
下拉参数 选择对应的时间字段,图表组件绑定参数列。
图表组件设置两个文本参数A1,A2
同时 在组件上 设置4个过滤条件(4个条件之间选择为 或)
时间字段1 介于 文本参数A1/A2
时间字段2 介于 文本参数A1/A2
时间字段3 介于 文本参数A1/A2
时间字段4 介于 文本参数A1/A2
回复

使用道具 举报

yhdata_fW9WQbbb青铜二 显示全部楼层 发表于 2024-6-25 18:40:56
yhdata_lyaa 发表于 2024-6-25 13:24
使用参数列实现动态绑定
https://www.yonghongtech.com/real-help/Z-Suite/10.2/ch/dataprocess_dynamicbin ...

这个方法只能动态设置显示日期1、日期2、日期3或日期4等,而不能实现基于日期1或日期2等实现过滤数据。4个日期按【或】的过滤条件添加到报表组件进行过滤,实际效果是按日期1到日期4这4个条件的最大集合显示结果,与设想不符。实际希望的是,如果用户选择日期1(日期1到日期4只能选择一种),则基于日期1在A1/A2的起止日期过滤显示结果;如果用户选择日期2,则基于日期2在A1/A2的起止日期过滤显示结果。
回复

使用道具 举报

yhdata_fW9WQbbb青铜二 显示全部楼层 发表于 2024-6-25 18:58:43
美滋滋 发表于 2024-6-25 13:23
方法1:
根据下拉参数选择项,给参数组件设定值,或者直接自定义两个参数param['start'] ,param["end"] , ...

这两个方法没怎么看明白,可以具体说说看吗?我要的效果是基于用户选择的日期类型(日期1到日期4只能选择一个),和文本参数A1/A2的起止日期实际报表数据的过滤,也就是数据过滤条件是动态变化的。
回复

使用道具 举报

yhdata_fW9WQbbb青铜二 显示全部楼层 发表于 2024-6-26 10:16:57
yanieye 发表于 2024-6-25 11:37
1. 新建一个计算列,根据“下拉参数S”的选中值, 这个计算列就返回对应的日期列,类似于
   if param['下 ...

经验证新建计算列这个方法可行!不过使用脚本的表达式运行效率很慢!对于百万量级的数据集,执行非常慢!我改成sql表达式效果好很多,不管怎样,非常感谢大佬的思路
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

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

    扫码关注
  • 新浪微博

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

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

会员等你来哦

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