0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Tips】時系列順に週を並べたい

Posted at

はじめに

とあるダッシュボードを作っている際、週毎の売上推移を見るため、日付のディメンジョンを「週」だけにしたとき、正しく並ばない問題が発生しました。

▼の例だと、時系列順であれば、「45週から始まり、4週で終わる」並びですが、単純に昇順で並んでしまっています。

この解決方法を見つけたので、記事にまとめました。

image.png

解決方法

年月日の「Year」と「Week」を結合し、その結果を大小比較して並べる。

おそらく最もシンプルな解決法は、「年月日のディメンジョンを入れる」ことだと思います。
image.png

ただ今回は、「週」のディメンジョンのみという要求仕様があったため、解決には少々工夫が必要でした。

① Prep上で、レコード毎に「Year」と「Week」を文字列結合

文字列を結合するときの前提は以下の通りです。

  • 文字列の構造は、[Year]+[Week]で、6桁とする。
  • [Week]が1~9週の場合、結合結果を6桁とするために、Weekの冒頭に'0'を付与する。

この前提に従って、文字列結合を行う計算フィールドを作ります。
image.png

▼2022年の52週は、'202252'となっていますので、正しく結合されていますね。
image.png

② 結合結果を「数値型」に変換する。

大小比較をしたいので、文字列型を「数値型」に変えておきます。
image.png

③ ②を基準として、ORDER BYで昇順に並び替える。

「週」に「年」を付加した6桁の数値に作り変えたので、これを基準で並び替えます。

▼の場合、「週」だけ見ると、前年(2022年)の方が大きいですが、6桁の数値で見ると、当年(2023年)の方が大きいため、正しく時系列順に並んでいます。
image.png

おわりに

いかがでしょうか。もっとシンプルな方法や関数などあれば、ぜひ教えてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?