PDE Designing Data Processing Systems Practice Question
You have a BigQuery table that is partitioned by ingestion time and clustered on user_id. The table stores event logs and is queried frequently by user_id to analyze user behavior over the last 30 days. Queries are still scanning too many partitions. Which optimization should you apply first?
⚠ Common exam trap
PDE often tests whether candidates recognize that ingestion-time partitioning does not align with event-time filters — many assume any partitioning enables pruning, missing that the partition column must match the query predicate.
Answer choices
Why each option matters
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
Change the partition column to a DATE column based on event_timestamp and keep clustering on user_id
Ingestion-time partitioning creates partitions based on when data arrives, not the event timestamp, so a query filtering on the last 30 days of events may still scan partitions that contain older events ingested recently. Changing the partition column to a DATE derived from event_timestamp aligns partition pruning with the query filter, and keeping clustering on user_id preserves the benefit for user-based filtering. This is the highest-impact first optimization.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✗
Create a materialized view that pre-aggregates data by user_id and date
Why it's wrong here
A materialised view pre-aggregates results but does not reduce the partitions scanned when the underlying query still reads raw event logs across the 30-day window. Materialised views suit repeated identical aggregations. The stem's problem is partition pruning, which the view does not address.
- ✗
Remove partitioning and rely solely on clustering
Why it's wrong here
Dropping partitioning removes the ingestion-time pruning that limits scanned data to the last 30 days, forcing full-table scans filtered only by clustering. Clustering alone suits tables queried without a reliable time predicate. Here the date filter is the primary scan-reduction mechanism, so partitioning must stay.
- ✓
Change the partition column to a DATE column based on event_timestamp and keep clustering on user_id
Why this is correct
Ingestion-time partitioning groups rows by load time, so a 30-day event query scans every partition loaded in that period regardless of event dates. Partitioning on a DATE derived from event_timestamp enables partition pruning to only the relevant event dates, while clustering on user_id still accelerates per-user filtering.
- ✗
Add clustering on a second column like event_type
Why it's wrong here
Adding event_type as a second clustering column refines block pruning within each partition but does nothing to limit how many ingestion-time partitions the 30-day filter scans. Secondary clustering suits queries filtering on that column. The stem's excess partition scans stem from the date predicate, not event_type.
Go deeper
Related to this question
About these practice questions
This PDE question is part of Courseiva's 747-question bank — original exam-style content with full explanations and wrong-answer analysis, never real exam questions or exam dumps. Learn why practice questions differ from exam dumps →
JA
Written and reviewed by Johnson Ajibi, MSc IT Security
Senior Network & Security Engineer · founder of Courseiva
Last reviewed September 2026 · checked against the official Google Cloud exam blueprint
This PDE practice question is part of Courseiva's free Google Cloud certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the PDE exam.