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