1
2

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

PowerShellで表結合っぽいことをする

Posted at

SQLでJOINを使って表結合するのは便利ですが、そのためにデータベースを構築するのも面倒なので、ハッシュテーブルで簡易に実装してみます。

まず、こんな感じのCSVを用意します。

date_moncster.csv
date,monster
2021-07-01,ピカチュウ
2021-07-02,イーブイ
2021-07-02,ピカチュウ
2021-07-03,カモネギ

それに対し、こんな感じのCSVで取得した値を結合します。

monster_value
monster,value
ピカチュウ,100
イーブイ,10

コードはこちら。

$monster_value = Import-Csv ".\csv_sample\monster_value.csv" -Encoding UTF8

$monster_hash = @{}
$monster_value | ForEach-Object {
    $monster_hash.add($_.monster,$_.value)
}
Write-Output $monster_hash['ピカチュウ']

$date_monster = Import-Csv ".\csv_sample\date_monster.csv" -Encoding UTF8

$date_monster | ForEach-Object {
    if ($monster_hash[$_.monster]){
        Write-Host "$($_.date),$($_.monster),$($monster_hash[$_.monster])"
    }
}

monster_hashというやつが名前の通りハッシュテーブルです。これにモンスターごとの値を格納しておき、date_monster.csvから1行ごとに読み込みながら結合します。

こんな出力になります。

2021-07-01,ピカチュウ,100
2021-07-02,イーブイ,10
2021-07-02,ピカチュウ,100

カモネギの行が欲しい場合(SQLでいうところのOUTER JOIN)はifを取っちゃえばOKです。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?