首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有FactTable日期的计算成员

具有FactTable日期的计算成员
EN

Stack Overflow用户
提问于 2014-12-03 11:07:45
回答 1查看 82关注 0票数 1

我刚从SSAS的MDX开始,我不得不承认我有点困惑;-)

所以,我想计算的是相当简单的。在事实表CreationDateKey FactDelivery中,我们有两个日期键字段,即和DeliveryDateKey.。

处理时间是从创建条目到实际交付日期之间的天数。

当创建一个新的计算成员时,我们在左下角窗口中有度量的字段和维度。但是,由于FactDelivery的日期值不是实际的措施,所以没有列出。我本以为我可以以以下方式访问它们。

代码语言:javascript
复制
Case 
  When [FactDelivery].[DeliveryDateKey] < [Fact Delivery].[DateCreatedKey] 
  Then 0 
  Else [FactDelivery].[DeliveryDateKey] - [FactDelivery].[DateCreatedKey]
End

这看起来就像可以在事实表本身上定义的命名计算。这是我的第一个方法。但是,由于我只将键存储为整数YYYYMMDD,所以无法进行日期计算。这就是为什么我切换到MDX,以访问DimDate表中的实际日期。任何帮助都是非常感谢的。

诚挚的问候

塞巴斯蒂安

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-06 08:58:38

您绝对是在正确的轨道上使用“命名计算”...the逻辑不是您想要的那么简单;-)

下面是一个将整数日期(YYYYMMDD)转换为日期的示例,然后使用DateDiff函数计算之间的天数。

代码语言:javascript
复制
DECLARE @s_dt_int AS INT = 20141205;
DECLARE @e_dt_int AS INT = 20141208;

SELECT  DATEDIFF(
            DAY,
            CONVERT(date, CONVERT(varchar(8), @s_dt_int), 112),
            CONVERT(date, CONVERT(varchar(8), @e_dt_int), 112)
        )
;

这个逻辑可以封装在SSAS数据库的源视图或DSV中(虽然我更喜欢源代码上的视图,并认为它是一个很好的实践,因为它可以在多个ssas数据库中重用)

编辑:显然,您可以将DateDiff封装在CASE语句中,以控制CreateDateKey > DeliveryDateKey的情况处理。

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

https://stackoverflow.com/questions/27270157

复制
相关文章

相似问题

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