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

相対日付の導出

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

ここでは、日付を暦週でグループ化し、直前の8週間に該当する行を確認します(つまり、現在の暦週は含めません)。

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

そのために、いくつかの中間列を導出します。

  • 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 も導出します。

相対日付の導出

まず、日付列を含むデータセットを用意します。この例では、元のデータセットにある departure_date_time という列を使用します。列名は、データセットに合わせて適宜変更できます。

読み込みを高速にするために、数か月の範囲に絞り込んでもよいでしょう。次に、テーブルをクリックしてテーブル表示を開きます。 テーブル編集表示で、**式(エクスプレッション)**をクリックして新しい列をそれぞれ導出します。

または、テーブル表示に移動せずに、パスから直接式ボードを追加することもできます。

departure_week

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

week_of_year 関数を使用して、departure_date_time 列の各日付がその年の何週目に該当するかを特定します。第1週から第9週については、case 文を使用して数値の先頭に0を付けます。最終的な列の式は次のようになります。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 CASE week_of_year("departure_date_time") WHEN 1 THEN '01' WHEN 2 THEN '02' WHEN 3 THEN '03' WHEN 4 THEN '04' WHEN 5 THEN '05' WHEN 6 THEN '06' WHEN 7 THEN '07' WHEN 8 THEN '08' WHEN 9 THEN '09' ELSE CAST (week_of_year("departure_date_time") AS STRING) END
1回の lpad 呼び出しでこれらの case 文を置き換え

case 文の代わりに左パディング(内側の余白)関数(lpad)を使用すると、上記の式を簡略化できます:lpad(week_of_year("departure_date_time"), 2, '0')。これにより、必要な値の左側に0が追加され、すべての値が2桁になります。

departure_year_week_as_integer

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

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

CAST (year("departure_date_time")||"departure_week" AS INTEGER)

latest_calendar_week

次に、先ほど作成した列の最大値を求めます。この最大値は、データ内の最新の週に該当するはずです。(この例では、データが定期的に更新されるため、「データ内の最新の週」は現在の週とほぼ同じであると想定しています。)

この構文はウィンドウ関数です。ウィンドウ関数について詳しく知りたい場合は、SQL ドキュメント ↗またはウィンドウ関数のドキュメントを参照できます。そうでなければ、次の関数をそのままコピーします。

max("departure_year_week_as_integer") OVER ()

これにより、範囲の最大値のみを持つ列が作成されるため、すべての行で同じ値になります。

within_last_8_weeks

この列を導出するには、2つの比較文を使用して、日付がデータ内の最新の週より前の8週間に該当するかどうかを確認します。該当する場合は、その行の値を TRUE にします。そうでなければ、FALSE にします。

Copied!
1 2 3 4 5 6 CASE 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"

これですべての導出列が揃いました。テーブルをクリックしてテーブル表示を終了します(または、パスに式ボードを直接追加した場合は、そのまま分析を続けます)。

チャートでの相対日付の使用

フィルターを使用して、within_last_8_weeks が true の行のみを保持し、絞り込んだデータセットでチャートを作成できます。 次のチャートでは、departure_week_label を使用して、現在の日付より前の直近8週間における週ごとの一意のフライト数を表示しています。

相対日付のチャート

このチャートをレポートに追加し、定期的に参照することで、過去数か月の最新の状況を確認できます。