class Samidare::BigQueryUtility

Constants

CONTENTS

Public Class Methods

generate_schema(columns) click to toggle source
# File lib/samidare/bigquery_utility.rb, line 42
def self.generate_schema(columns)
  json_body = columns.map { |column| column.to_json }.join(",\n")
  "[\n" + json_body + "\n]\n"
end
generate_sql(table_config, columns) click to toggle source
# File lib/samidare/bigquery_utility.rb, line 47
def self.generate_sql(table_config, columns)
  columns = columns.map { |column| column.converted_value }
  sql = "SELECT " + columns.join(",")
  sql << " FROM #{table_config.name}"
  sql << " WHERE #{table_config.condition}" if table_config.condition
  sql << "\n"
  sql
end
new(config) click to toggle source
# File lib/samidare/bigquery_utility.rb, line 37
def initialize(config)
  @config = config.dup
  @current_date = Date.today
end

Public Instance Methods

actual_table_name(table_name, daily_snapshot) click to toggle source
# File lib/samidare/bigquery_utility.rb, line 80
def actual_table_name(table_name, daily_snapshot)
  return table_name unless daily_snapshot
  table_name + @current_date.strftime('%Y%m%d')
end
delete_table(dataset, table_name) click to toggle source
# File lib/samidare/bigquery_utility.rb, line 73
def delete_table(dataset, table_name)
  @config['dataset'] = dataset

  bq = BigQuery::Client.new(@config)
  bq.delete_table(table_name)
end
generate_embulk_config(db_name, database_config, table_config, columns) click to toggle source
# File lib/samidare/bigquery_utility.rb, line 56
def generate_embulk_config(db_name, database_config, table_config, columns)
  host = database_config['host']
  user = database_config['username']
  password = database_config['password']
  database = database_config['database']
  query = Samidare::BigQueryUtility.generate_sql(table_config, columns)
  project = @config['project_id']
  p12_keyfile = @config['key']
  service_account_email = @config['service_email']
  dataset = database_config['bq_dataset']
  table_name = actual_table_name(table_config.name, database_config['daily_snapshot'] || table_config.daily_snapshot)
  schema_path = "#{@config['schema_dir']}/#{db_name}/#{table_config.name}.json"
  path_prefix = "/var/tmp/embulk_#{db_name}_#{table_config.name}"

  ERB.new(CONTENTS).result(binding)
end