【问题标题】:Looking for help in Nested groupBy with scalikejdbc?在使用 scalikejdbc 的嵌套 groupBy 中寻找帮助?
【发布时间】:2019-07-30 20:32:31
【问题描述】:

我使用的是 Scala 2.12,并且通过 build.sbt 下载了所需的库。

我的数据库输出格式如下。

基本上,就像每个估值日期和账簿一样,可以有多个货币数据。

我在书上有分组依据(主要),其中将包含基于货币的 Pnl 数据列表。

只是粗略的表示:

{ Bookid: 1234,
  BookName: EQUITY,
  PnlBreakdown: [currency: cad, actual_pnl_local: 100, actual_pnl_cde: 100], [currency: usd, actual_pnl_local: 100, actual_pnl_cde: 130]
}

基本上。键是 book,值是 pnl 数据列表。

我有一个案例类定义如下:

case class PnlData(valuation_date: Option[String], currency: Option[String],pnl_status: Option[String],actual_pnl_local: Option[String] ,actual_pnl_cde: Option[String], actual_pnl_local_me_adj: Option[String] ,actual_pnl_cde_me_adj: Option[String] ) {
  override def toString():String= {
    s"valuation_date=$valuation_date,currency=$currency,pnl_status=$pnl_status,actual_pnl_local=$actual_pnl_local,actual_pnl_cde=$actual_pnl_cde,actual_pnl_local_me_adj=$actual_pnl_local_me_adj,actual_pnl_cde_me_adj=$actual_pnl_cde_me_adj"
  }
}

case class BookLevelDaily(book_id: Option[String], book: Option[String], pnlBreakdown: List[SaPnlData]){
  override def toString():String= {
    s"book_id=$book_id,book=$book,pnl=$pnlBreakdown"
  }
}

基本上,我的最终对象是 BookLevelDaily 类型。

如何将 DB 输出(上图)转换为我的 BookLevelDaily 对象?

我可以将整个结果转换为列表,但进一步我应该如何进行分组?

val list: List[BookLevelDaily] =
      sql"""
           |SELECT QUERY TO GET ABOVE RESULTSET
        """.stripMargin.map(rs =>
        BookLevelDaily(
          valuation_date = rs.stringOpt("valuation_date"),
          book_id = rs.stringOpt("book_id"),
          book =  rs.stringOpt("book"),
          currency=  rs.stringOpt("currency"),
          pnl_status=  rs.stringOpt("pnl_status"),
          actual_pnl_local=  rs.stringOpt("actual_pnl_local"),
          actual_pnl_cde=  rs.stringOpt("actual_pnl_cde"),
          actual_pnl_local_me_adj= rs.stringOpt("actual_pnl_local_me_adj"),
          actual_pnl_cde_me_adj= rs.stringOpt("actual_pnl_cde_me_adj")
        )
      ).list().apply()

首先,上面不是 BookLevelDaily 类型。那么如何迭代或分组以分离 Pnl 级别的数据并将其映射到键(书)。

【问题讨论】:

    标签: scala scalikejdbc


    【解决方案1】:

    如果我理解正确的话,它似乎是一个一对多的关系(一:book_level_daily,多:pnl_breakdown)。如果是这样,请查看以下文档。

    http://scalikejdbc.org/documentation/one-to-x.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多