embulk-output-bigquery 0.7.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3f1f3663f59942ba67caf8d3aa2785df824aaef5cc09de0bdcbadadd3642d81
4
- data.tar.gz: 389b3111be5db9924f67fd2ce3d5d2c0afbe46d12c44c7df6ee5c95e04269c79
3
+ metadata.gz: 5162f2799cc8becf48b49080286afae0a992501f0bb2344f4c12f96bac41f750
4
+ data.tar.gz: b955eca9d5a75905f85a5e68e7bc5b40e01801e63ee0cd9f89c83b1dfbb2fb21
5
5
  SHA512:
6
- metadata.gz: 5136502bb9003aa85f85c9c5d3b5c826f218476a7604f7d201160bf4931936f8f02b00fb77ea286b9ae8fc69b007b122a1f7f0707cec4a7b7d030d1d1771ce86
7
- data.tar.gz: c16e57af1121e30e0bcfa187311d9f7652768a2bda79354202ce7bac92e9e5bf3bc33cdb2fbb95696f03653fa830f844f95bd01e200cb0b7d9732f2a3b989bad
6
+ metadata.gz: 18cfcea89a9978f36cd7cd0c2a227692f2e03e0dfcb93f2a7dbc1cc8c26ccb36bc7d8c9a22bfc9d2c740ec8b09522ea904ccb6ebf92d54d57b18aebb5a6b93c6
7
+ data.tar.gz: 594e078d32a74a8cce63636dcc402354d87856f60ec268d20fd2030a9413472e203f2df2b43bec2c6ab3d8755c0b7b943d85e58a8c614bf87d0d9d6a15484a54
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 0.7.3 - 2024-08-28
2
+ * [enhancement] Add TIME type conversion to string converter (Thanks to p-eye)
3
+
1
4
  ## 0.7.2 - 2024-07-21
2
5
  * [maintenance] Fix GitHub Actions #166
3
6
  * [maintenance] Fix gcs_client in order to load data using gcs_bucket parameter (Thanks to kashira202111) #164
data/README.md CHANGED
@@ -325,8 +325,8 @@ Column options are used to aid guessing BigQuery schema, or to define conversion
325
325
  - boolean: `BOOLEAN`, `STRING` (default: `BOOLEAN`)
326
326
  - long: `BOOLEAN`, `INTEGER`, `FLOAT`, `STRING`, `TIMESTAMP` (default: `INTEGER`)
327
327
  - double: `INTEGER`, `FLOAT`, `STRING`, `TIMESTAMP` (default: `FLOAT`)
328
- - string: `BOOLEAN`, `INTEGER`, `FLOAT`, `STRING`, `TIMESTAMP`, `DATETIME`, `DATE`, `RECORD` (default: `STRING`)
329
- - timestamp: `INTEGER`, `FLOAT`, `STRING`, `TIMESTAMP`, `DATETIME`, `DATE` (default: `TIMESTAMP`)
328
+ - string: `BOOLEAN`, `INTEGER`, `FLOAT`, `STRING`, `TIME`, `TIMESTAMP`, `DATETIME`, `DATE`, `RECORD` (default: `STRING`)
329
+ - timestamp: `INTEGER`, `FLOAT`, `STRING`, `TIME`, `TIMESTAMP`, `DATETIME`, `DATE` (default: `TIMESTAMP`)
330
330
  - json: `STRING`, `RECORD` (default: `STRING`)
331
331
  - **mode**: BigQuery mode such as `NULLABLE`, `REQUIRED`, and `REPEATED` (string, default: `NULLABLE`)
332
332
  - **fields**: Describes the nested schema fields if the type property is set to RECORD. Please note that this is **required** for `RECORD` column.
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "embulk-output-bigquery"
3
- spec.version = "0.7.2"
3
+ spec.version = "0.7.3"
4
4
  spec.authors = ["Satoshi Akama", "Naotoshi Seo"]
5
5
  spec.summary = "Google BigQuery output plugin for Embulk"
