Depending on the complexity, users can choose from short form or long form rules.
Just the condition (short form). For example, using the column email_address. This runs against the dataframe and uses Spark SQL syntax. An easy way to think about Simple rules is 'everything after the where clause'.
email_address is not null and email_address != ''
Where 'Simple' rules just use the condition, 'Freeform' rules use the complete SQL statement. When more complex SQL is required, you can express more with Freeform including joins, CTE's and window statements.
Native rules use the SQL dialect of the underlying connection and database. Files are not eligible for native SQL rules. This is ideal if you want to use push-down profiling and you want to use existing SQL logic. When coupled with push-down profiling, you can achieve a very minimal infrastructure footprint.