Class: Samidare::BigQueryUtility
- Inherits:
-
Object
- Object
- Samidare::BigQueryUtility
- Defined in:
- lib/samidare/bigquery_utility.rb
Constant Summary collapse
- CONTENTS =
<<-EOS.unindent in: type: mysql user: <%= user %> password: <%= password %> database: <%= database %> host: <%= host %> query: | <%= query %> out: type: bigquery project: <%= project %> p12_keyfile_path: <%= p12_keyfile_path %> service_account_email: <%= service_account_email %> dataset: <%= dataset %> table: <%= table_name %> schema_path: <%= schema_path %> auto_create_table: 1 path_prefix: <%= path_prefix %> source_format: NEWLINE_DELIMITED_JSON file_ext: .json.gz delete_from_local_when_job_end: 1 formatter: type: jsonl encoders: - {type: gzip} EOS
Class Method Summary collapse
Instance Method Summary collapse
- #delete_table(dataset, table_name) ⇒ Object
- #generate_embulk_config(db_name, db_info, table_info, column_infos) ⇒ Object
-
#initialize(config) ⇒ BigQueryUtility
constructor
A new instance of BigQueryUtility.
Constructor Details
#initialize(config) ⇒ BigQueryUtility
Returns a new instance of BigQueryUtility.
36 37 38 |
# File 'lib/samidare/bigquery_utility.rb', line 36 def initialize(config) @config = config.dup end |
Class Method Details
.generate_schema(column_infos) ⇒ Object
40 41 42 43 |
# File 'lib/samidare/bigquery_utility.rb', line 40 def self.generate_schema(column_infos) json_body = column_infos.map { |column_info| column_info.to_json }.join(",\n") "[\n" + json_body + "\n]\n" end |
.generate_sql(table_name, column_infos) ⇒ Object
45 46 47 48 49 |
# File 'lib/samidare/bigquery_utility.rb', line 45 def self.generate_sql(table_name, column_infos) columns = column_infos.map { |column_info| column_info.converted_value } sql = "SELECT " + columns.join(",") sql << " FROM #{table_name}\n" end |
Instance Method Details
#delete_table(dataset, table_name) ⇒ Object
68 69 70 71 72 73 |
# File 'lib/samidare/bigquery_utility.rb', line 68 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, db_info, table_info, column_infos) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/samidare/bigquery_utility.rb', line 51 def generate_embulk_config(db_name, db_info, table_info, column_infos) host = db_info['host'] user = db_info['username'] password = db_info['password'] database = db_info['database'] query = Samidare::BigQueryUtility.generate_sql(table_info.name, column_infos) project = @config['project_id'] p12_keyfile_path = @config['key'] service_account_email = @config['service_email'] dataset = db_info['bq_dataset'] table_name = table_info.name schema_path = "#{@config['schema_dir']}/#{db_name}/#{table_info.name}.json" path_prefix = "/var/tmp/embulk_#{db_name}_#{table_info.name}" ERB.new(CONTENTS).result(binding) end |