Microsoft Certified: Fabric Analytics Engineer AssociatePrepare and transform data (20-25%)Hard

A data engineer is using a Spark Notebook in Microsoft Fabric to process a large dataset of customer orders. The dataset contains a 'ProductDescription' column which often includes inconsistent spacing, special characters, and leading/trailing whitespace. The engineer needs to clean this column by removing all non-alphanumeric characters (except spaces), collapsing multiple spaces into a single space, and trimming leading/trailing whitespace, all while optimizing performance for a large DataFrame. Which PySpark function combination is most efficient for this task?

  1. A```python df.withColumn('CleanedDescription', regexp_replace(col('ProductDescription'), '[^a-zA-Z0-9 ]', '')).withColumn('CleanedDescription', regexp_replace(col('CleanedDescription'), '\s+', ' ')).withColumn('CleanedDescription', trim(col('CleanedDescription'))) ```
  2. B```python df.withColumn('CleanedDescription', split(col('ProductDescription'), ' ').getItem(0)) ```
  3. C```python df.withColumn('CleanedDescription', lower(col('ProductDescription'))).withColumn('CleanedDescription', upper(col('CleanedDescription'))) ```
  4. D```python df.withColumn('CleanedDescription', translate(col('ProductDescription'), '!', '')).withColumn('CleanedDescription', replace(col('CleanedDescription'), ' ', ' ')) ```
Show answer & explanation

Correct answer: A. ```python df.withColumn('CleanedDescription', regexp_replace(col('ProductDescription'), '[^a-zA-Z0-9 ]', '')).withColumn('CleanedDescription', regexp_replace(col('CleanedDescription'), '\s+', ' ')).withColumn('CleanedDescription', trim(col('CleanedDescription'))) ```

The most efficient way to perform these complex string cleaning operations in PySpark for a large DataFrame is to use a sequence of built-in SQL functions. `regexp_replace` is powerful for removing patterns (like non-alphanumeric characters and multiple spaces), and `trim` is dedicated to removing leading/trailing whitespace. Chaining these operations with `withColumn` ensures the transformations are applied efficiently within Spark's execution engine.

Why the other options are wrong

  • B. `split` and `getItem(0)` would only extract the first word, not clean the entire description as required.
  • C. `lower` and `upper` change case, which is not part of the required cleaning steps (removing special chars, collapsing spaces, trimming).
  • D. `translate` is for single-character replacement, not pattern-based. `replace` would need to be chained multiple times to collapse spaces, which is less efficient than `regexp_replace` for `\s+`.

PySpark String Cleaning Optimization

Efficiently applying multiple string manipulation operations to a PySpark DataFrame column, typically using built-in SQL functions for performance.

  • Leverages `regexp_replace` for pattern-based cleaning.
  • Uses `trim` for whitespace removal.
  • Chaining `withColumn` operations is efficient.
  • Avoids UDFs for better performance on large datasets.

Memory trick: Regex, then trim, like a precise cleaning crew for your data.

More Prepare and transform data (20-25%) questions