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

[常用脚本] 开始日期与结束日期的使用

yhdata_8957青铜一 显示全部楼层 发表于 昨天 15:10
yhdata_lyaa 发表于 2024-11-4 14:26
1.装载时运行脚本
2.变化时运行
开始日期会自动变成结束日期往前推12月的日期

我又试了一下,变化时运行的脚本优先级会高于装载时运行,所以我打开页面的时候,开始日期就和结束日期相差一年了,这个要怎么处理呢
回复

使用道具 举报

yhdata_Dkp2dKHh玄铁三 显示全部楼层 发表于 昨天 15:40
直接在变化时运行写就行啦,开始结束参数组件不设置默认,勾选。
js脚本加个判断
1.当开始参数为空,参数赋默认值,
2.结束一样
回复

使用道具 举报

yhdata_8957青铜一 显示全部楼层 发表于 昨天 16:08
yhdata_Dkp2dKHh 发表于 2024-11-4 15:40
直接在变化时运行写就行啦,开始结束参数组件不设置默认,勾选。
js脚本加个判断
1.当开始参数为空,参数赋 ...

脚本里面只能使用iif函数啊
回复

使用道具 举报

yhdata_Dkp2dKHh玄铁三 显示全部楼层 发表于 昨天 16:14
yhdata_8957 发表于 2024-11-4 16:08
脚本里面只能使用iif函数啊

脚本里JS循环 判断都可以写,别只看他们列出的函数,你这个 在if里面做几个判断 赋值就再结合过滤就ok啦。
回复

使用道具 举报

yhdata_lyaa 显示全部楼层 发表于 昨天 16:17
yhdata_8957 发表于 2024-11-4 14:46
你好,我根据这个代码得到的场景是:1、点击页面后,开始日期为去年的今天,结束日期为今年的昨天---所以 ...

应该是与第二点冲突了,报告打开先执行装载时运行脚本,再执行变化时运行脚本。
结束日期有默认值昨天,变化运行又设置了 开始=结束-12
回复

使用道具 举报

yhdata_lyaa 显示全部楼层 发表于 昨天 16:18
参考楼上的办法解决试试
回复

使用道具 举报

yhdata_8957青铜一 显示全部楼层 发表于 昨天 16:22
yhdata_Dkp2dKHh 发表于 2024-11-4 16:14
脚本里JS循环 判断都可以写,别只看他们列出的函数,你这个 在if里面做几个判断 赋值就再结合过滤就ok啦 ...

我大概知道你的思路,但我不太清楚怎么去写,if ('开始日期' ==null ),then var a=dateTrunc('year',today())
开始日期.setSelectedObjects([a], DATE);
//开始日期设置今年第一天
结束日期.setSelectedObjects([param["_LAST_FULL_DAY_"]], DATE);
//结束日期默认为当年昨日

elseif  var  b=dateAdd(结束日期.getSelectedObjects()[0],'month',-12)
开始日期.setSelectedObjects(, DATE);
//开始日期与结束日期相差12月、

类似这样去写吗?
回复

使用道具 举报

yhdata_Dkp2dKHh玄铁三 显示全部楼层 发表于 昨天 16:32
if (isNull(param["结束参数"])) {
    param["结束参数"]=昨天;
    param["开始参数"]=昨天年份的第一天;

} else {
    param["开始参数"]=结束日期年份第一天;
};
差不多就这样写变化时运行就OK啦 ,弄个参数组件给结束日期选日期就OK,数据在sql或者图表过滤用 开始参数和结束参数
JS 这东西直接找个ai大模型,改改用BI里的变量格式一样用
回复

使用道具 举报

yhdata_8957青铜一 显示全部楼层 发表于 昨天 16:48
yhdata_Dkp2dKHh 发表于 2024-11-4 16:32
if (isNull(param["结束参数"])) {
    param["结束参数"]=昨天;
    param["开始参数"]=昨天年份的第一天; ...

感谢大家回复
回复

使用道具 举报

yhdata_8957青铜一 显示全部楼层 发表于 昨天 16:56
yhdata_Dkp2dKHh 发表于 2024-11-4 16:32
if (isNull(param["结束参数"])) {
    param["结束参数"]=昨天;
    param["开始参数"]=昨天年份的第一天; ...

function getYesterday() {
    var today = new Date();
    today.setDate(today.getDate() - 1);
    return today;
}

function getFirstDayOfYear(date) {
    return new Date(date.getFullYear(), 0, 1);
}

if (isNull(param["结束日期"])) {
    param["结束日期"] = getYesterday();
    param["开始日期"] = getFirstDayOfYear(getYesterday());
} else {
    var endDate = new Date(param["结束日期"]);
    endDate.setMonth(endDate.getMonth() - 12);
    param["开始日期"] = endDate;
}(;´Д`)没有生效
回复

使用道具 举报

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

  • 官方微信

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

    扫码关注
  • 新浪微博

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

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

会员等你来哦

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