Rails ActiveRecordで特定のカラムのユニークな配列を取得する
例えば created_on
に日付が入っているこんなデータ
Post.last Post Load (13.1ms) SELECT "posts".* FROM "posts" => #<Post id: 1, user_id: 1, created_on: "2020-11-02">
pluck
を使うだけだと同じ日付が入ってしまう
Post.pluck(:created_on) (2.7ms) SELECT "posts"."created_on" FROM "posts" => [Mon, 02 Nov 2020, Mon, 02 Nov 2020, ...]
uniq
すると一意の日付だけになる
Post.pluck(:created_on).uniq (2.7ms) SELECT "posts"."created_on" FROM "posts" => [Mon, 02 Nov 2020, Tue, 03 Nov 2020, Sat, 26 Sep 2020,
このままでもいいが posts
のレコード数が多すぎるとその分の配列を uniq
することになるのでアプリケーション側に負荷がかかる可能性があるのでDB側にやらせる
select
distinct
を使う
Post.select(:created_on).distinct.pluck(:created_on) (2.0ms) SELECT DISTINCT "posts"."created_on" FROM "posts" => [Tue, 01 Sep 2020, Wed, 02 Sep 2020, Thu, 03 Sep 2020, Fri, 04 Sep 2020, ...
これでハッピー
Rails test環境のDBを初期化する
RAILS_ENV
で test
を指定する
bundle exec rails db:migrate:reset RAILS_ENV=test
削除、作成、migrateを個別にする
bundle exec rails db:drop RAILS_ENV=test bundle exec rails db:create RAILS_ENV=test bundle exec rails db:migrate RAILS_ENV=test
Redash全体が重い遅いときは自動更新頻度が原因かも
タイトルママなんですが
Redashクエリではなくサイト自体の読み込みが遅く困っていました。
Refresh Schedule
に Every 5 minutes
が増えていることに気づき、
更新頻度を減らしたところ軽くなりRedashに平和が訪れました。
自動更新は計画的に。
また、古いクエリが永遠に自動更新されていることもあるので無駄なクエリの掃除や自動更新の終了期限を設定するのをお忘れなく👌
スプレッドシートでEOMONTHを使い月初、月末を取得する
EOMONTH
関数を使う
たぶん end of month
だろう
関数リストから月末で検索しても出なかったけど「最終日」って言うのか…
起算日から指定した月数だけ前または後ろの月の最終日の日付を返します。 EOMONTH(開始日, 月数)
月末
月数に0を渡せば当月末になる
=EOMONTH(日付, 0)
月初
前月末+1で当月初になる
=EOMONTH(日付, -1) + 1
余談
時々、1ヶ月・1日毎や連番を作ろうとして
=隣のセル+1
とやっているのを見るけどその場合は系列リストの自動生成(範囲選択して伸ばすやつ)をしようね 法則があれば週次の日付も出せるし便利
1/7, 1/14 → 引き伸ばすと1週間毎の日付が出る
これとかわかりやすい