Slide 10
Slide 10 text
Flowの記述例 (CSVの集計)
result =
filename
|> File.stream!
# データクレンジング
|> Flow.from_enumerable()
|> Flow.map( &( String.replace( &1, ",", "\t" ) ) ) #
①CSV→
|> String.replace( "\r\n", "\n" ) #
②CRL
|> String.replace( "\"", "" ) ) ) # ③ダブ
# 集計
|> Flow.map( &( &1 |> String.split( "\t" ) ) ) # ④タブで分割
|> Flow.map( &Enum.at( &1, 2 - 1 ) ) #
⑤2番⽬の項⽬を抽出
|> Flow.partition
|> Flow.reduce(
fn -> %{} end, fn( name, acc ) # ⑥同値の出現数を集計
-> Map.update( acc, name, 1, &( &1 + 1 ) ) end )
|> Enum.sort( &( elem( &1, 1 ) > elem( &2, 1 ) ) ) # ⑦多い順で