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

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

  • 解答问题超厉害

    经常帮助其他会员答疑

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

    yhdata_fW9WQbbb青铜一 显示全部楼层 发表于 3 天前 |阅读模式 打印 上一主题 下一主题
           当前的报表组件添加过滤条件时,必须指定一个数据集的字段,如果对于日期类型的字段有多个时,要想基于这些日期字段实现过滤,则必须分开设置过滤条件,这样报表的查询条件设置就会比较臃肿,比如数据集字段有日期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的起止日期范围内过滤显示结果等等。这个需求不知道是否可以通过脚本实现?或是有其它更好的实现方案?

    最佳答案

    永洪vip
    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 显示全部楼层 发表于 3 天前
    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 显示全部楼层 发表于 3 天前
    脚本不行哦,不建议使用脚本,另外   则报表组件按日期1在A1-A2的起止日期范围内过滤显示结果
    报表组件同时绑定了4个日期字段吗。

    回复

    使用道具 举报

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

    使用道具 举报

    yhdata_lyaa 显示全部楼层 发表于 3 天前
    使用参数列实现动态绑定
    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青铜一 显示全部楼层 发表于 3 天前
    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青铜一 显示全部楼层 发表于 3 天前
    美滋滋 发表于 2024-6-25 13:23
    方法1:
    根据下拉参数选择项,给参数组件设定值,或者直接自定义两个参数param['start'] ,param["end"] , ...

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

    使用道具 举报

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

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

    使用道具 举报

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

    • 官方微信

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

      扫码关注
    • 新浪微博

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

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

    会员等你来哦

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