Skip to content

Commit 1524580

Browse files
committed
support nested fields
1 parent 1e9a610 commit 1524580

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

lib/embulk/output/bigquery.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ def self.configure(config, schema, task_count)
6161
'default_timestamp_format' => config.param('default_timestamp_format', :string, :default => ValueConverterFactory::DEFAULT_TIMESTAMP_FORMAT),
6262
'payload_column' => config.param('payload_column', :string, :default => nil),
6363
'payload_column_index' => config.param('payload_column_index', :integer, :default => nil),
64-
'update_description' => config.param('update_description', :bool, :default => false),
6564

6665
'open_timeout_sec' => config.param('open_timeout_sec', :integer, :default => nil),
6766
'timeout_sec' => config.param('timeout_sec', :integer, :default => nil), # google-api-ruby-client < v0.11.0

lib/embulk/output/bigquery/bigquery_client.rb

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -515,14 +515,22 @@ def get_table_or_partition(table, dataset: nil)
515515
# update only column.description
516516
def patch_table
517517
table = get_table(@task['table'])
518-
fields = table.schema.fields.map do |field|
519-
col_option = @task['column_options'].select{|col_opt| col_opt['name'] == field.name}.first
520-
if col_option
521-
field.description = col_option['description'] if col_option['description']
518+
519+
def patch_description(fields, column_options)
520+
fields.map do |field|
521+
column_option = column_options.select{|col_opt| col_opt['name'] == field.name}.first
522+
if column_option
523+
field.description = column_option['description'] if column_option['description']
524+
unless field.fields.empty? && column_option['fields']
525+
nested_fields = patch_description(field.fields, column_option['fields'])
526+
field.update!(fields: nested_fields)
527+
end
528+
end
529+
field
522530
end
523-
field
524531
end
525532

533+
fields = patch_description(table.schema.fields, @task['column_options'])
526534
table.schema.update!(fields: fields)
527535
client.patch_table(@project, @dataset, @task['table'], table)
528536
end

0 commit comments

Comments
 (0)