This repository has been archived by the owner on Nov 3, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Main.hs
67 lines (60 loc) · 1.68 KB
/
Main.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
{-# LANGUAGE TypeApplications, OverloadedStrings, OverloadedLabels,
TypeOperators, DataKinds, FlexibleContexts #-}
import Labels.Explore
moo1 :: IO ()
moo1 =
runConduitRes $
httpSource "http://chrisdone.com/misc/ontime.csv.zip" responseBody .|
zipEntryConduit "ontime.csv" .|
fromCsvConduit
@("fl_date" := Day, "tail_num" := String)
(set #downcase True csv) .|
dropConduit 10 .|
takeConduit 5 .|
tableSink
moo_write :: IO ()
moo_write =
runConduitRes
(httpSource "http://chrisdone.com/misc/ontime.csv.zip" responseBody .|
zipEntryConduit "ontime.csv" .|
fileSink "ontime.csv")
moo1_1 :: IO ()
moo1_1 =
runConduitRes $
fileSource "ontime.csv" .|
fromCsvConduit
@("distance" := Double)
(set #downcase True csv) .|
sinkConduit
(foldSink
(\table row ->
modify #flights (+ 1) (modify #distance (+ get #distance row) table))
(#flights := (0 :: Int), #distance := 0)) .|
tableSink
moo2 :: IO ()
moo2 =
runConduitRes $
fileSource "ontime.csv" .|
fromCsvConduit
@("fl_date" := Day, "tail_num" := String, "airline_id" := Int, "unique_carrier" := String)
(set #downcase True csv) .|
groupConduit #airline_id .|
explodeConduit .|
projectConduit @("fl_date" := _, "unique_carrier" := _) .|
takeConduit 5 .|
tableSink
moo3 :: IO ()
moo3 =
runConduitRes $
fileSource "ontime.csv" .|
fromCsvConduit
@("fl_date" := Day, "tail_num" := String, "airline_id" := Int, "unique_carrier" := String)
(set #downcase True csv) .|
groupConduit #airline_id .|
explodeConduit .|
dropConduit 10 .|
projectConduit @("fl_date" := _, "tail_num" := _) .|
takeConduit 5 .|
tableSink
main :: IO ()
main = moo1_1