Method: GoodData::LCM2::UpdateMetricFormats.load_metric_data

Defined in:
lib/gooddata/lcm/actions/update_metric_formats.rb

.load_metric_data(params) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/gooddata/lcm/actions/update_metric_formats.rb', line 52

def load_metric_data(params)
  collect_synced_status = collect_synced_status(params)

  if params&.dig(:input_source, :metric_format) && params[:input_source][:metric_format].present?
    metric_input_source = validate_input_source(params[:input_source], collect_synced_status)
    return nil unless metric_input_source
  else
    return nil
  end

  metric_data_source = GoodData::Helpers::DataSource.new(metric_input_source)
  begin
    temp_csv = without_check(PARAMS, params) do
      File.open(metric_data_source.realize(params), 'r:UTF-8')
    end
  rescue StandardError => e
    GoodData.logger.warn("Unable to get metric input source, skip updating metric formats. Error: #{e.message} - #{e}")
    return nil
  end

  metrics_hash = GoodData::Helpers::Csv.read_as_hash temp_csv
  return nil if metrics_hash.empty?

  expected_keys = %w[tag client_id format]
  unless expected_keys.map(&:to_sym).all? { |s| metrics_hash.first.key? s }
    GoodData.logger.warn("The input metric data is incorrect, expecting the following fields: #{expected_keys}")
    return nil
  end
  metrics_hash
end