20
17

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 5 years have passed since last update.

redashのSQLでよく使うツール

Last updated at Posted at 2018-09-12

#目的
エンジニア?アナリスト?歴2ヶ月目の新卒社員が業務をやっていく中で最近学んだこと、これよく使うなあということを簡単にまとめたもの(今回はredash内でPostgreSQLを使ってみた編)。備忘録。

#検索・データの指定をできるようにする

  • データを実際に触る際に簡単に見たいデータを抽出できるように、期間や条件をクエリーの手直しをせず検索欄をredash内で作ってもらう。

Queryはこんな感じで書く↓

##期間を指定する場合

Select 出力するカラム from テーブル
where 絞り込む期間のカラム名 >= {{from}}
  and 絞り込む期間のカラム名 <= {{to}}

今回は{{From}}で検索開始日、{{To}}で検索終了日を設定した。ほかに名前を設定したい場合は、このクエリーのfrom、toの箇所を設定したい名前にすればOK(つまり、{{}}で囲めばOK。また、名前についてはこのあとにも変更することは可能)。クエリーを書くと、こんな感じに出力結果欄に画面が表示される。

1536722480420.jpg
↑この各項目の歯車のところを押すと・・・

1536722518823.jpg
↑こんな画面が出てくるので、ここでTitleを設定したい名前に直し、TypeをDateにすると・・・

1536723818411.jpg
↑こんな風に画面が変われば成功!!

ちなみに、このTypeは全部で6種類ある。が、現時点で使っているのはDate(年月日のみの指定)と、Textくらい。いつかもっと使うのかな・・・

##期間データが時刻まで指定されているが、指定したいのは年月日のみの場合

時刻を終日にしておくならば、この書き方でOK。終わりについては時刻まで指定したい!!というときは、終わりのTypeを'Date and Time'、またはそのデータにあわせて'Date and Time(with seconds)'に設定すればOK

WHERE 絞り込む期間のカラム名 >= '{{ 開始日 }} 00:00:00'
  AND 絞り込む期間のカラム名 <= '{{ 終了日 }} 23:59:59'

##カラムのTextを指定する場合

Select 指定したい(絞り込みたい)カラム as 'カラム名:multi-filter'
  from テーブル
          ・・・

指定するカラムの名前をas以降で指定する際に後ろに':multi-filter'をつけると、出力画面に検索箇所が出てくる(モザイクのところにはasで指定したカラム名が入っています)。

1536725931541.jpg

この「Select value for ・・・」を押すと、下のような画面が出てくるので、ここで指定/絞り込みしたいものを選択すると、指定/絞り込みしたもののみが出力される。

1536725958231.jpg

これ、他部署のエンジニアとか、開発系を触らない人にはすごい重宝がられます。欲しそうだけどはっきりとはいってもらっていないときにさらっとこういうことをしておくと喜んでもらえるのでオススメ。

データをひとつのカラムにまとめて表示したい

ベタなやり方ともっと手軽にできるやり方をのっけとく。よくまとめたくなるのは、名前の姓(苗字)と名(下の名前)。

##ベタ編
concat関数を使用する。が、3つ以上のデータをまとめたいときにはちょっと書き方に注意が必要(入れ子にして書かないといけない)。

-- 基本の形
Select concat('カラム名1', 'カラム名2') as まとめた総称
  from テーブル名
     ・・・

-- 入れ子にして3つ以上のデータをまとめる
Select concat('カラム名1', concat('カラム名2', 'カラム名3')) as まとめた総称
  from テーブル名
     ・・・
 

入れ子にすると、クエリーがごちゃごちゃして見づらいし、余計なミスを招きかねない。なので、||(パイプ)を使用すると入れ子にしなくても済むし、書くのも(誤差程度とはいえ)楽チンに。

##簡単にやる編
||(パイプ)を使用する。

Select 'カラム名1' || 'カラム名2' || 'カラム名3' as まとめた総称
  from テーブル名
     ・・・

||(パイプ)にしてしまえば、入れ子にしないでただ順番にひたすら並べてしまえば、いくらでもくっつけてしまうことができる。個人的にはconcat関数は使わないで、こっちで書いてるかなぁ

##注意点
データをまとめたときは、きちんとまとめたあとの名前をasで定義づけておかないとほかの人が見たときももちろん、自分自身が見返したときによくわからなくなることもあるので要注意。要注意!!!

#感想
簡単に(というより、テキトーにだけど)自分が学んだことを人に見えるかたちで文章にしてまとめるって難しい。
これをいろんな感覚(聴覚とか視覚とか)で工夫を凝らして面白くまとめて伝えるようにするユーチューバーってすごいんだなぁっていうまったく関係ない感想。とはいえ、自分の学んだことをまとめるって自分の知識の整理になった。
よかったら高評価、フォローよろしくね!!!!←
おしまい。またまとめまーす

20
17
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
20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?