创建时间差命名集

0
在cube中新建命名集,为两个时间维度之差,如上市日期与时间维度差异来计算上市天数,然后来统计上市天数的相关指标。因为不熟悉MDX,做不出来,目前cube查询结果如下


QQ截图20150828163010.png

想要实现的效果如下:
111.png

目前cube结构:
QQ截图20150831153200.png

将时间差作为命名集会报错
QQ截图20150901170953.png QQ截图20150901171005.png
已邀请:
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-08-28 回答

不是很明白你想表达的意思.
看你这里已经有上市日期了, 为什么还要去求呢?
上市日期 * 产品 或者 别的维度 = 计算出来的不就是它的各项指标, 为什么还要去求它的上市天数呢

你写的这个MDX, 是 2个日期的交集 我看不出来有什么意义。

--------------------------------------------------------------------------------------------------------------------
计算离现在间隔几个月:
WITH MEMBER DIFFDATEMonth
AS
    DATEDIFF("m", [Date].[Calendar].CurrentMember.Member_Value, NOW())

SELECT {DIFFDATEMonth} ON 0,
{[Date].[Calendar].[Date]} ON 1 FROM [Adventure Works]
1.png


 日 改成 d 就可以了
2.png


 
0

brucelu - 大数据、数据仓库、数据挖掘均有涉猎 2015-08-31 回答

我理解你的意思,有个上市日期和销售日期,用两个日期的一个差值来做一定的运用和分析。
1、分析上看:上市一周内、一个月内售卖的情况,可以分析产品的生命周期或者某个品类的生命周期。为后期同品类、同样的产品作分析。这个是很不错的,甚至可以更多角度的去看。
2、从ssas的实现上看:你给的维度是数列形式有N*M种可能,你把上市日期和销售日期差值当做维度来部署,很多地方有局限性:第一,代码实现基本不太现实可以参考成员和层级维度的一些定义,还有你的实现功能跟这个定义有一些冲突;第二,就算能勉强实现,但是应用受限制,重点在效率差,而且复杂,我建议SSAS不要复杂,高效率算是它的初衷。
3、设计上看:你现在要做的是把两个维度做处理,但是维度依赖的是根据事实而产生相应的对应关系。我很好奇你的事实表里面是怎么样存储数据的。按理你有两个时间维度,那么你的实时表有两个时间key,我觉得你可以把这个做成半维度的一个中间表。这样的话,你可以按照上市日期及销售日期的浮动来取相应的值。 可以实现你要做的日、周、月,而且可控性很强。
我建议你还是做一次单独处理的比较好,毕竟好设计才是重点。

要回复问题请先登录注册