embulk-output-bigquery 0.7.0 → 0.7.2

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
  SHA256:
3
- metadata.gz: 36a45d63bf6d79411d67ef26d736e3a55035220b92923f208c8e08c7af5aeeae
4
- data.tar.gz: 3be9cdc0cfd8c05cc7d6f427ba6aa9a4091220c8eb5b4cef8786cde8d86a86bd
3
+ metadata.gz: b3f1f3663f59942ba67caf8d3aa2785df824aaef5cc09de0bdcbadadd3642d81
4
+ data.tar.gz: 389b3111be5db9924f67fd2ce3d5d2c0afbe46d12c44c7df6ee5c95e04269c79
5
5
  SHA512:
6
- metadata.gz: a112e890334fa11d95ebfa40719654f7c6a78ea3fcda19edc141060f68516b748353ca76c2f1e35d1b2ea6ba9aec852f6279f91d0d57879387786465e8651d03
7
- data.tar.gz: 776ad5a340e420874b5ff9daa2860797fe9a656ce2f8fc3585ab4aff8d671f2725628803cacccfe54c10a68acefe956f73aa3b717a243aebd1566bf68ab7068f
6
+ metadata.gz: 5136502bb9003aa85f85c9c5d3b5c826f218476a7604f7d201160bf4931936f8f02b00fb77ea286b9ae8fc69b007b122a1f7f0707cec4a7b7d030d1d1771ce86
7
+ data.tar.gz: c16e57af1121e30e0bcfa187311d9f7652768a2bda79354202ce7bac92e9e5bf3bc33cdb2fbb95696f03653fa830f844f95bd01e200cb0b7d9732f2a3b989bad
@@ -9,34 +9,25 @@ jobs:
9
9
  strategy:
10
10
  matrix:
11
11
  jruby_version:
12
- - 9.3.10.0
13
- - 9.4.2.0
12
+ - 9.3.15.0
13
+ - 9.4.8.0
14
14
  fail-fast: false
15
15
  steps:
16
- - uses: actions/checkout@v3
16
+ - uses: actions/checkout@v4
17
17
  - name: Set up OpenJDK 8
18
- uses: actions/setup-java@v3
18
+ uses: actions/setup-java@v4
19
19
  with:
20
20
  java-version: 8
21
21
  distribution: "temurin"
22
- - uses: ruby/setup-ruby@v1
23
- with:
24
- ruby-version: 'jruby-${{ matrix.jruby_version }}'
25
- bundler-cache: true
26
- - name: show ruby version
27
- run: ruby -v
28
- - name: bundle install
29
- run: bundle install
22
+ - name: download jruby
23
+ run: "curl -L -o jruby.jar https://repo1.maven.org/maven2/org/jruby/jruby-complete/${{ matrix.jruby_version }}/jruby-complete-${{ matrix.jruby_version }}.jar"
30
24
  #
31
- # This step avoids the following error in the JRuby 9.4 test.
25
+ # For avoiding permission denied. install gems into `gems` directory
32
26
  #
33
- # Gem::LoadError: You have already activated rake 13.0.6,
34
- # but your Gemfile requires rake 13.1.0. Prepending
35
- # `bundle exec` to your command may solve this.
36
- #
37
- - name: install rake 13.1.0
38
- run: gem install rake -v 13.1.0
27
+ - name: bundle install
28
+ run: "env GEM_HOME=gems java -jar jruby.jar -S bundle install"
29
+
39
30
  - name: install embulk.jar
40
- run: "curl -L -o embulk.jar https://github.com/embulk/embulk/releases/download/v0.10.49/embulk-0.10.49.jar"
31
+ run: "curl -L -o embulk.jar https://github.com/embulk/embulk/releases/download/v0.11.4/embulk-0.11.4.jar"
41
32
  - name: rake test
42
- run: bundle exec env RUBYOPT="-r ./embulk.jar" rake test
33
+ run: 'env GEM_HOME=gems RUBYOPT="-r ./embulk.jar -r rubygems" java -jar jruby.jar -S bundle exec rake test'
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## 0.7.2 - 2024-07-21
2
+ * [maintenance] Fix GitHub Actions #166
3
+ * [maintenance] Fix gcs_client in order to load data using gcs_bucket parameter (Thanks to kashira202111) #164
4
+ * [maintenance] Prevent creating unnecessary tables. (Thanks to kashira202111) #148
5
+
6
+ ## 0.7.1 - 2024-03-4
7
+ * [enhancement] Support description of columns and tables (Thanks to @kyoshidajp and @fagai ) #142
8
+ * [maintenance] Add missing GitHub Actions environment setting. #160
9
+ * [maintenance] Replace google-api-client with specific Google APIs (Thanks to @Nozomuts) #161
10
+ * [maintenance] Update GitHub Actions use checkout@v4 and setup-java@v4 #162
11
+
1
12
  ## 0.7.0 - 2024-02-1
