Вставить в select с жестко закодированным значением с помощью Ruby Sequel - PullRequest
0 голосов
/ 19 ноября 2018

Я использую Ruby Sequel для ежедневного перемещения данных в таблицы отчетов.Я объединяю данные из трех таблиц в одну таблицу.Я делаю это в Redshift, поэтому я должен использовать disable_insert_returning.Имена столбцов в этих двух таблицах соответствуют друг другу, но не конечной таблице, что означает, что я использую graph и set_graph_aliases.

reports = db[:reports]
report_columns = [:user_id, :purchase_date, :sku]

spoons_select_graph = {
  user_id: :users,
  purchase_date: :spoon_receipts,
  product_id: :spoon_receipts
}
spoons = db[:spoon_receipts]
spoons_select = spoons.graph(:users, user_id: :user_id).set_graph_aliases(spoons_select_graph)

forks_select_graph = {
  user_id: :users,
  purchase_date: :fork_receipts,
  product_id: :fork_receipts
}
forks = db[:fork_receipts]
forks_select = forks.graph(:users, user_id: :user_id).set_graph_aliases(forks_select_graph)

reports.disable_insert_returning.insert(report_columns, spoons_select)
reports.where(channel: nil).update(channel: 'spoons')
reports.disable_insert_returning.insert(report_columns, forks_select)
reports.where(channel: nil).update(channel: 'forks')

Обновления берутся вечно.Я хотел бы добавить канал к insert select, чтобы мне не приходилось возвращаться и обновлять.

1 Ответ

0 голосов
/ 23 ноября 2018

Вы не предоставили исполняемую настройку, поэтому я не проверял это, но я думаю, что это будет работать. Основная идея состоит в том, чтобы просто добавить постоянный столбец результатов в ваш выбор.

reports = db[:reports]
report_columns = [:user_id, :purchase_date, :sku, :channel]

spoons_select_graph = {
  user_id: :users,
  purchase_date: :spoon_receipts,
  product_id: :spoon_receipts,
  channel: [:spoon_receipts, :channel, 'spoons']
}
spoons = db[:spoon_receipts]
spoons_select = spoons.graph(:users, user_id: :user_id).set_graph_aliases(spoons_select_graph)

reports.disable_insert_returning.insert(report_columns, spoons_select)

См. Документацию для set_graph_aliases для получения дополнительной информации.

...