Skip to content

Professional Data Engineer · Domain 1: Designing data processing systems · 22% of the exam

Task 1.3: Designing for flexibility and portability.

Mapping current and future business requirements to the architecture, data and application portability across clouds and residency rules, and staging, cataloging, profiling and discovering data.

Study it

  • Portability: open table formats, BigQuery Omni and Apache Beam

    Lesson coming

  • Staging, cataloging, profiling and discovering data in Knowledge Catalog

    Lesson coming

Sample questions

Try each one before opening the answer. Every option is explained, with the Google Cloud documentation page that proves it.

Question 1 · choose 1

A media company wants a single copy of its event data, in an open table format, in a Cloud Storage bucket it owns. Spark jobs on Managed Service for Apache Spark must read that copy, and BigQuery must apply DML updates to it, accept high-throughput streaming through the Storage Write API, and optimize the files automatically. Which table type should the data engineer choose?

  1. AApache Iceberg managed tables in BigQuery, stored in the company's bucket
  2. BBigQuery standard tables, exported to Parquet files for the Spark jobs
  3. CBigLake tables over the Parquet files that the Spark jobs write to Cloud Storage
  4. DObject tables over the event files in the company's bucket
Show the answer and why
  • AApache Iceberg managed tables in BigQuery, stored in the company's bucket

    Correct

    Iceberg managed tables keep data in a bucket the customer owns in the open Iceberg format, support GoogleSQL DML and Storage Write API streaming, and get automatic file sizing and clustering, while other engines read the same copy.

  • BBigQuery standard tables, exported to Parquet files for the Spark jobs

    Incorrect

    Standard tables keep data in BigQuery storage, so Spark would read an exported second copy that is stale between exports.

  • CBigLake tables over the Parquet files that the Spark jobs write to Cloud Storage

    Incorrect

    BigLake tables over Cloud Storage files are read through a connection for querying and governance; they do not give BigQuery DML and streaming writes on that data.

  • DObject tables over the event files in the company's bucket

    Incorrect

    Object tables are read-only tables over unstructured objects, giving a metadata index of the files; they accept no DML and no streaming writes.

Open formats avoid locking the data to one engine. Apache Iceberg managed tables give a BigQuery-managed experience (DML, streaming, automatic storage optimization, time travel) while the data files live in the customer's own Cloud Storage bucket in Iceberg format, so Spark and other engines can work on the same single copy.

Question 2 · choose 1

A retailer's clickstream lands in Amazon S3 in an AWS region. Legal requires the raw data to stay in AWS. The analytics team wants to query it with GoogleSQL from BigQuery and write the results back to S3, without building or running transfer jobs. What should the data engineer use?

  1. AA BigQuery Data Transfer Service transfer from Amazon S3 into a dataset
  2. BStorage Transfer Service jobs that copy the files to a Cloud Storage bucket
  3. CA Dataflow pipeline that reads the S3 objects and writes them to BigQuery
  4. DBigQuery Omni, with a connection to AWS and BigLake tables over the S3 data
Show the answer and why
  • AA BigQuery Data Transfer Service transfer from Amazon S3 into a dataset

    Incorrect

    The Amazon S3 transfer loads the files into BigQuery storage in Google Cloud, so the raw data leaves AWS.

  • BStorage Transfer Service jobs that copy the files to a Cloud Storage bucket

    Incorrect

    Storage Transfer Service copies the objects into Cloud Storage, which moves the raw data out of AWS and adds transfer jobs.

  • CA Dataflow pipeline that reads the S3 objects and writes them to BigQuery

    Incorrect

    A pipeline that writes to BigQuery moves the data into Google Cloud and is a transfer job to build and run.

  • DBigQuery Omni, with a connection to AWS and BigLake tables over the S3 data

    Correct

    BigQuery Omni runs the query engine in the AWS region where the data sits, through a connection and BigLake tables, and can write results directly back to S3.

When data has to stay in another cloud, BigQuery Omni brings the query to the data: BigQuery compute runs in the same AWS or Azure region, the data is reached through a connection and BigLake tables, and results can be written back to the other cloud's storage so that nothing crosses clouds.

Question 3 · choose 1

A company wants to build new batch and streaming pipelines on Google Cloud now, but its architecture board requires that the pipeline code could later run on Apache Flink or Apache Spark in another environment without being rewritten. Which approach meets this requirement?

  1. AWrite the pipelines in BigQuery SQL scheduled with Dataform
  2. BWrite the pipelines with Apache Beam and run them on Dataflow
  3. CBuild the pipelines in Cloud Data Fusion's visual designer
  4. DWrite the pipelines as Workflows definitions in YAML
