Class: Embulk::Input::InputBigquery

Inherits:
InputPlugin
  • Object
show all
Defined in:
lib/embulk/input/bigquery.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.transaction(config) {|task, columns, 1| ... } ⇒ Object

Yields:

  • (task, columns, 1)


9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/embulk/input/bigquery.rb', line 9

def self.transaction(config, &control)

  task = {project: config[:project], keyfile: config[:keyfile], sql: config[:sql], columns: config[:columns]}
  columns = []
  config[:columns].each_with_index do |c, i|
    columns << Column.new(i, c['name'], c['type'].to_sym)
  end

  yield(task, columns, 1)

  return {}
end

Instance Method Details

#runObject



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/embulk/input/bigquery.rb', line 22

def run
  bq = Google::Cloud::Bigquery.new(project: @task[:project], keyfile: @task[:keyfile])
  rows = bq.query(@task[:sql])
  rows.each do |row|
    columns = []
    @task[:columns].each do |c|
      columns << row[c['name']]
    end
    @page_builder.add(columns)
  end
  @page_builder.finish
  return {}
end