Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
12
Help us understand the problem. What is going on with this article?
@icchy_sh33p

redashのSQLでよく使うツール

More than 1 year has passed since last update.

目的

エンジニア?アナリスト?歴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で定義づけておかないとほかの人が見たときももちろん、自分自身が見返したときによくわからなくなることもあるので要注意。要注意!!!

感想

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

12
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
12
Help us understand the problem. What is going on with this article?