現在の週の「週の年齢」の計算に問題があります。私のデータはSpotfire以外の週番号を使用しているため、Week()式を使用しません(地域と場所の変更はオプションではありません)。データテーブルは毎日更新されるため、計算列[Age_of_Day]は現在の(実際の)日付からの経過日数を計算します。次に、実際の週から週の年齢を計算します。ここに私のデータのサンプルがあります:
RowID Week Day Date Age_of_Day
12 20 do 17-5-2018 8
13 20 vr 18-5-2018 7
14 20 za 19-5-2018 6
15 21 zo 20-5-2018 5
16 21 ma 21-5-2018 4
17 21 di 22-5-2018 3
18 21 wo 23-5-2018 2
19 21 do 24-5-2018 1
20 21 vr 25-5-2018 0
21 21 za 26-5-2018 -1
22 22 zo 27-5-2018 -2
23 22 ma 28-5-2018 -3
24 22 di 29-5-2018 -4
25 22 wo 30-5-2018 -5
26 22 do 31-5-2018 -6
27 22 vr 1-6-2018 -7
ここで、[Age_of_Day] = 0のときに[Week]の値と[Week]の値の間のすべての行の差を計算する新しい列[Age_of_Week]が必要です。次のようになります。
RowID Week Day Date Age_of_Day Age_of_Week
12 20 do 17-5-2018 8 1
13 20 vr 18-5-2018 7 1
14 20 za 19-5-2018 6 1
15 21 zo 20-5-2018 5 0
16 21 ma 21-5-2018 4 0
17 21 di 22-5-2018 3 0
18 21 wo 23-5-2018 2 0
19 21 do 24-5-2018 1 0
20 21 vr 25-5-2018 0 0
21 21 za 26-5-2018 -1 0
22 22 zo 27-5-2018 -2 -1
23 22 ma 28-5-2018 -3 -1
24 22 di 29-5-2018 -4 -1
25 22 wo 30-5-2018 -5 -1
26 22 do 31-5-2018 -6 -1
27 22 vr 1-6-2018 -7 -1
うまくいけば、誰かが私を助けることができます。 OVER()ステートメントとIntersect()を使用する必要があると思いますが、この場合の方法はわかりません。残念ながら、他のトピックの助けを借りて自分の答えを見つけることができませんでした。
回答 2 件
私は答えを見つけましたが、かなり簡単です。 [Age_of_Week]の式は次のとおりです。
If([Age of Day]>=0,Max([Week]) - [Week],If([Age of Day]<0,Min([Week]) - [Week],NULL))
これは、(私の場合のように)週番号が継続し、52から1にリセットされない場合にのみ正常に機能します。それ以外の場合は、式にYear()を追加する必要があります。
関連した質問
- OracleとTDVのタイムスタンプの結果は異なります
- ユーザーがSpotfireのあるページから別のページに移動したかどうかを確認する方法は?
- 別の列の値に対して特定の値が表示される回数をカウントします
- SpotfireまたはMySqlで機器の停止時間を計算する方法
- Spotfire:別のテーブルのマーキングに基づいて値を持つ列を追加します
- WebブラウザからローカルCSVファイルを開く
- over関数を使用したSpotfireの日付の違い
- Spotfireで月ごとにテーブルのデータを集計する方法
- 繰り返し値に基づいて列をセクションにグループ化する方法は?
- 実行場所で「Force Server」を使用してデータ関数を実行するとエラーが発生する
バージョン7以降では、ネストされた集計を使用できるため、この式が機能するはずです。