in connector/src/main/scala/com/microsoft/kusto/spark/datasource/KustoFilter.scala [44:68]
def buildFilterExpression(schema: StructType, filter: Filter): Option[String] = {
filter match {
case EqualTo(attr, value) => binaryScalarOperatorFilter(schema, attr, value, "==")
case EqualNullSafe(attr, value) if value == null =>
unaryScalarOperatorFilter(attr, "isnull")
case EqualNullSafe(attr, value) => binaryScalarOperatorFilter(schema, attr, value, "==")
case GreaterThan(attr, value) => binaryScalarOperatorFilter(schema, attr, value, ">")
case GreaterThanOrEqual(attr, value) =>
binaryScalarOperatorFilter(schema, attr, value, ">=")
case LessThan(attr, value) => binaryScalarOperatorFilter(schema, attr, value, "<")
case LessThanOrEqual(attr, value) => binaryScalarOperatorFilter(schema, attr, value, "<=")
case In(attr, values) => unaryOperatorOnValueSetFilter(schema, attr, values, "in")
case IsNull(attr) => unaryScalarOperatorFilter(attr, "isnull")
case IsNotNull(attr) => unaryScalarOperatorFilter(attr, "isnotnull")
case And(left, right) => binaryLogicalOperatorFilter(schema, left, right, "and")
case Or(left, right) => binaryLogicalOperatorFilter(schema, left, right, "or")
case Not(child) => unaryLogicalOperatorFilter(schema, child, "not")
case StringStartsWith(attr, value) =>
stringOperatorFilter(schema, attr, value, "startswith_cs")
case StringEndsWith(attr, value) => stringOperatorFilter(schema, attr, value, "endswith_cs")
case StringContains(attr, value) => stringOperatorFilter(schema, attr, value, "contains_cs")
case _ => None
}
}