4

日付、時刻、シフトの3つのディメンションを持つキューブがあります。[Pieces Succeeded]というメジャーがあり、Shiftの時間ごとの[PiecesSucceeded]の累計が必要です。シフトは1日を超える可能性があるため、次のクエリでは、日付と時刻のディメンションのクロスジョインを実行します。

with
member [Measures].[Pieces Succeeded Running Total] as
    sum([Time].[Hierarchy].[Hour].FirstMember:[Time].[Hour].CurrentMember, [Measures].[Pieces Succeeded])
select
    { [Measures].[Pieces Succeeded], [Measures].[Pieces Succeeded Running Total] } on columns,
    nonempty(crossjoin([Date].[Month Hierarchy].[Day].Members, [Time].[Hierarchy].[Hour].Members)) on rows
from
    [OEE]
where
    [Shift].[Month Hierarchy].[Shift].&[501]

これにより、次の結果が得られます。

Date        Hour  Pieces Succeeded  Pieces Succeeded Running Total
03 Apr 2011 22    6393              6393
03 Apr 2011 23    6424              12817
04 Apr 2011 00    3816              3816
04 Apr 2011 01    5510              9326
04 Apr 2011 02    2090              11416
04 Apr 2011 03    7489              18905
04 Apr 2011 04    7307              26212
04 Apr 2011 05    5706              31918

合計が数日にわたって機能するように、クロスジョインされたセットで合計を機能させるにはどうすればよいですか?

ありがとう

4

1 に答える 1

3

私はこれに一日中費やし、ついにそれを理解しました。私はそれが他の誰かにとって価値があるかもしれないと思ったので、ここに解決策があります:

with

set DateHours as
    nonempty(crossjoin([Date].[Month Hierarchy].[Day].Members, [Time].[Hierarchy].[Hour].Members), [Measures].[Pieces Succeeded])

member [Measures].[Rank] as
    rank(([Date].[Month Hierarchy].CurrentMember, [Time].[Hierarchy].CurrentMember ), DateHours) 

member [Measures].[Running Pieces Succeeded] as 
    iif([Measures].[Rank] = 1, [Measures].[Pieces Succeeded], sum(head(DateHours, [Measures].[rank]), [Measures].[Pieces Succeeded]))

select
    { [Measures].[Pieces Succeeded], [Measures].[Running Pieces Succeeded] } on columns,
    non empty { DateHours } on rows

from
    [OEE]

where
    [Shift].[Month Hierarchy].[Shift].&[501]
于 2012-04-10T19:26:52.423 に答える