去年,我必须将一个多维数据集迁移到 MS SSAS,以获得两天(T1 和 T2)的固定数据集,并且它们有一个“SOD”纪元(代表“一天的开始”)。
现在我将实时数据滴入立方体中,并改变纪元(表示最新的)。
Epoch 已成为它自己的暗淡表,具有 INT ID、VARCHAR 名称。一切都好。
我创建了一些新的计算成员:
(由于传入数据显示为“系列”,因此它有自己的新纪元名称,并且始终是最大 ID。
Epoch_Max 作为(有效):
MAX([Epoch].[ID].MEMBERS,[Epoch].[Epoch].CurrentMember.MEMBER_KEY)
Notonal_SOD 在这里,锁定到称为“SOD”的纪元(有效):
[Measures].[Notional_SOD] = ([Epoch].[Epoch].[SOD],([Date],[T].[T1],[Measures].[Notional_SUM]))
我需要对此的一些建议,因为我想要 Notional_LATEST (用于新的和最新的实时数据交付),所以我们使用(工作)Epoch_MAX calc 成员:
(我该如何做类似下面的事情(这不起作用):
[Measures].[Notional_LATEST] = ([Epoch].[ID] + ".[" + CSTR([Measures].[Epoch_MAX]) + "]",([Date],[T].[T1],[Measures].[Notional_SUM]))
破解了!
因此,在阅读并搜索各种串联和字符串函数之后,我偶然发现了 StrToMember。注意 - 我还使连接的结果可见,因此在 Excel 数据透视表中,我可以看到它是一个“字符串”,这让我意识到我需要将字符串转换为正确的对象/维度,以便在我的项目中使用实际测量。
因此,我将连接的字符串 + 动态 ID 放入名为 MAXID 的度量中,然后由我的 Notional_LATEST 度量调用,这是我们包装字符串以转换为成员的位置。
(使用 ID 部分构造我们的纪元,并从我们计算的成员中获得最大值。
'[Epoch].[ID].[' + [Measures].[Epoch_MAX] + ']'
返回最新纪元名义值的最终措施:
[Measures].[Notional_LATEST] = (StrToMember([Measures].[MAXID]),([Date,[T].[T1],[Measures].[Notional_SUM]))