def buildFilterExpression()

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