class Embulk::Input::Mixpanel

Public Class Methods

guess(config) click to toggle source
# File lib/embulk/input/mixpanel.rb, line 48
def self.guess(config)
  service = service(config)
  service.validate_config
  return {"columns"=>service.guess_columns}
end
resume(task, columns, count) { |task, columns, count| ... } click to toggle source
# File lib/embulk/input/mixpanel.rb, line 34
def self.resume(task, columns, count, &control)
  task_reports = yield(task, columns, count)

  # NOTE: If this plugin supports to run by multi threads, this
  # implementation is terrible.
  if task[:incremental]
    task_report = task_reports.first
    service = service(task)
    next_from_date = service.next_from_date(task_report)
    return next_from_date
  end
  return {}
end
transaction(config, &control) click to toggle source
# File lib/embulk/input/mixpanel.rb, line 9
def self.transaction(config, &control)
  service = service(config)
  service.validate_config
  task = service.create_task
  Embulk.logger.info "Try to fetch data from #{task[:dates].first} to #{task[:dates].last}"

  columns = task[:schema].map do |column|
    name = column["name"]
    type = column["type"].to_sym

    Column.new(nil, name, type, column["format"])
  end

  if task[:fetch_custom_properties]
    columns << Column.new(nil, "custom_properties", :json)
  end

  if task[:fetch_unknown_columns]
    Embulk.logger.warn "Deprecated `unknown_columns`. Use `fetch_custom_properties` instead."
    columns << Column.new(nil, "unknown_columns", :json)
  end

  resume(task, columns, 1, &control)
end

Private Class Methods

service(config) click to toggle source
# File lib/embulk/input/mixpanel.rb, line 64
def self.service(config)
  jql_mode = config[:jql_mode]
  if jql_mode
    Service::JqlService.new(config)
  else
    Service::ExportService.new(config)
  end
end

Public Instance Methods

init() click to toggle source
# File lib/embulk/input/mixpanel.rb, line 54
def init
  @api_secret = task[:api_secret]
end
run() click to toggle source
# File lib/embulk/input/mixpanel.rb, line 58
def run
  Mixpanel::service(DataSource[task.to_a]).ingest(task, page_builder)
end