3

首先,对 SSAS 来说非常陌生。但是我想要完成的事情似乎相当微不足道(我希望如此)。

我有第二个发生的事务数据。我创建了两个时间维度。一维基于使用时间维度向导的标准时间维度。另一个是由我自己的脚本生成的时间维度,我在其中记录了一天中的每一秒。

我已将我的事实表链接到我的维度并正确部署了我的多维数据集。在我的事实数据中,其中一个属性是价格。现在使用最小值和最大值,我已经能够获得在特定时间段内发生的最高价格和最低价格。我想获得的是一段时间内发生的第一个和最后一个价格。我尝试过使用“第一个值”和“最后一个值”,但返回的内容不正确,它似乎是某种聚合。

举个例子。如果我在 1 分钟内的价格是:

1233、1233.85、1300、1250

首先应该返回 1233,最后应该返回 1250。这应该在所有时间段都有效。

添加,对于我的自定义时间维度,我尝试将其类型设置为“时间”,但结果保持不变。我很感激任何建议。我基本上希望获得底层证券的第一个值和最后一个值。

让我了解其中的一部分的示例查询:

SELECT NON EMPTY 
     { [Measures].[High]
     , [Measures].[Low]
     , [Measures].[Price Count]
     , [Measures].[Price]
     } ON COLUMNS
     , NON EMPTY
     { [Dim Date].[Year -  Week -  Date].[Date].ALLMEMBERS
     * HEAD( [Dim Time].[Hour - Second].[Second].ALLMEMBERS )
     } ON ROWS 
FROM [Cube]

在此处输入图像描述

请注意,价格计数列有多个记录。我需要这里的第一条记录,我不想要实际的总和。

4

1 回答 1

0

尝试创建一个新度量来获取时间维度第一秒的价格。例如,如果您想要一天的第一秒,则在行的交叉连接中不需要它,但您可以在计算度量中获取 [Hour - Second] 层次结构的第一秒:

with
    member [Measures].[First Price] as
        (head(descendants([Dim Time].[Hour - Second].CurrentMember, Second)), [Measures].[Price])
select
    non empty {
        [Measures].[High],
        [Measures].[Low],
        [Measures].[Price Count],
        [Measures].[Price] 
    } on columns,   
    {
        [Dim Date].[Year -  Week -  Date].[Date].ALLMEMBERS
    } on rows
from
    [Cube]

如果您希望时间段更小,例如按小时,请尝试以下操作:

    non empty {
        [Dim Date].[Year -  Week -  Date].[Date].ALLMEMBERS * [Dim Time].[Hour - Second].[Hour]
    } on rows
于 2012-05-29T08:09:21.723 回答