注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

相対日付の導出

このガイドでは、データセットから相対日付を導出するために、Contour の式言語を使用する方法を説明します。

この場合、カレンダー週別 に日付をグループ化し、直近 8 週間以内に該当する行を見たいと考えています(つまり、現在のカレンダー週は 含まれません)。

そこに到達するために、いくつかの中間カラムを導出します。

  • departure_week: この日付が何週目(1-52)にあたるかを決定するカレンダー週
  • departure_year_week_as_integer: 年とカレンダー週を足した整数を作成(例:「201501」は 2015 年の第 1 週)
  • latest_calendar_week: データセット内の最も新しい週を見つける

最後に、関心のあるカラムに到達します。

  • within_last_8_weeks: 各日付を latest_calendar_week と比較して、直近 8 週間以内に該当するかどうかを判断(true または false を返す)

また、チャートで年とカレンダー週を表示するために使用できるラベルカラム departure_week_label を導出します。

直接的な「過去 8 週間以内に該当するか」を計算するより簡単な方法がありますが、このガイドはできるだけ多くの例を示すことを目的としています(そして、Contour を明示的な要件に準拠する方法を示すために使用する方法)。

相対日付の導出

日付カラムがあるデータセットから始めます。ここでは、元のデータセットで departure_date_time というカラムを使用しています。データセットに応じてカラム名を変更できます。

より速い読み込みのために、数ヶ月の範囲にフィルター処理することをお勧めします。次に、Table をクリックしてテーブルビューを開きます。 テーブル編集ビューで、Expression をクリックして新しいカラムを導出します。

ヒント

別の方法として、テーブルビューに移動せずにパスから直接 Expression ボードを追加できます。

departure_week

最初のカラムに departure_week という名前を付けます。

departure_date_time カラム内の各日付の年の週を決定するために、week_of_year 関数を使用します。週 1 から 9 までの場合、0を前に付けた形式で数値をケースステートメントで使用します。最終的なカラム式は以下のようになります。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 CASE week_of_year("departure_date_time") -- "departure_date_time"の年間週番号によって場合分けを行います WHEN 1 THEN '01' -- 週番号が1の場合、'01'を返します WHEN 2 THEN '02' -- 週番号が2の場合、'02'を返します WHEN 3 THEN '03' -- 週番号が3の場合、'03'を返します WHEN 4 THEN '04' -- 週番号が4の場合、'04'を返します WHEN 5 THEN '05' -- 週番号が5の場合、'05'を返します WHEN 6 THEN '06' -- 週番号が6の場合、'06'を返します WHEN 7 THEN '07' -- 週番号が7の場合、'07'を返します WHEN 8 THEN '08' -- 週番号が8の場合、'08'を返します WHEN 9 THEN '09' -- 週番号が9の場合、'09'を返します ELSE CAST (week_of_year("departure_date_time") AS STRING) -- それ以外の週番号の場合、週番号を文字列に変換して返します END
ヒント

上記をもっと簡単にするために、case ステートメントの代わりに左パディング(lpad)関数を使用することもできます: lpad(week_of_year("departure_date_time"), 2, '0')。これにより、合計2桁になるように必要な値に左にゼロが追加されます。

departure_year_week_as_integer

この行では、先ほど導出した departure_week 行に年を連結します。

departure_date_time 行の各日付から年を抽出するために year 関数を使用します。次に、 || 文字を使用してそれらを連結する departure_week 行を追加します。最後に、結果の値を整数としてキャストします。 最終的な列式は次のようになります:

Copied!
1 2 # "departure_date_time"から年を取得し、それに"departure_week"を連結します。結果を整数型にキャストします。 CAST (year("departure_date_time")||"departure_week" AS INTEGER)

最新のカレンダー週

次に、作成したばかりの行で最大値を見つけます。最大値はデータの最新週であるべきです。(データが定期的に更新されると仮定すると、「データの最新週」は現在の週にほぼ等しいです。)

構文はウィンドウ関数です。ウィンドウ関数について詳しく学びたい場合は、SQL documentationを読むか、Window Functions documentationを参照してください。それ以外の場合は、単に関数をコピーしてください:

# OVER()関数の中に何も引数がない場合、全体のデータセットに対して関数を適用します。
max("departure_year_week_as_integer") OVER ()

この操作により、範囲内の最大値を示す行が作成されますので、各行で同じ値になります。

within_last_8_weeks

この行を導出するために、データの最新週の 8 週間前に日付が該当するかどうかを確認する比較文をいくつか使用します。該当する場合は、その行の値として TRUE を使用します。それ以外の場合は、FALSE です。

Copied!
1 2 3 4 5 6 7 8 CASE -- "departure_year_week_as_integer"が"latest_calendar_week"より小さく、 -- さらに"departure_year_week_as_integer"が("latest_calendar_week" - 9)より大きい場合、 WHEN ("departure_year_week_as_integer" < "latest_calendar_week") AND ("departure_year_week_as_integer" > ("latest_calendar_week" - 9)) THEN TRUE -- 真を返します。 ELSE FALSE -- それ以外の場合は偽を返します。 END

departure_week_label

この行は、年とカレンダー週を文字列としてきれいに表示し、チャートのラベルとして使用するためのものです。各日付から年を抽出するために year 関数を使用し、「.CW」とカレンダー週を追加します。

Copied!
1 year("departure_date_time") || '.CW' || "calendar_week" -- "departure_date_time"から年を取得し、'.CW'と"calendar_week"を連結します

すべての派生した行が揃ったら、Table をクリックしてテーブルビューを終了するか(または、式ボードを直接パスに追加した場合は、分析を続けてください)。

チャートで相対日付を使用する

フィルター処理して within_last_8_weeks が true の行だけを残し、フィルター処理したデータセットを使ってチャートを作成できます。 次のチャートでは、departure_week_label を使って、現在の日付から過去 8 週間の間の週ごとのユニークなフライト数を表示しています:

relative-dates-chart

このチャートをレポートに追加し、過去数ヶ月の最新ビューを定期的に参照できます。