ビッグデータ時代である。データを様々な可視化し見える化することでビジネスの糸口やなにかの切っ掛けを見出すことも可能になっている昨今である。オープンデータの流れも着実に広がっており、公共機関や学術機関によるデータの公開も増加している。
当然ながら、ビジネスシーンでもCSVなどのデータファイルが日常的に蓄積されていくことになる。前回、サクッとPowerShellからアプリケーションを開くコマンドをカスタマイズしたが、ターミナル上でCSVを手軽に開けるとよりスムーズになる。
Import-CsvコマンドレットでCSV表示
Import-Csvコマンドレット(公式API)を使えば可能になる。
Import-Csv .\sample.csv
表示ををソートするには、Sort-Objectを用いるが、数字を文字列(Sting型)として認識するのでこのままではいただけない。
Import-Csv .\developers.csv | Sort-Object developers
int型に変換して数値としてソートする場合には
Import-Csv .\developers.csv | Sort-Object {[int]$_.developers}
とすると、目的の並びになる。
やはり数字は大きい方からならべたい。降順(大きい→小さい)に並べ替えるには-Descendingを末尾に加える。
Import-Csv .\developers.csv | Sort-Object {[int]$_.developers} -Descending
CSV表示をコマンド化する
先に述べたようにCSVをPowerShellで簡易に開けると利便性がある。しかし、毎回、コマンドレットを2つとパイプを繋げる上記の処理を思い出し/探し出すのは面倒である。コマンド化(csvopen)する方法を考えた。
function csvopen {
Import-Csv .\developers.csv | Sort-Object {[int]$_.developers}
}
ファイル名と列名は毎回異なるので、引数で処理できるようにPowerShellのキーワードparamでパラメーラー化する。
function csvopen {
param(
$A,
$B
)
Import-Csv $A | Sort-Object {[int]$_.$B} -Descending
}
こうしておけば、毎回異なるファイル名、列名であっても引数で入力することで汎用化できる。notepad $PROFILEでプロファイルを開き、.$PROFILEで反映させると
のように動作する。当面はint型の数値でよいのであるが、実際には小数点や金額などの項目をソートする際には、intではなくdoubleやdecimalなどの使用も考慮しなければならないところだ。今回はこれでいいのだ。そう思った。





