ご質問
条件を満たす連続値、つまり同じストリークに属するすべての値をグループ化する方法。たとえば、利益がマイナスだった連続日数に基づいて、日のグループを作成します。行に利益がマイナスの 3 日間がある場合、それらの日はすべてグループ "3" に属します。
ZN(LOOKUP(SUM([Profit]),0))
IF [Profit no gaps] >= 0 THEN NULL ELSEIF LOOKUP([Profit no gaps],-1) >= 0 THEN MIN([Order Date]) ELSE PREVIOUS_VALUE(#1/1/18#) END
LOOKUP([Profit no gaps],1)
IF [Profit no gaps] >= 0
THEN NULL
ELSEIF [Next Profit Value] >= 0
THEN MIN([Order Date])
ELSE PREVIOUS_VALUE(#1/1/18#)
END
DATEDIFF('day', [Start Date], [End Date]) + 1
IF [Days in Streak] = 1 THEN
WINDOW_SUM(
IF [Days in Streak] = 1
THEN COUNTD([Order Date])
END
)
ELSEIF [Days in Streak] = 2 THEN
WINDOW_SUM(
IF [Days in Streak] = 2
THEN COUNTD([Order Date])
END
)
ELSEIF [Days in Streak] = 3 THEN
WINDOW_SUM(
IF [Days in Streak] = 3
THEN COUNTD([Order Date])
END
)
ELSEIF ...
END / [Days in Streak]
注: 計算フィールド [# of Streaks (ストリーク数)] および [Keep only one date per streak group (ストリーク グループあたり 1 日のみ維持)] には、ストリーク内の可能性のある日数ごとに条件を含める必要があります。理由の詳細については、「集計フィールドを使用してテーブル計算の詳細レベルを定義する」を参照してください。
MIN([Order Date]) = WINDOW_MIN(IF[Days in Streak] = 1 THEN [Start Date] END)
OR MIN([Order Date]) = WINDOW_MIN(IF[Days in Streak] = 2 THEN [Start Date] END)
OR MIN([Order Date]) = WINDOW_MIN(IF[Days in Streak] = 3 THEN [Start Date] END)
OR ...
""
Prep フローの作成は事前作業ですが、Prep 出力からのビューの作成は、表計算によるビューの作成と比較してはるかに簡単です。"Grouping Consequtive days.tflx" Prep フローでは、以下のステップを説明しており、右側のペインからダウンロードできます。
IF [Profit] < 0
THEN 'negative'
ELSE 'positive'
END
{ PARTITION [Category], [Condition] : { ORDERBY [Order Date] ASC : RANK_DENSE()}}
[Row Number] + 1
IF ISNULL(DATEDIFF('day', [Order Date-1], [Order Date]))
OR DATEDIFF('day', [Order Date-1], [Order Date]) > 1
THEN [Order Date]
END
{ PARTITION [Category], [Condition] : { ORDERBY [Start Date] ASC: RANK_DENSE()}}
[Row Number] - 1
IF ISNULL(DATEDIFF('day', [Order Date], [Order Date-1]))
OR DATEDIFF('day', [Order Date], [Order Date-1]) > 1
THEN [Order Date]
END
{ PARTITION [Category], [Condition] : { ORDERBY [End Date] ASC: RANK_DENSE()}}
DATEDIFF('day', [Start Date],[End Date])+1
Prep フロー出力には、条件 (マイナスの利益がある) を満たすグループと条件を満たさないグループの開始日が含まれます。フィルターを "Row Number (行番号)" クリーニング ステップに追加して、[Condition]='negative' のみを維持し、条件を満たさないグループを除外できます。そうでない場合は、[条件] フィルターをビューに追加する必要があります。