首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Cognos实现当月和上个月的计算

如何使用Cognos实现当月和上个月的计算
EN

Stack Overflow用户
提问于 2022-11-25 08:52:30
回答 2查看 43关注 0票数 0

我想要创建一个计算,将当前月份和上个月的维度添加到Cognos数据模块中。月格式是2022/11,这是我试过的。我没有收到错误消息,但是计算没有返回结果。

代码语言:javascript
运行
复制
Case 
when (Month_Adj = #timestampMask(_add_months($current_timestamp,0),'yyyy')+'/'+timestampMask(_add_months($current_timestamp,0),'mm')#) then 'Last Month'
when (Month_Adj = #timestampMask(_add_months($current_timestamp,-1),'yyyy')+'/'+timestampMask(_add_months($current_timestamp,-1),'mm')#) then 'Previous Month'
else null
end

请找一张截图作为参考。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-28 16:10:11

您正在将宏的十进制结果与数据中的字符值进行比较。您没有语法错误,因为SQL隐式地为比较转换十进制值。但这些数值不太可能匹配。

使用今天的日期,你的宏代码..。

代码语言:javascript
运行
复制
#timestampMask(_add_months($current_timestamp,0),'yyyy')+'/'+timestampMask(_add_months($current_timestamp,0),'mm')#

...should生产.

代码语言:javascript
运行
复制
CAST(2022 AS DOUBLE PRECISION) / 11

因此产生的SQL实际上是..。

代码语言:javascript
运行
复制
Case 
when (Month_Adj = 183.818181812) then 'Last Month'
when (Month_Adj = 202.2) then 'Previous Month'
else null
end

在连接表达式的三个部分之前,使用sq()函数在宏函数返回的值周围放置引号。

代码语言:javascript
运行
复制
#sq(timestampMask(_add_months($current_timestamp, 0),'yyyy'))# + '/' + #sq(timestampMask(_add_months($current_timestamp, 0),'mm'))#

您可以看到Cognos生成的SQL .

在报表级别的

  • 中,查询编辑器中的更多(elipsis) {##**$$}生成的SQL/MDX
  • ,属性/数据\生成的SQL
票数 1
EN

Stack Overflow用户

发布于 2022-11-28 19:57:01

Cognos相对时间过滤器允许您创建一组预定义的相对时间度量,而不需要太多的干扰。

如果希望从同一事实或不同事实表引用两个或多个相对时间度量的计算,则需要创建独立计算,并确保“聚合后计算”标志已打开。

我认为最棘手的部分是在事实表中设置查找引用。

这里有两个表达式,可以用作查找引用的模式。

第一个适用于将202211格式的键值转换为年月日期数据类型。

cast( cast( MONTH_KEY as varchar(8)) ,1,4 )分部'-‘+子字符串( MONTH_KEY作为varchar(8)) ,5,2 )x’-01‘,日期)

第二种方法适用于将20221128格式的键值转换为年月日数据类型。

cast( cast( SHIP_DAY_KEY as varchar(10)) ,1,4 )7,2 '-‘+子字符串( SHIP_DAY_KEY作为varchar(10) ,5,2 )x-’分部( SHIP_DAY_KEY作为varchar(10) ,7,2 ),日期)

如果键值比较抽象,则需要找到一种生成值的方法,该方法将映射到相对时间过滤器的值。

这是一个相对时间概述的链接。https://www.ibm.com/docs/en/cognos-analytics/11.2.0?topic=analysis-sample-calendars

下面是如何定制它们:

https://www.ibm.com/docs/en/cognos-analytics/11.2.0?topic=analysis-creating-relative-date-filters

https://www.ibm.com/docs/en/cognos-analytics/11.2.0?topic=calendars-creating-custom-retail-calendar

https://pmsquare.com/analytics-blog/2020/1/10/creating-custom-calendars-in-cognos-analytics-111

https://senturus.com/blog/how-to-customize-relative-time-in-cognos-data-modules/

在11.2.3中,他们实现了where子句对相对时间的支持,这使得使用它们的查询更加高效,因为您没有在查询结果中执行大量本地处理,以查找符合筛选器的值,因为查询现在将被筛选为只有您想要的结果。

https://www.ibm.com/docs/en/cognos-analytics/11.2.0?topic=analysis-query-optimization-relative-date-measures

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74570246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档