embulk-filter-to_json 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a2d6613b30db7bf15e431eaa828fa6266548b09
|
4
|
+
data.tar.gz: e4f4bdc55bca27448165e800a3e661c63bf21f00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63edc8f69fc088734834d8672192c30fb44bb3cb6107eacb82a918fe2b2983e3156be8b5c0cd57fca0cb2d3898fcc615521647ee64ead6467ab6e7d3119e35f6
|
7
|
+
data.tar.gz: f104fe440ab7d1b46579d22c3a93a51abd906c9af0534a592e568d6bed5f146cea7b5412efe4c17534f094309a87f664ae609c279dfb43225580291e0b650815
|
data/CHENGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
0.0.4 (2016-01-25)
|
2
|
+
==================
|
3
|
+
- incompatible change: `timezone` / `format` options removed
|
4
|
+
- add: `default_timezone` / `default_format` options
|
5
|
+
|
6
|
+
0.0.3 (2016-01-25)
|
7
|
+
==================
|
8
|
+
- add: support timezone and timestamp format options
|
9
|
+
|
1
10
|
0.0.2 (2016-01-23)
|
2
11
|
==================
|
3
12
|
- incompatible change: option `column_name` is removed
|
data/README.md
CHANGED
@@ -12,6 +12,8 @@ Convert a record to jsonl.
|
|
12
12
|
- **name** (string, default: `"json_payload"`)
|
13
13
|
- **type** string or json (string, default: `"string"`)
|
14
14
|
- **skip_if_null**: input column name list (array of string, default: `[]`)
|
15
|
+
- **default_timezone**: option for timestamp column, specify the timezone of timestamp value (string, default is `UTC`)
|
16
|
+
- **default_format**: option for timestamp column, specify the format of timestamp value (string, default is `%Y-%m-%d %H:%M:%S.%N %z`)
|
15
17
|
|
16
18
|
## Example
|
17
19
|
|
@@ -22,6 +24,7 @@ filters:
|
|
22
24
|
name: test
|
23
25
|
type: string
|
24
26
|
skip_if_null: [id]
|
27
|
+
timezone: Asia/Tokyo
|
25
28
|
```
|
26
29
|
|
27
30
|
## Run Example
|
data/build.gradle
CHANGED
data/example/config.yml
CHANGED
@@ -2,7 +2,6 @@ package org.embulk.filter.to_json;
|
|
2
2
|
|
3
3
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
4
4
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
5
|
-
import com.google.common.base.Optional;
|
6
5
|
import com.google.common.collect.Lists;
|
7
6
|
import com.google.common.collect.Maps;
|
8
7
|
import org.embulk.config.ConfigException;
|
@@ -10,8 +9,8 @@ import org.embulk.spi.Column;
|
|
10
9
|
import org.embulk.spi.ColumnVisitor;
|
11
10
|
import org.embulk.spi.PageBuilder;
|
12
11
|
import org.embulk.spi.PageReader;
|
13
|
-
import org.embulk.spi.Schema;
|
14
12
|
import org.embulk.spi.json.JsonParser;
|
13
|
+
import org.embulk.spi.time.TimestampFormatter;
|
15
14
|
import org.embulk.spi.type.Types;
|
16
15
|
|
17
16
|
import java.io.IOException;
|
@@ -107,15 +106,17 @@ public class ColumnVisitorToJsonImpl
|
|
107
106
|
private final Map<String, Object> map;
|
108
107
|
private final PageReader pageReader;
|
109
108
|
private final ColumnSetter columnSetter;
|
109
|
+
private final TimestampFormatter timestampFormatter;
|
110
110
|
private List<String> skipColumnsIfNull = Lists.newArrayList();
|
111
111
|
private boolean skipRecordFlag = false;
|
112
112
|
|
113
113
|
ColumnVisitorToJsonImpl(PageReader pageReader, PageBuilder pageBuilder,
|
114
|
-
Column outputColumn, List<String> skipColumnsIfNull)
|
114
|
+
Column outputColumn, TimestampFormatter timestampFormatter, List<String> skipColumnsIfNull)
|
115
115
|
{
|
116
116
|
this.map = Maps.newHashMap();
|
117
117
|
this.pageReader = pageReader;
|
118
118
|
this.columnSetter = new ColumnSetter(pageBuilder, outputColumn);
|
119
|
+
this.timestampFormatter = timestampFormatter;
|
119
120
|
this.skipColumnsIfNull = skipColumnsIfNull;
|
120
121
|
}
|
121
122
|
|
@@ -171,7 +172,8 @@ public class ColumnVisitorToJsonImpl
|
|
171
172
|
putNull(column);
|
172
173
|
return;
|
173
174
|
}
|
174
|
-
|
175
|
+
String value = timestampFormatter.format(pageReader.getTimestamp(column));
|
176
|
+
map.put(column.getName(), value);
|
175
177
|
}
|
176
178
|
|
177
179
|
@Override
|
@@ -2,11 +2,10 @@ package org.embulk.filter.to_json;
|
|
2
2
|
|
3
3
|
import com.google.common.base.Optional;
|
4
4
|
import com.google.common.collect.ImmutableList;
|
5
|
-
import com.google.common.collect.Lists;
|
6
|
-
import com.google.common.collect.Maps;
|
7
5
|
import org.embulk.config.Config;
|
8
6
|
import org.embulk.config.ConfigDefault;
|
9
7
|
import org.embulk.config.ConfigException;
|
8
|
+
import org.embulk.config.ConfigInject;
|
10
9
|
import org.embulk.config.ConfigSource;
|
11
10
|
import org.embulk.config.Task;
|
12
11
|
import org.embulk.config.TaskSource;
|
@@ -19,12 +18,14 @@ import org.embulk.spi.PageBuilder;
|
|
19
18
|
import org.embulk.spi.PageOutput;
|
20
19
|
import org.embulk.spi.PageReader;
|
21
20
|
import org.embulk.spi.Schema;
|
21
|
+
import org.embulk.spi.time.TimestampFormatter;
|
22
22
|
import org.embulk.spi.type.Type;
|
23
23
|
import org.embulk.spi.type.Types;
|
24
|
+
import org.joda.time.DateTimeZone;
|
25
|
+
import org.jruby.embed.ScriptingContainer;
|
24
26
|
import org.slf4j.Logger;
|
25
27
|
|
26
28
|
import java.util.List;
|
27
|
-
import java.util.Map;
|
28
29
|
|
29
30
|
public class ToJsonFilterPlugin
|
30
31
|
implements FilterPlugin
|
@@ -45,6 +46,17 @@ public class ToJsonFilterPlugin
|
|
45
46
|
@Config("skip_if_null")
|
46
47
|
@ConfigDefault("[]")
|
47
48
|
List<String> getColumnNamesSkipIfNull();
|
49
|
+
|
50
|
+
@Config("default_timezone")
|
51
|
+
@ConfigDefault("\"UTC\"")
|
52
|
+
String getDefaultTimezone();
|
53
|
+
|
54
|
+
@Config("default_format")
|
55
|
+
@ConfigDefault("\"%Y-%m-%d %H:%M:%S.%N %z\"")
|
56
|
+
String getDefaultFormat();
|
57
|
+
|
58
|
+
@ConfigInject
|
59
|
+
ScriptingContainer getJRuby();
|
48
60
|
}
|
49
61
|
|
50
62
|
public interface JsonColumn
|
@@ -117,12 +129,16 @@ public class ToJsonFilterPlugin
|
|
117
129
|
final Schema outputSchema, final PageOutput output)
|
118
130
|
{
|
119
131
|
final PluginTask task = taskSource.loadTask(PluginTask.class);
|
132
|
+
final DateTimeZone timezone = DateTimeZone.forID(task.getDefaultTimezone());
|
133
|
+
final TimestampFormatter timestampFormatter = new TimestampFormatter(task.getJRuby(), task.getDefaultFormat(), timezone);
|
134
|
+
final List<String> columnNamesSkipIfNull = task.getColumnNamesSkipIfNull();
|
135
|
+
|
120
136
|
return new PageOutput()
|
121
137
|
{
|
122
138
|
private final PageReader pageReader = new PageReader(inputSchema);
|
123
139
|
private final PageBuilder pageBuilder = new PageBuilder(Exec.getBufferAllocator(), outputSchema, output);
|
124
140
|
private final ColumnVisitorToJsonImpl visitor = new ColumnVisitorToJsonImpl(pageReader, pageBuilder,
|
125
|
-
outputSchema.getColumn(JSON_COLUMN_INDEX),
|
141
|
+
outputSchema.getColumn(JSON_COLUMN_INDEX), timestampFormatter, columnNamesSkipIfNull);
|
126
142
|
|
127
143
|
@Override
|
128
144
|
public void add(Page page)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-filter-to_json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Civitaspo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -62,7 +62,7 @@ files:
|
|
62
62
|
- src/main/java/org/embulk/filter/to_json/ColumnVisitorToJsonImpl.java
|
63
63
|
- src/main/java/org/embulk/filter/to_json/ToJsonFilterPlugin.java
|
64
64
|
- src/test/java/org/embulk/filter/to_json/TestToJsonFilterPlugin.java
|
65
|
-
- classpath/embulk-filter-to_json-0.0.
|
65
|
+
- classpath/embulk-filter-to_json-0.0.4.jar
|
66
66
|
homepage: https://github.com/civitaspo/embulk-filter-to_json
|
67
67
|
licenses:
|
68
68
|
- MIT
|