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)
}))
}
}