Class: Superset::Dataset::UpdateSchema
- Defined in:
- lib/superset/dataset/update_schema.rb
Constant Summary
Constants inherited from Request
Instance Attribute Summary collapse
-
#remove_copy_suffix ⇒ Object
readonly
Returns the value of attribute remove_copy_suffix.
-
#source_dataset_id ⇒ Object
readonly
Returns the value of attribute source_dataset_id.
-
#target_catalog ⇒ Object
readonly
Returns the value of attribute target_catalog.
-
#target_database_id ⇒ Object
readonly
Returns the value of attribute target_database_id.
-
#target_schema ⇒ Object
readonly
Returns the value of attribute target_schema.
Attributes inherited from Request
Instance Method Summary collapse
-
#initialize(source_dataset_id:, target_database_id:, target_schema:, target_catalog: nil, remove_copy_suffix: false) ⇒ UpdateSchema
constructor
A new instance of UpdateSchema.
- #params_updated ⇒ Object
- #perform ⇒ Object
- #response ⇒ Object
-
#sql_query_includes_hard_coded_schema? ⇒ Boolean
check if the sql query embedds the schema name, if so it can not be duplicated cleanly.
Methods inherited from Request
call, #query_params, #result, #superset_host
Methods included from Superset::Display
#ids, #list, #list_attributes, #result, #rows, #table, #title, #to_h
Constructor Details
#initialize(source_dataset_id:, target_database_id:, target_schema:, target_catalog: nil, remove_copy_suffix: false) ⇒ UpdateSchema
Returns a new instance of UpdateSchema.
7 8 9 10 11 12 13 |
# File 'lib/superset/dataset/update_schema.rb', line 7 def initialize(source_dataset_id: , target_database_id: , target_schema: , target_catalog: nil, remove_copy_suffix: false) @source_dataset_id = source_dataset_id @target_database_id = target_database_id @target_schema = target_schema @target_catalog = target_catalog @remove_copy_suffix = remove_copy_suffix end |
Instance Attribute Details
#remove_copy_suffix ⇒ Object (readonly)
Returns the value of attribute remove_copy_suffix.
5 6 7 |
# File 'lib/superset/dataset/update_schema.rb', line 5 def remove_copy_suffix @remove_copy_suffix end |
#source_dataset_id ⇒ Object (readonly)
Returns the value of attribute source_dataset_id.
5 6 7 |
# File 'lib/superset/dataset/update_schema.rb', line 5 def source_dataset_id @source_dataset_id end |
#target_catalog ⇒ Object (readonly)
Returns the value of attribute target_catalog.
5 6 7 |
# File 'lib/superset/dataset/update_schema.rb', line 5 def target_catalog @target_catalog end |
#target_database_id ⇒ Object (readonly)
Returns the value of attribute target_database_id.
5 6 7 |
# File 'lib/superset/dataset/update_schema.rb', line 5 def target_database_id @target_database_id end |
#target_schema ⇒ Object (readonly)
Returns the value of attribute target_schema.
5 6 7 |
# File 'lib/superset/dataset/update_schema.rb', line 5 def target_schema @target_schema end |
Instance Method Details
#params_updated ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/superset/dataset/update_schema.rb', line 35 def params_updated @params_updated ||= begin new_params = source_dataset.slice(*acceptable_attributes).with_indifferent_access # primary database and schema changes new_params.merge!("database_id": target_database_id) # add the target database id new_params['catalog'] = target_catalog new_params['schema'] = target_schema new_params['owners'] = new_params['owners'].map {|o| o['id'] } # expects an array of user ids new_params['table_name'] = new_params['table_name'].gsub(/ \(COPY\)/, '') if remove_copy_suffix # remove unwanted fields from metrics and columns arrays new_params['metrics'].each {|m| m.delete('changed_on') } new_params['metrics'].each {|m| m.delete('created_on') } new_params['columns'].each {|m| m.delete('changed_on') } new_params['columns'].each {|m| m.delete('created_on') } new_params['columns'].each {|m| m.delete('type_generic') } new_params end end |
#perform ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/superset/dataset/update_schema.rb', line 15 def perform validate_proposed_changes response msg = if result['schema'] == target_schema "Successfully updated dataset schema to #{target_schema} on Database: #{target_database_id}" else "Error: Failed to update dataset schema to #{target_schema} on Database: #{target_database_id}" end logger.info " #{msg}" msg end |
#response ⇒ Object
31 32 33 |
# File 'lib/superset/dataset/update_schema.rb', line 31 def response @response ||= client.put(route, params_updated) end |
#sql_query_includes_hard_coded_schema? ⇒ Boolean
check if the sql query embedds the schema name, if so it can not be duplicated cleanly
57 58 59 |
# File 'lib/superset/dataset/update_schema.rb', line 57 def sql_query_includes_hard_coded_schema? source_dataset['sql'].include?("#{source_dataset['schema']}.") end |