2016-07-14 17 views
0

日付に基づいて設定された期間を切り替えることができるパラメータ/フィルタを作成する方法はありますか?私は、以下のオプションを使用してフィルタを作成する必要があります例えばテーブル期間の日付期間フィルタを設定する

  1. データベース内の最後の日からほとんどの現在のデータベース内の最後の日からの週(最大日マイナス7)
  2. 前の週(現在の週マイナス7)
  3. 前の4週間(最大日マイナス28)

私は、ユーザーに利用可能なフィルタから選択するだけで、これらのオプションを持っている必要があります。

+5

まだこの質問をしていないのですか?:https://stackoverflow.com/questions/37951031/tableau-filter-parameter-for-different-date-ranges – Nicarus

+0

はい、前週の質問には答えられませんでした。答えは先週だけではなく、前の2週間を私にくれました。 –

答えて

2

ここでの最初の問題は、データの最終日の参照方法です。単純なMAX([Order Date])は、フィルタやシートのレイアウトに依存しているため、フィルタ処理された日付または複数の日付、またはその両方を表示するため、機能しません。最新バージョンを使用しており、データソースがLOD calculationsをサポートしていると仮定すると、それらを使用できます。 {MAX([Order Date])}(中括弧に注意してください)。

他の問題は、日付範囲が重複しているため、単純なIF-THENが機能しないことです.IF-THENでは、それぞれの日付が1つの関心範囲にのみ属している可能性があります。それを試してみてください。

だから、あなたはブールを返す3つの計算フィールド(各範囲に1つ)を作成することができ、第二の問題を回避するには(あなたはあなたのニーズに合わせて数式を変更する必要があります):

が最後の7日:

[Order Date] >= {MAX([Order Date])} - 7 
      AND [Order Date] < {MAX([Order Date])} 

は、第二先週です:

[Order Date] >= DATETRUNC('week',{MAX([Order Date])},'Monday') - 7 
     AND [Order Date] < DATETRUNC('week',{MAX([Order Date])},'Monday') 

は、最後の28日間です:

[Order Date] >= {MAX([Order Date])} - 28 
     AND [Order Date] < {MAX([Order Date])} 

これらの式は、重複を無視して、各日付を互いに独立してタグ付けします。

次に、ユーザーが表示する範囲を指定できるようにパラメータを作成する必要があります。パラメータは、3つの文字列値のリストで、範囲の選択を示します。このパラメータには「Show Days」という名前を付けました。

最後に、フィルターの上に置かれる計算フィールドを作成します。

([Is last 7 days] AND [Show Days] = 'last 7 days') 
OR 
([Is 2nd last week] AND [Show Days] = '2nd last week') 
OR 
([Is last 28 days] AND [Show Days] = 'last 28 days') 

は「TRUE」、ショーのパラメータ制御を選択し、フィルタの棚の上に置き、希望の値を選択します。

+0

これは完璧でした。ありがとう! @Dimitri B –

関連する問題