使用Ruby Sequel将具有硬编码值的select插入select

时间:2018-11-19 14:22:06

标签: ruby amazon-redshift sequel

我每天都在使用Ruby Sequel将数据移到报表中。我正在将三个表中的数据合并到一个表中。我正在Redshift中进行此操作,因此必须使用import {Component, NgModule} from '@angular/core'; import {APP_BASE_HREF} from '@angular/common'; @NgModule({ providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}] }) class AppModule {} 。两个表中的列名彼此匹配,但终端表不匹配,这意味着我正在使用disable_insert_returninggraph

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') ,这样我就不必回去更新了。

1 个答案:

答案 0 :(得分:1)

您没有提供可执行的安装程序,因此我尚未对此进行测试,但是我认为它可以工作。基本思想是将一列恒定的结果添加到您的选择中。

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的文档。