Skip to content

Aggregating a stream over sliding or tumbling time windows

Windowing (analytic) functions let you compute ranks, running totals, and row-to-row comparisons across a set of related rows without collapsing them into groups, using the OVER() clause with PARTITION BY and ORDER BY. In Fabric, you create these using Spark SQL/PySpark in notebooks or T-SQL in the Warehouse/SQL endpoint, applying functions like ROW_NUMBER, RANK, LAG/LEAD, and aggregate-over-window patterns.

Must-know

  • The OVER() clause defines the window: PARTITION BY groups rows (like GROUP BY but keeps all rows), and ORDER BY defines the sequence within each partition for ranking and offset functions.
  • ROW_NUMBER always assigns unique sequential integers even for ties, RANK skips numbers after ties, and DENSE_RANK does not skip numbers after ties: choose based on whether gaps are desired.
  • LAG and LEAD access prior/following row values within a partition and require an ORDER BY; an optional offset and default value can be specified for rows without a match.
  • Aggregate functions (SUM, AVG, COUNT, MIN, MAX) become window functions when combined with OVER(), enabling running totals or moving averages without a GROUP BY.
  • Frame specifications (ROWS BETWEEN / RANGE BETWEEN, e.g., UNBOUNDED PRECEDING AND CURRENT ROW) control exactly which rows within the partition are included in the calculation for each row.
  • In PySpark, window specs are built with the Window class (Window.partitionBy(...).orderBy(...)) and passed to functions like F.row_number().over(windowSpec); in Fabric Warehouse T-SQL, the same OVER()/PARTITION BY/ORDER BY syntax as SQL Server/Synapse applies.
Check this objectiveFree · always available

A data engineer working in a Fabric notebook needs to keep only the most recent transaction for each account_id from a Delta table that contains many historical rows per account. Some accounts have multiple transactions with the exact same transaction_date. The engineer starts with: window_spec = Window.partitionBy('account_id').orderBy(col('transaction_date').desc()) df_ranked = df.withColumn('rn', ???) df_latest = df_ranked.filter(col('rn') == 1) Which function should replace ??? so that exactly one row per account_id is kept, even for accounts whose latest transactions share the same transaction_date?

Your objective map0 tried · 0 right · 54 untouched

What you have tried across DP-700's objectives, not a readiness score.

Coverage checked against the published exam guide on Aug 11, 2026.

These are independent practice questions, written against this certification's published exam guide. They are not the certification vendor's own questions, and not the real exam.