private[samplers] def getTableRowField()

in ratatool-sampling/src/main/scala/com/spotify/ratatool/samplers/BigSamplerBigQuery.scala [97:124]


  private[samplers] def getTableRowField(
    r: TableRow,
    fieldStr: String,
    tblSchema: Seq[TableFieldSchema]
  ): Any = {
    val subfields = fieldStr.split(BigSampler.fieldSep)
    val field = tblSchema.find(_.getName == subfields.head).getOrElse {
      throw new NoSuchElementException(s"Can't find field `$fieldStr` in the schema $tblSchema")
    }
    val v = r.get(subfields.head)
    if (v == null) {
      log.debug(
        s"Field `${field.getName}` of type ${field.getType} and mode ${field.getMode}" +
          s" is null - won't account for hash"
      )
    } else {
      field.getType match {
        case "RECORD" if fieldStr.nonEmpty =>
          // v is a LinkedHashMap
          getTableRowField(
            TableRow(v.asInstanceOf[java.util.Map[String, AnyRef]].asScala.toList: _*),
            subfields.tail.mkString(BigSampler.fieldSep.toString),
            field.getFields.asScala.toList
          )
        case _ => v
      }
    }
  }