找文章 / 找答案
精选问答 更多内容

[可视化] 时间过滤问题

yhdata_GWxAKLq6铂金二 显示全部楼层 发表于 2022-7-2 09:06:12 |阅读模式 打印 上一主题 下一主题
1
已解决

【可视化】 时间过滤问题

3392 16
之前的方法是通过这样的方式控制时间,因为数据量较大,页面组件过滤打开页面较慢,所以通过这种方式直接在sql控制时间范围,现在这种下拉组件不满足于需求,更换了定制时间日期参数组件,但是这种我尝试了只能在页面过滤,有什么方法可以还是采用将数值传入sql的方法过滤页面展示时间范围。版本9.2.1
snipaste_20220702_090154.png
snipaste_20220702_090217.png

最佳答案

永洪tech-joey 青铜一 关注Ta

2022-07-02 09:06:13

找不到hive中字符串转日期的话,还可以有两种解决方式 1、SQL中反向写 where 1=1 and dates >= to_char(?{定制组件1_Start},'yyyy-mm-dd') and dates = ?{开始时间} and dates
查看完整内容
回复

使用道具 举报

精彩评论16

永洪tech-joey青铜一 显示全部楼层 发表于 2022-7-2 09:06:13
本帖最后由 永洪tech-joey 于 2022-7-2 11:24 编辑


找不到hive中字符串转日期的话,还可以有两种解决方式
1、SQL中反向写
where 1=1
<定制组件1_Start> and dates >= to_char(?{定制组件1_Start},'yyyy-mm-dd') </定制组件1_Start>
<定制组件1_End> and dates <= to_char(?{定制组件1_End},'yyyy-mm-dd')  </定制组件1_End>

2、在永洪报告的『变化时运行』运行脚本中做转义
param["开始时间"] = formatDate(param["定制组件1_Start"],"yyyy-MM-dd")
param["结束时间"]= formatDate(param["定制组件1_End"],"yyyy-MM-dd")

然后在SQL中
where 1=1
<开始时间> and dates >= ?{开始时间} </开始时间>
<结束时间> and dates <= ?{结束时间} </结束时间>

注:开始时间和结束时间为文本格式
回复

使用道具 举报

永洪tech-joey青铜一 显示全部楼层 发表于 2022-7-2 09:21:09
举一个小case,可以参考着来进行实操
1. 复制粘贴生成一个新的『咖啡中国市场销售数据_副本』

2. 在『咖啡中国市场销售数据_副本』数据集中新建一个参数:市场分布,且SQL语句替换成
SELECT * from 咖啡中国市场销售数据
where 1=1 <市场分布> and 市场分布 in (?{市场分布}) </市场分布>

3. 新建一个报告,拖入表格组件,绑定『咖啡中国市场销售数据_副本』的市场分布和销售额

4. 拖入一个下拉列表参数组件,绑定『咖啡中国市场销售数据』的市场分布字段,并修改组件名称为市场分布 -> 注意这里不是绑定副本的数据

5. 预览查看,发现表格数据会随着下拉参数的选择而变化;


原理讲解
1. 副本数据中引用了市场分布的参数用来过滤,不用在表格中添加过滤器,只要报告中存在同名参数,数据集即可获取到报告上的参数所选值来进行筛选,起到加速的效果
2. 特别注意的是,报告中的参数组件需要引用维度表的数据(本例子指『咖啡中国市场销售数据』),而不能引用和表格组件同一个数据集(即副本),
否则会报错『绑定的数据集"咖啡中国市场销售数据"中存在与参数组件"市场分布"同名的参数。』

同理,您这边的case中开始时间和结束时间也可以用同样的方式来做,只需要修改对应SQL即可

回复

使用道具 举报

yhdata_GWxAKLq6铂金二 显示全部楼层 发表于 2022-7-2 09:31:25
永洪tech-joey 发表于 2022-7-2 09:21
举一个小case,可以参考着来进行实操
1. 复制粘贴生成一个新的『咖啡中国市场销售数据_副本』

我想用这个时间组件控制,在sql用in可以实现么
snipaste_20220702_093029.png
回复

使用道具 举报

永洪tech-joey青铜一 显示全部楼层 发表于 2022-7-2 09:40:15
设置一个开始时间,一个结束时间的参数
select * from table where 1=1
<开始时间> and 日期 >= ?{开始时间} </开始时间>
<结束时间> and 日期 <= ?{结束时间} </结束时间>

不同的数据库SQL的写法可能不一样,可以百度一下
回复

使用道具 举报

yhdata_GWxAKLq6铂金二 显示全部楼层 发表于 2022-7-2 09:43:35
永洪tech-joey 发表于 2022-7-2 09:40
设置一个开始时间,一个结束时间的参数
select * from table where 1=1
and 日期 >= ?{开始时间}

这个组件好像是自带开始结束参数的,我不太清楚怎么传里面这个参数,能帮忙解决一下么
回复

使用道具 举报

永洪tech-joey青铜一 显示全部楼层 发表于 2022-7-2 09:46:19
本帖最后由 永洪tech-joey 于 2022-7-2 09:56 编辑

论坛2-定制日期.png
你那边在使用的应该是『应用市场中-日期参数的免费插件』,这个组件对应的值是『xx_Start』和『xx_End』,你引用这两个即可


回复

使用道具 举报

yhdata_GWxAKLq6铂金二 显示全部楼层 发表于 2022-7-2 09:51:07
本帖最后由 yhdata_GWxAKLq6 于 2022-7-2 09:54 编辑
永洪tech-joey 发表于 2022-7-2 09:46
你拖入的是什么组件?感觉并不是产品的标准功能,像是定开的组件,你可以在『变化时』脚本中debug(param[" ...

这个日期参数的组件
snipaste_20220702_095028.png
snipaste_20220702_095406.png
回复

使用道具 举报

永洪tech-joey青铜一 显示全部楼层 发表于 2022-7-2 09:57:02
yhdata_GWxAKLq6 发表于 2022-7-2 09:51
这个日期参数的组件

那你就引用自带参数参与过滤就行
回复

使用道具 举报

yhdata_GWxAKLq6铂金二 显示全部楼层 发表于 2022-7-2 09:59:15
本帖最后由 yhdata_GWxAKLq6 于 2022-7-2 10:05 编辑
永洪tech-joey 发表于 2022-7-2 09:57
那你就引用自带参数参与过滤就行

是的,但是我现在只能在页面过滤,用那个过滤器,我写的这个sql如果页面没有使用过滤器没有任何效果
snipaste_20220702_100322.png
回复

使用道具 举报

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

  • 官方微信

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

    扫码关注
  • 新浪微博

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

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

会员等你来哦

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