bugfix> spotfire > 投稿

現在の週の「週の年齢」の計算に問題があります。私のデータは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 件
  • バージョン7以降では、ネストされた集計を使用できるため、この式が機能するはずです。

    First(case  when [Age_of_Day]=0 then [Week] end) - [Week]
    
    

  • 私は答えを見つけましたが、かなり簡単です。 [Age_of_Week]の式は次のとおりです。

    If([Age of Day]>=0,Max([Week]) - [Week],If([Age of Day]<0,Min([Week]) - [Week],NULL))
    
    

    これは、(私の場合のように)週番号が継続し、52から1にリセットされない場合にのみ正常に機能します。それ以外の場合は、式にYear()を追加する必要があります。

あなたの答え