「Dailyのデータを週次で集計したい、、」
本記事を見に来ていただいた方はそのようなお悩みをお持ちではないでしょうか?
それを解決できるのがWEEKOFYEAR関数になります。
本記事ではそちらについて解説いたします。
WEEKOFYEAR関数についてはじめに
WEEKOFYEAR
関数は、Spark SQLで日付に対してその年の週番号を計算するために使用されます。
この関数は、ISO 8601の週番号(週の始まりが月曜日)に基づいて計算を行います。
具体的には、年の最初の週はその年の最初の木曜日を含む週と定義されます。
WEEKOFYEAR関数の基本構文と使用例
WEEKOFYEAR関数の基本構文
SELECT WEEKOFYEAR('2023-05-19') AS week_number
このクエリは、’2023-05-19’の日付がその年の第何週に該当するかを計算し、結果を返します。
WEEKOFYEAR関数の使用例
以下に、サンプルデータを使用したSQLクエリとその結果を示します。
サンプルデータ
テーブル:sample_datesのカラム:dateに以下データが含まれているとします。
- ‘2023-01-01’
- ‘2023-05-19’
- ‘2023-12-31’
- ‘2024-01-01’
- ‘2024-05-19’
- ‘2024-12-31’
クエリの例
SELECT date, WEEKOFYEAR(date) AS week_number
FROM sample_dates
結果
以下がクエリの実行結果の例です。
date | week_number |
---|---|
2023-01-01 | 52 |
2023-05-19 | 20 |
2023-12-31 | 52 |
2024-01-01 | 1 |
2024-05-19 | 20 |
2024-12-31 | 1 |
結果の解釈
- ‘2023-01-01’: ISO 8601に基づいて計算されるため、2023年の1月1日は前の年の最終週(第52週)に含まれます。
- ‘2023-05-19’: 2023年の第20週に該当します。
- ‘2023-12-31’: 2023年の最終日も第52週に該当します。
- ‘2024-01-01’: 2024年の1月1日は新年の最初の週(第1週)に該当します。
- ‘2024-05-19’: 2024年の第20週に該当します。
- ‘2024-12-31’: 2024年の最終日も第1週に該当します。これは2024年がうるう年であり、52週+2日の構成となり、12月31日が翌年の第1週として扱われるためです。
このように、WEEKOFYEAR
関数を使用することで、日付を基にその年の第何週に該当するかを簡単に取得できます。
日曜始まりにしたい場合
WEEKOFYEAR関数は、通常月曜始まりで週番号が返されます。
日曜始まりの関数は存在しないため、その場合DATE_SUBで日付を一日調整することが有効です。
-- 週番号の取得(日曜日始まり)
SELECT
date,
WEEKOFYEAR(DATE_SUB(date, 1)) AS week_number
FROM sample_data
ここまで読んでいただきありがとうございます。
SQLでは、日付の週変換に限らず様々なケースで疑問を感じるかと思います。
「このようなケースの場合はどのように記述したらよいか、、」
「データサイエンティストになるにはどのように効率的に学習していったらよいか?」
など自己学習に不安がありましたら、以下のスクールのご活用もご検討ください!
SQL参考文献
SQL学び始めの時はこちらの本を参考にしていました。
DBやテーブルの構造から、よく使う関数などがまとめられています。基礎を身につけたい方におススメかと思います。
SQL関連記事
そのほか、SQL関連記事をこちらにまとめておりますのでご参考ください。
> Coffee Tech Blog SQL関連記事
もしIT業界への転職でお困りでしたら、下記サービスのご活用をご検討ください!
私は転職の際にGeeklyを活用させて頂き、ご縁を頂くことができました。
WEEKOFYEARでの日付の週変換まとめ
以上が、日付の週変換の解説になります。
Dailyのデータを週次で集計したい場合などに活用できると思います。週番号が月曜始まりになりますので、DATE_SUBで調整することで開始曜日を調整することができます。
ケースに合わせてご活用いただければと思います!
参考になれば幸いです☕
コメント