はじめに
以下のエントリの続き。
前回は q コマンドの導入とテストデータ作成( 年次別にみた出生数・率(人口千対)・出生性比及び合計特殊出生率 )まで。
今回は実際に q コマンドでデータを操作してみます。
検証環境
| |
単純なデータの出力
- CSV ファイルを DB のテーブルと見直したクエリを実行することができます。
from句に CSV ファイルを指定- 今回は各列がカンマ ( , ) で区切られているので、デリミタとして , を指定します。
| |
ダウンロードしてきたデータの最終列がよくわからない。なぜドット。。。 もともとのデータの 1〜9 行目を見る限り、列情報の意味は左から以下のようになっているようです。
- 西暦
- 総数
- 男
- 女
- 出生率
- 性比
- ?
必要なカラム情報のみを出力 ( select cN )
7 列目がよくわからないので、除外したい。
q コマンドでは、各列名は暗黙的に c1 , c2 , c3 … のように cN という名前がつけられます。
| |
見やすくなった。
10 件を表示 ( limit )
100 年間のデータが出力されるので、コンソールが見切れる。 10 件だけを表示させてみます。
SQL の limit が使える。
| |
出生数上位 10 件を表示 ( order by )
出生数( 2 列目 )が多い年を上位 10 件表示させてみます。
SQL の order by が使えます。
| |
意外にも第二次世界大戦前後の出生率が高いですね。
逆に下位 10 件を表示してみます。
| |
最近はめっきり少子化。
データの集計値を表示 ( count / sum / avg )
データは結局何件あったっけ?データ件数を確認してみます。
| |
出生率( 5 列目 )の最大、最小を表示してみます。
| |
最大と最小の値が大きく異なりますね。
平均も出せる。
| |
データの加工( substr )
10 年ごとの出生数の合計を表示してみます。
| |
わかりやすいカラム名を指定する( alias )
ヘッダー行があれば、ヘッダー行の情報をカラム名として指定できます。
| |
データの絞り込み( where )
2005 年以降のデータのみを確認することができます。
| |
(おまけ)標準入力を食わせる
ファイルではなく標準入力からデータを食わせることもできます。
| |
(おまけ)表示データを整形して表示
カンマ区切りのままだと数値の桁数によって、データが不揃いになり見にくいときがあります。
-b オプションを付与すると、多少きれいに調整し出力してくれます。
| |
出力形式をタブ区切りに変更すると更に見やすくなります。
-T オプションを付与します。
| |
(おまけ)カンマを含むデータ、ダブルクォートを含むデータの取扱い
カンマを含んだデータの取り扱いにも触れておきましょう。
CSV フォーマットでは、カンマ (,) やダブルクォーテーション(")を含むデータを扱うときには注意が必要です。
- カンマ (
,)を含んだ列はダブルクォート(")で囲む必要があります - ダブルクォーテーション(
")を含んだ列はダブルクォートを連続で2つ("")記述する必要があります
上記のようなデータを q コマンドでは正しく扱うことができるでしょうか?
試してみます。
| |
カンマを含んだデータも正しく取り扱うことができました。
不要なダブルクォートを除外し、実際のデータを確認したい場合には -W none オプションを付与します。
| |
ひとこと
CSV操作機能だけでも便利ですが、SQLで操作できるという素晴らしさ。