private def sparkTypeToEdmType()

in cognitive/src/main/scala/com/microsoft/azure/synapse/ml/cognitive/AzureSearch.scala [294:314]


  private def sparkTypeToEdmType(dt: DataType,
                                 allowCollections: Boolean = true): (String, Option[Seq[IndexField]]) = {
    dt match {
      case ArrayType(it, _) if allowCollections =>
        val (innerType, innerFields) = sparkTypeToEdmType(it, allowCollections = false)
        (s"Collection($innerType)", innerFields)
      case ArrayType(it, _) if !allowCollections =>
        val (innerType, innerFields) = sparkTypeToEdmType(it, allowCollections)
        ("Edm.ComplexType", innerFields)
      case StringType => ("Edm.String", None)
      case BooleanType => ("Edm.Boolean", None)
      case IntegerType => ("Edm.Int32", None)
      case LongType => ("Edm.Int64", None)
      case DoubleType => ("Edm.Double", None)
      case DateType => ("Edm.DateTimeOffset", None)
      case StructType(fields) => ("Edm.ComplexType", Some(fields.map { f =>
        val (innerType, innerFields) = sparkTypeToEdmType(f.dataType)
        IndexField(f.name, innerType, None, None, None, None, None, None, None, None, None, None, innerFields)
      }))
    }
  }