6
6
  spec.description = "Embulk plugin that insert records to Google BigQuery."
@@ -224,6 +224,14 @@ module Embulk
224
224
  val # Users must care of BQ timestamp format
225
225
  }
226
226
  end
227
+ when 'TIME'
228
+ # TimeWithZone doesn't affect any change to the time value
229
+ Proc.new {|val|
230
+ next nil if val.nil?
231
+ with_typecast_error(val) do |val|
232
+ TimeWithZone.set_zone_offset(Time.parse(val), zone_offset).strftime("%H:%M:%S.%6N")
233
+ end
234
+ }
227
235
  when 'RECORD'
228
236
  Proc.new {|val|
229
237
  next nil if val.nil?
@@ -271,6 +279,11 @@ module Embulk
271
279
  next nil if val.nil?
272
280
  val.localtime(zone_offset).strftime("%Y-%m-%d %H:%M:%S.%6N")
273
281
  }
282
+ when 'TIME'
283
+ Proc.new {|val|
284
+ next nil if val.nil?
285
+ val.localtime(zone_offset).strftime("%H:%M:%S.%6N")
286
+ }
274
287
  else
275
288
  raise NotSupportedType, "cannot take column type #{type} for timestamp column"
276
289
  end
@@ -262,6 +262,23 @@ module Embulk
262
262
  assert_equal "2016-02-26 00:00:00", converter.call("2016-02-26 00:00:00")
263
263
  end
264
264
 
265
+ def test_time
266
+ converter = ValueConverterFactory.new(SCHEMA_TYPE, 'TIME').create_converter
267
+ assert_equal nil, converter.call(nil)
268
+ assert_equal "00:03:22.000000", converter.call("00:03:22")
269
+ assert_equal "15:22:00.000000", converter.call("3:22 PM")
270
+ assert_equal "03:22:00.000000", converter.call("3:22 AM")
271
+ assert_equal "00:00:00.000000", converter.call("2016-02-26 00:00:00")
272
+
273
+ # TimeWithZone doesn't affect any change to the time value
274
+ converter = ValueConverterFactory.new(
275
+ SCHEMA_TYPE, 'TIME', timezone: 'Asia/Tokyo'
276
+ ).create_converter
277
+ assert_equal "15:00:01.000000", converter.call("15:00:01")
278
+
279
+ assert_raise { converter.call('foo') }
280
+ end
281
+
265
282
  def test_record
266
283
  converter = ValueConverterFactory.new(SCHEMA_TYPE, 'RECORD').create_converter
267
284
  assert_equal({'foo'=>'foo'}, converter.call(%Q[{"foo":"foo"}]))
@@ -350,6 +367,24 @@ module Embulk
350
367
  assert_raise { converter.call('foo') }
351
368
  end
352
369
 
370
+ def test_time
371
+ converter = ValueConverterFactory.new(SCHEMA_TYPE, 'TIME').create_converter
372
+ assert_equal nil, converter.call(nil)
373
+ timestamp = Time.parse("2016-02-26 00:00:00.500000 +00:00")
374
+ expected = "00:00:00.500000"
375
+ assert_equal expected, converter.call(timestamp)
376
+
377
+ converter = ValueConverterFactory.new(
378
+ SCHEMA_TYPE, 'TIME', timezone: 'Asia/Tokyo'
379
+ ).create_converter
380
+ assert_equal nil, converter.call(nil)
381
+ timestamp = Time.parse("2016-02-25 15:00:00.500000 +00:00")
382
+ expected = "00:00:00.500000"
383
+ assert_equal expected, converter.call(timestamp)
384
+
385
+ assert_raise { converter.call('foo') }
386
+ end
387
+
353
388
  def test_record
354
389
  assert_raise { ValueConverterFactory.new(SCHEMA_TYPE, 'RECORD').create_converter }
355
390
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-bigquery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Satoshi Akama
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-07-21 00:00:00.000000000 Z
12
+ date: 2024-08-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-apis-storage_v1