MDX问题

时间:2009-02-11 14:10:39

标签: mdx

我正在使用Analysis Services 2000为Web应用程序开发一个多维数据集,用户可以在该应用程序中注册和注销该站点。因此,“用户”表有以下三个字段:

  • activo(1或0)
  • fechaAlta
  • fechaBaja
当用户激活他的帐户时,应用程序保存“fechaAlta”并将1放在“activo”字段上。 当用户取消订阅他的帐户时,应用程序将字段“activo”更新为0并保存“fechaBaja”。

我需要的信息是通过时间维度了解一次有多少用户处于活动状态。类似的东西:

年月日活跃用户

2009年1月1日10日(今天10次激活)
2009年1月2日12日(今天3次激活, 1次未注册
2009年1月10日17日(5日激活)

即使我在2009年2月查询,我也需要知道1月1日有10个活跃用户(取消订阅第2个用户的用户必须计算在内)。

我开发了一个多维数据集,其中事实表是用户表,并为两个日期字段(fechaAlta和fechaBaja)创建两个维度。我也创建了这个计算字段:

按月活动:
    计算子多维数据集:{[Measures]。[Altas]},[Fecha Alta]。[Mes] .MEMBERS
    计算公式:sum({Descendants([Fecha Alta] .currentmember,[Fecha Alta]。[Día])},[Measures]。[Activo])

活跃于白天:
    计算子多维数据集:{[Measures]。[Inscritos]},[Fecha Alta] .MEMBERS
    计算公式:sum({Periodstodate([Fecha Alta]。[(Todos)])},[Measures]。[Activo])

我不知道如何仅在fechaBaja指示的日期打折未注册的用户。

感谢。

2 个答案:

答案 0 :(得分:1)

这是一个经典的缓慢变化的维度问题。您所描述的是类型2缓慢变化的维度,请参阅here

您需要确保您的用户维度具有代理键。然后,每次用户更改状态时,在用户表中创建一条新记录,然后使用生效日期来控制要插入事实表中的代理键。这样您就可以在任何时间点报告用户的有效状态。

答案 1 :(得分:0)

我认为您需要一个“用户状态”维度,然后您可以针对时间显示此值,其中度量是用户数量。