ssas - 基于 strtomember 访问前一个成员并使用附加维度属性
问题描述
我创建了一个简单的命名集 [Latest],它使用前一天的日期。这可以根据需要工作,并且可以由任何引用日期维度的度量使用:
CREATE DYNAMIC SET CURRENTCUBE.[Latest]
AS strtomember('[Date].[Date Key].&['+
vba!Format(DateAdd('d',-1,Now()),'yyyyMMdd')+']');
我的目标是计算此值与前一个工作日之间的增量,并将其显示为单独的计算。[最新] | [最新一期] | [最新-Delta]
我开始使用 [Latest].prevmember 创建一个额外的计算:
CREATE DYNAMIC SET CURRENTCUBE.[Latest-1]
as strtomember ('[Date].[Date Key].&[' + format(DateAdd('d',-1,Now()),'yyyyMMdd')+']').prevmember;
这很好用,但前提是前一天是工作日。如果前一天是周末,则该值不会发生变化,因此 delta 将为 0。需要明确的是,如果 [Latest] 返回星期二,则 Latest-1 将是工作日 Monday 的 prev 成员,但如果 Latest返回星期一日期,我希望 Latest-1 使用星期五的前一个工作日。
日期维度填充了完整的日期日历,但具有 IsWeekday 布尔标志,即周末/节假日为 0,工作日为 1。
其逻辑非常简单,但我正在努力思考如何将 IsWeekday 属性合并到多维数据集计算中。
任何指针都非常感谢。
解决方案
在我的脑海中,我认为您需要获得一组日期键,即工作日 IsWeekDay = 1。然后你需要过滤这个键小于最新键的集合。最后,您可以获取该过滤集的头部。
像这样的东西(需要仔细检查语法):
StrToMember( TAIL ( FILTER(Date.IsWeekDay.&[1].members, date.IsWeekday.currentmember.memberkey< yyyymmdd,
1))
其中 yyyymmdd 是当前日期的表达式。
H,
先生
推荐阅读
- python - 如何使用 Selenium 和 Python 从文本节点中检索部分文本
- testing - TYPO3 v10 没有作曲家自动加载的功能测试
- performance - CUDA 内核:循环次数增加 10% 时性能下降 10 倍
- powerapps - Powerapps 集合列合并
- javascript - Angular.js uibModal 数据未传递给组件
- php - 如何在codeigniter中编辑表单时填充复选框选中的属性
- r - 如何使用 RSelenium 选择复选框?
- linux - 午夜指挥官中的 Chmod 递归
- python - 在 SQL Server 中存储 numpy 数组
- floating-point - python3中的除法