如何在scala中跳过大小为= 0的$ EmptyMap的值

问题描述 投票:0回答:1

我正在使用SQL查询来获取数据并将列名称和值映射到元组,然后将元组集映射到映射列表,我需要跳过大小为0的映射,而仅获取具有值的映射。

我的代码和结果如下。

SELECT orbkn_surgery_procedures_order_status,orbkn_surgery_procedures_id,orbkn_surgery_procedures_or_booking,orbkn_surgery_procedures_created_date_time,orbkn_surgery_procedures_order_id FROM OR_Cube_for_surgery

    try {
  NamedDB(Symbol(db)) readOnly { implicit session =>

      Right(

        SQL(sql + " LIMIT 50000")
          .map(_.toMap())
          .list
          .apply()
      )
  }

我得到的结果集

Right(List(Map(), Map(orbkn_surgery_procedures_id -> 41, orbkn_surgery_procedures_or_booking -> 734, orbkn_surgery_procedures_order_id -> 105610),Map(orbkn_surgery_procedures_order_status -> OPD, orbkn_surgery_procedures_id -> 174, orbkn_surgery_procedures_or_booking -> 883, orbkn_surgery_procedures_order_id -> 100788), Map(orbkn_surgery_procedures_order_status -> IPD, orbkn_surgery_procedures_id -> 175, orbkn_surgery_procedures_or_booking -> 884, orbkn_surgery_procedures_order_id -> 106321), Map(orbkn_surgery_procedures_order_status -> IPD, orbkn_surgery_procedures_id -> 176, orbkn_surgery_procedures_or_booking -> 886, orbkn_surgery_procedures_order_id -> 106354),Map(), Map(), Map(), Map(), Map(), Map(), Map(), Map(), Map(), Map(), Map(), Map()))

我需要摆脱那些Map(),仅获取地图集(包含任何数据)

scala maps
1个回答
0
投票

您需要过滤Map的列表以删除空白列表,如下所示:

Right(
  SQL(sql + " LIMIT 50000")
    .map(_.toMap())
    .list
    .apply()
    .filter(_.nonEmpty)
)

但是如果可能的话,最好将过滤器放在SQL中,然后让数据库完成工作。

© www.soinside.com 2019 - 2024. All rights reserved.