Show the answer and why
  • AWrite the pipelines in BigQuery SQL scheduled with Dataform

    Incorrect

    GoogleSQL and Dataform workflows run in BigQuery; they cannot run on Flink or Spark without a rewrite.

  • BWrite the pipelines with Apache Beam and run them on Dataflow

    Correct

    Beam is open source and supports several runners, including Dataflow, Flink and Spark, so the same code can move without a rewrite.

  • CBuild the pipelines in Cloud Data Fusion's visual designer

    Incorrect

    Data Fusion pipelines are CDAP pipelines run by Data Fusion; they are not code that runs on Flink.

  • DWrite the pipelines as Workflows definitions in YAML

    Incorrect

    Workflows orchestrates service calls in its own syntax; it is not a data processing model that Flink or Spark can run.

Dataflow runs Apache Beam pipelines. Beam has one programming model for batch and streaming and several runners, so pipeline code written for Dataflow can be moved to another runner, such as Flink or Spark, without rewriting it, which keeps the processing logic portable.

Question 4 · choose 1

Before modelling a newly landed 2 TB BigQuery table, a data engineer wants, for every column, the share of nulls, the approximate number of distinct values, the most common values and minimum, maximum and average, shown on the table's page for everyone who later uses it. What is the quickest way to get this?

  1. AA Sensitive Data Protection discovery scan of the table's project
  2. BAn auto data quality scan with a not-null rule on each column
  3. CQueries against INFORMATION_SCHEMA.COLUMNS for the table
  4. DA Knowledge Catalog data profiling scan published to the table
Show the answer and why
  • AA Sensitive Data Protection discovery scan of the table's project

    Incorrect

    Discovery profiles data for sensitive information types and risk, not general column statistics.

  • BAn auto data quality scan with a not-null rule on each column

    Incorrect

    Data quality scans check rules you define and report pass or fail; they do not describe the distribution of every column.

  • CQueries against INFORMATION_SCHEMA.COLUMNS for the table

    Incorrect

    INFORMATION_SCHEMA.COLUMNS describes column metadata such as names and types, not the values in the data.

  • DA Knowledge Catalog data profiling scan published to the table

    Correct

    A data profiling scan computes null percentage, approximate distinct percentage, top values and statistics per column, and can publish the results to the table's Data profile tab.

Data profiling in Knowledge Catalog describes what is in a table: per column it reports nulls, approximate distinct values, the top ten values and, for numbers and strings, statistics such as minimum, maximum and average. Its results can also seed recommended rules for auto data quality.

Question 5 · choose 1

Mobile app events arrive with a payload whose fields change almost every week as product teams add and drop attributes. Analysts query a handful of payload fields at a time. The data engineer wants to load events into BigQuery without editing the table schema for each change, while still querying individual fields directly. How should the payload be stored?

  1. AIn a column of the JSON data type, queried with field access
  2. BIn a STRUCT column whose fields mirror the current payload
  3. CIn a STRING column, parsed with JSON functions in each query
  4. DIn a separate table for each event version, joined by a view
Show the answer and why
  • AIn a column of the JSON data type, queried with field access

    Correct

    The JSON type needs no schema up front, and BigQuery encodes and processes each JSON field individually, so fields can come and go while queries use dot notation.

  • BIn a STRUCT column whose fields mirror the current payload

    Incorrect

    A STRUCT has a fixed schema enforced for all values, so every weekly change would need a schema update.

  • CIn a STRING column, parsed with JSON functions in each query

    Incorrect

    A string works, but every query must parse the text first, which gives up the per-field processing of the JSON type.

  • DIn a separate table for each event version, joined by a view

    Incorrect

    A table per version multiplies tables and views with every change, the opposite of avoiding schema work.

For semi-structured data whose shape keeps changing, the JSON data type gives flexibility without giving up queryability: no schema is needed at load, and BigQuery stores each field so that queries can reach it directly. STRUCT is better when the structure is stable and should be enforced.

Question 6 · choose 1

Pipelines write intermediate staging tables into a BigQuery dataset named staging before merging them into curated datasets. Hundreds of staging tables are left behind every week and nobody remembers to delete them. Each staging table is useless after three days. What is the simplest way to keep the staging dataset clean?

  1. ASchedule a weekly query that drops tables older than three days
  2. BUse a lifecycle rule on the dataset to delete tables after three days
  3. CSet a default table expiration of three days on the staging dataset
  4. DSet a three-day time travel window on the staging dataset
Show the answer and why
  • ASchedule a weekly query that drops tables older than three days

    Incorrect

    A cleanup job works but is extra code to maintain and leaves tables in place for up to a week.

  • BUse a lifecycle rule on the dataset to delete tables after three days

    Incorrect

    Lifecycle rules are a Cloud Storage feature for objects in buckets; BigQuery datasets use expiration settings.

  • CSet a default table expiration of three days on the staging dataset

    Correct

    A dataset's default table expiration applies to each table created in it without its own expiration, and an expired table is deleted with its data.

  • DSet a three-day time travel window on the staging dataset

    Incorrect

    The time travel window controls how far back past states can be read; it does not delete current tables.

Staging data is a classic use of expiration. A default table expiration on the dataset is applied to new tables that do not set their own, and BigQuery deletes each table once it expires, so the dataset cleans itself.

Practise domain 1 →Practise all domains →