-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathmain.go
62 lines (55 loc) · 1.23 KB
/
main.go
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
// filtering example illustrates how to create a filter component.
// It takes the basic example adding a "Lazy" filter definition
package main
import (
"log"
"strings"
"github.com/AdRoll/baker"
"github.com/AdRoll/baker/input"
"github.com/AdRoll/baker/output"
)
// Some example fields
const (
Timestamp baker.FieldIndex = 0
Source baker.FieldIndex = 1
Target baker.FieldIndex = 2
)
var fields = map[string]baker.FieldIndex{
"timestamp": Timestamp,
"source": Source,
"target": Target,
}
func fieldByName(key string) (baker.FieldIndex, bool) {
idx, ok := fields[key]
return idx, ok
}
func main() {
toml := `
[input]
name = "List"
[input.config]
files=["./testdata/list-clause-files-comma-sep.input.csv.zst"]
[[filter]]
name = "LazyFilter"
[filter.config]
stakhanovite = true
[output]
name = "FileWriter"
procs=1
[output.config]
PathString="./_out/list-clause-files-comma-sep.output.csv.gz"
`
c := baker.Components{
Inputs: input.All,
Filters: []baker.FilterDesc{LazyFilterDesc},
Outputs: output.All,
FieldByName: fieldByName,
}
cfg, err := baker.NewConfigFromToml(strings.NewReader(toml), c)
if err != nil {
log.Fatal(err)
}
if err := baker.Main(cfg); err != nil {
log.Fatal(err)
}
}