2
13
  * [enhancement] Add support Embulk 0.11.x
3
14
 
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org/'
2
2
 
3
3
  gemspec
4
- gem 'embulk', '= 0.10.49'
4
+ gem 'embulk', '= 0.11.4'
5
5
  gem 'embulk-parser-none'
6
6
  gem 'embulk-parser-jsonl'
7
7
  gem 'pry-nav'
data/README.md CHANGED
@@ -60,6 +60,7 @@ OAuth flow for installed applications.
60
60
  | gcs_bucket | string | optional | nil | See [GCS Bucket](#gcs-bucket) |
61
61
  | auto_create_gcs_bucket | boolean | optional | false | See [GCS Bucket](#gcs-bucket) |
62
62
  | progress_log_interval | float | optional | nil (Disabled) | Progress log interval. The progress log is disabled by nil (default). NOTE: This option may be removed in a future because a filter plugin can achieve the same goal |
63
+ | description | string | optional | nil | description of table |
63
64
 
64
65
  Client or request options
65
66
 
@@ -329,6 +330,7 @@ Column options are used to aid guessing BigQuery schema, or to define conversion
329
330
  - json: `STRING`, `RECORD` (default: `STRING`)
330
331
  - **mode**: BigQuery mode such as `NULLABLE`, `REQUIRED`, and `REPEATED` (string, default: `NULLABLE`)
331
332
  - **fields**: Describes the nested schema fields if the type property is set to RECORD. Please note that this is **required** for `RECORD` column.
333
+ - **description**: description (string, default is `None`).
332
334
  - **timestamp_format**: timestamp format to convert into/from `timestamp` (string, default is `default_timestamp_format`)
333
335
  - **timezone**: timezone to convert into/from `timestamp`, `date` (string, default is `default_timezone`).
334
336
  - **default_timestamp_format**: default timestamp format for column_options (string, default is "%Y-%m-%d %H:%M:%S.%6N")
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "embulk-output-bigquery"
3
- spec.version = "0.7.0"
3
+ spec.version = "0.7.2"
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."
@@ -15,7 +15,8 @@ Gem::Specification.new do |spec|
15
15
  spec.require_paths = ["lib"]
16
16
 
17
17
  # the latest version
18
- spec.add_dependency 'google-api-client','= 0.53.0'
18
+ spec.add_dependency 'google-apis-storage_v1'
19
+ spec.add_dependency 'google-apis-bigquery_v2'
19
20
  spec.add_dependency 'time_with_zone'
20
21
  spec.add_dependency 'thwait'
21
22
  # activesupport require Ruby >= 2.7.0
@@ -420,6 +420,7 @@ module Embulk
420
420
  table_reference: {
421
421
  table_id: table,
422
422
  },
423
+ description: @task['description'],
423
424
  schema: {
424
425
  fields: fields,
425
426
  }
@@ -446,8 +447,8 @@ module Embulk
446
447
  end
447
448
 
448
449
  opts = {}
449
- Embulk.logger.debug { "embulk-output-bigquery: insert_table(#{@project}, #{dataset}, #{@location_for_log}, #{body}, #{opts})" }
450
- with_network_retry { client.insert_table(@project, dataset, body, **opts) }
450
+ Embulk.logger.debug { "embulk-output-bigquery: insert_table(#{@destination_project}, #{dataset}, #{@location_for_log}, #{body}, #{opts})" }
451
+ with_network_retry { client.insert_table(@destination_project, dataset, body, **opts) }
451
452
  rescue Google::Apis::ServerError, Google::Apis::ClientError, Google::Apis::AuthorizationError => e
452
453
  if e.status_code == 409 && /Already Exists:/ =~ e.message
453
454
  # ignore 'Already Exists' error
@@ -456,7 +457,7 @@ module Embulk
456
457
 
457
458
  response = {status_code: e.status_code, message: e.message, error_class: e.class}
458
459
  Embulk.logger.error {
459
- "embulk-output-bigquery: insert_table(#{@project}, #{dataset}, #{@location_for_log}, #{body}, #{opts}), response:#{response}"
460
+ "embulk-output-bigquery: insert_table(#{@destination_project}, #{dataset}, #{@location_for_log}, #{body}, #{opts}), response:#{response}"
460
461
  }
461
462
  raise Error, "failed to create table #{@destination_project}:#{dataset}.#{table} in #{@location_for_log}, response:#{response}"
462
463
  end
@@ -48,7 +48,7 @@ module Embulk
48
48
  opts = {}
49
49
 
50
50
  Embulk.logger.debug { "embulk-output-bigquery: insert_temporary_bucket(#{@project}, #{body}, #{opts})" }
51
- with_network_retry { client.insert_bucket(@project, body, opts) }
51
+ with_network_retry { client.insert_bucket(@project, body, **opts) }
52
52
  rescue Google::Apis::ServerError, Google::Apis::ClientError, Google::Apis::AuthorizationError => e
53
53
  if e.status_code == 409 && /conflict:/ =~ e.message
54
54
  # ignore 'Already Exists' error
@@ -81,7 +81,7 @@ module Embulk
81
81
 
82
82
  Embulk.logger.debug { "embulk-output-bigquery: insert_object(#{bucket}, #{body}, #{opts})" }
83
83
  # memo: gcs is strongly consistent for insert (read-after-write). ref: https://cloud.google.com/storage/docs/consistency
84
- with_network_retry { client.insert_object(bucket, body, opts) }
84
+ with_network_retry { client.insert_object(bucket, body, **opts) }
85
85
  rescue Google::Apis::ServerError, Google::Apis::ClientError, Google::Apis::AuthorizationError => e
86
86
  response = {status_code: e.status_code, message: e.message, error_class: e.class}
87
87
  Embulk.logger.error {
@@ -114,7 +114,7 @@ module Embulk
114
114
  opts = {}
115
115
 
116
116
  Embulk.logger.debug { "embulk-output-bigquery: delete_object(#{bucket}, #{object}, #{opts})" }
117
- response = with_network_retry { client.delete_object(bucket, object, opts) }
117
+ response = with_network_retry { client.delete_object(bucket, object, **opts) }
118
118
  rescue Google::Apis::ServerError, Google::Apis::ClientError, Google::Apis::AuthorizationError => e
119
119
  if e.status_code == 404 # ignore 'notFound' error
120
120
  return nil
@@ -46,10 +46,11 @@ module Embulk
46
46
  embulk_type = column[:type]
47
47
  column_option = column_options_map[column_name] || {}
48
48
  {}.tap do |field|
49
- field[:name] = column_name
50
- field[:type] = (column_option['type'] || bq_type_from_embulk_type(embulk_type)).upcase
51
- field[:mode] = column_option['mode'] if column_option['mode']
52
- field[:fields] = deep_symbolize_keys(column_option['fields']) if column_option['fields']
49
+ field[:name] = column_name
50
+ field[:type] = (column_option['type'] || bq_type_from_embulk_type(embulk_type)).upcase
51
+ field[:mode] = column_option['mode'] if column_option['mode']
52
+ field[:fields] = deep_symbolize_keys(column_option['fields']) if column_option['fields']
53
+ field[:description] = column_option['description'] if column_option['description']
53
54
  end
54
55
  end
55
56
  end
@@ -63,6 +63,8 @@ module Embulk
63
63
  'payload_column' => config.param('payload_column', :string, :default => nil),
64
64
  'payload_column_index' => config.param('payload_column_index', :integer, :default => nil),
65
65
 
66
+ 'description' => config.param('description', :string, :default => nil),
67
+
66
68
  'open_timeout_sec' => config.param('open_timeout_sec', :integer, :default => nil),
67
69
  'timeout_sec' => config.param('timeout_sec', :integer, :default => nil), # google-api-ruby-client < v0.11.0
68
70
  'send_timeout_sec' => config.param('send_timeout_sec', :integer, :default => nil), # google-api-ruby-client >= v0.11.0
data/test/test_helper.rb CHANGED
@@ -68,7 +68,7 @@ module Embulk
68
68
  ])
69
69
  task = {
70
70
  'column_options' => [
71
- {'name' => 'boolean', 'type' => 'STRING', 'mode' => 'REQUIRED'},
71
+ {'name' => 'boolean', 'type' => 'STRING', 'mode' => 'REQUIRED', 'description' => 'hoge'},
72
72
  {'name' => 'long', 'type' => 'STRING'},
73
73
  {'name' => 'double', 'type' => 'STRING'},
74
74
  {'name' => 'string', 'type' => 'INTEGER'},
@@ -81,7 +81,7 @@ module Embulk
81
81
  ],
82
82
  }
83
83
  expected = [
84
- {name: 'boolean', type: 'STRING', mode: 'REQUIRED'},
84
+ {name: 'boolean', type: 'STRING', mode: 'REQUIRED', description: 'hoge'},
85
85
  {name: 'long', type: 'STRING'},
86
86
  {name: 'double', type: 'STRING'},
87
87
  {name: 'string', type: 'INTEGER'},
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.0
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Satoshi Akama
@@ -9,22 +9,36 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-02-13 00:00:00.000000000 Z
12
+ date: 2024-07-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: google-api-client
15
+ name: google-apis-storage_v1
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 0.53.0
20
+ version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '='
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: google-apis-bigquery_v2
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
26
33
  - !ruby/object:Gem::Version
27
- version: 0.53.0
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: time_with_zone
30
44
  requirement: !ruby/object:Gem::Requirement