タグ別アーカイブ: Windows PowerShell

Windows PowerShellでデータ加工する

このアーティクルは以前、公開したものの改訂版になります。

データを分析する場合、重要な工程にデータ加工があります。データ加工によって分析しやすい形にすることで、身も蓋もありませんが特別な統計的アプローチに凝るよりも精度に良い影響を与えることは少なくありません。一般にデータ加工においてコンパイルの必要な言語を使うことは少なく、またスクリプトによって自動化を進める必要もあります。

Windows PowerShellはADO.NETによるDB接続やDecimalでの演算、正規表現などデータ加工に必要なツールを一通り備えていると考えています。また、Windows Server 2008以降ではWindows PowerShellはWidows OSに標準で含まれているためソフトウェアのインストールに煩雑な手続きが必要な現場でも使えるのではないかという考えもあります。  データ加工で考えられる代表的なタスクを纏めてみます。

ADO.NETを参照する
[System.Reflection.Assembly]::LoadWithPartialName(“System.Data”)
SQL Serverに接続する
$conn = New-Object System.Data.SqlClient.SqlConnection <接続文字列> $conn.Open()
SQL文を実行する
$sqlcmd = $conn.CreateCommand() $sqlcmd.CommandText = “SELECT 1” $r = $sqlcmd.ExecuteScalar()
先頭一文字を取りだす正規表現オブジェクトを生成する
$re = New-Object System.Text.RegularExpressions.Regex “(.)(.*)”
CSVファイルを読みだすためにTextFieldParserを生成する
[System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.VisualBasic”) $tfp = New-Object Microsoft.VisualBasic.FileIO.TextFieldParser <ファイル名>

ちなみに、Windows PowerShellにはコレクションを繰り返す方法にForEach-Objectとforeach文があるが、データ加工にはForEach-Objectの方が適すると思われる。これは、コレクションが展開されてそれを繰り返すかイテレータで逐次取得するかが絡んでいるがこれについてはいずれ検証したい。