Cloud/ Google Cloud / Data Analytics & AI / Cloud Data Fusion: Visual ETL Pipelines on GCP Without Writing Spark Code

GCP Google Cloud Platform Guide 8 of 10 54 guides ยท updated 2026

Guides to BigQuery, Vertex AI, GKE, Dataflow, and the rest of Google's data- and AI-first cloud โ€” written for engineers shipping real workloads.

Cloud Data Fusion: Visual ETL Pipelines on GCP Without Writing Spark Code

Most data engineering teams have a backlog of integration work that has nothing to do with sophisticated stream processing โ€” pull data from a legacy SQL Server database, clean up a few columns, land it in BigQuery. Writing and maintaining a custom Spark or Beam job for every one of these feels like overkill, but hand-rolled Python scripts scattered across cron jobs age badly too. Cloud Data Fusion exists for exactly this gap: a visual, drag-and-drop pipeline builder for ETL/ELT work that generates and runs real Spark jobs underneath, without requiring every analyst-adjacent engineer to write Scala.

Itโ€™s built on CDAP (Cask Data Application Platform), an open-source project Google acquired and productized, which matters practically because pipelines you build arenโ€™t locked into a proprietary format โ€” the underlying application model is portable.


What Data Fusion Actually Is

Data Fusion is not a lightweight SaaS tool โ€” itโ€™s a full application platform that provisions a dedicated Kubernetes-backed instance per environment. When you create a Data Fusion instance, GCP spins up a GKE cluster running the CDAP control plane, and your pipelines execute as Spark jobs on ephemeral Dataproc clusters that Data Fusion provisions and tears down automatically per pipeline run.

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Cloud Data Fusion Instance โ”‚
โ”‚ (persistent GKE-backed control plane + UI) โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Pipeline Studio (drag-and-drop canvas) โ”‚
โ”‚ Wrangler (interactive data cleaning) โ”‚
โ”‚ Plugin Hub (170+ connectors and transforms) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚ pipeline execution triggers
โ–ผ
Ephemeral Dataproc cluster (per run)
โ”‚
โ–ผ
Source โ”€โ”€โ–บ Transform โ”€โ”€โ–บ Sink
(Cloud SQL, SAP, Salesforce, (BigQuery, GCS,
Kafka, on-prem JDBC, etc.) Bigtable, etc.)

This architecture explains two things people are often surprised by: instances are billed hourly even when idle (because the control plane is always running), and pipeline execution has real startup latency (because a Dataproc cluster has to spin up before the job runs) โ€” Data Fusion is not the tool for sub-minute latency requirements.


Core Concepts

Plugins are the building blocks of a pipeline โ€” sources (read from a system), transforms (clean/reshape data), and sinks (write to a destination). Data Fusion ships with 170+ plugins covering databases, SaaS APIs (Salesforce, SAP, ServiceNow), file formats, and message queues, and you can write custom plugins in Java when the built-in library doesnโ€™t cover a system you need.

Wrangler is the interactive data-cleaning tool, and itโ€™s the feature that most differentiates Data Fusion from generic ETL tools. You upload or connect to a sample of your data, and Wrangler shows you the actual values column by column, letting you build transformation logic (parse a date format, split a column, mask a field, remove nulls) by clicking on the data itself rather than writing transformation code blind. Every click generates a โ€œdirectiveโ€ โ€” a recorded transformation step โ€” that becomes part of the pipeline when youโ€™re done.

Pipelines are the visual DAG connecting sources through transforms to sinks. Each node is configured through a UI panel rather than code, and the whole pipeline compiles down to a Spark job that Data Fusion submits to the ephemeral Dataproc cluster.


Building a Pipeline: A Concrete Example

Say you need to pull customer records from an on-prem SQL Server database, standardize phone number formats, drop rows missing an email, and load the result into BigQuery daily.

  1. Source: Add a Database plugin, configure the JDBC connection string, and specify the query or table.
  2. Wrangler transform: Open a sample of the source data in Wrangler. Click on the phone column, apply a โ€œregex replaceโ€ directive to standardize formatting, then filter out rows where email is null โ€” each of these becomes a recorded directive.
  3. Sink: Add a BigQuery plugin, point it at the target dataset and table, and set write disposition to โ€œtruncate and reloadโ€ or โ€œappendโ€ depending on your use case.
  4. Schedule: Attach a time-based trigger (daily at 2 AM) or a pipeline-completion trigger if this pipeline should run after an upstream pipeline finishes.

The resulting pipeline, once deployed, runs as an unattended scheduled job โ€” no engineer touches it again unless the source schema changes or a new transformation is needed.


What a Wrangler Directive Actually Looks Like

Every click in the Wrangler UI is silently recorded as a line in a directive script, which you can view and edit directly. This is worth knowing because it means Wrangler transformations arenโ€™t a black box โ€” theyโ€™re readable, diffable text:

parse-as-csv :body ',' true
drop body
rename body_1 customer_id
rename body_2 phone_raw
send-to-error !dq:isnull(phone_raw)
set-column phone_clean regex-replace(phone_raw, '[^0-9]', '')
filter-row-if-matched email '^$'

Reading this top to bottom: parse a raw CSV column, drop the original, rename the split columns, route null-phone rows to an error collector instead of failing the whole pipeline, strip non-numeric characters from phone numbers, and filter out rows with empty email addresses. Because this is plain text, it can be reviewed in a pull request the same way youโ€™d review a SQL transformation โ€” which matters for teams trying to keep even their โ€œno-codeโ€ pipelines under some form of change control.


Batch vs Real-Time Pipelines

Data Fusion supports two distinct pipeline types with different execution engines underneath.

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Pipeline type โ”‚ Engine โ”‚ Best for โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Batch โ”‚ Spark on Dataproc โ”‚ Scheduled ETL, backfills โ”‚
โ”‚ Realtime โ”‚ Spark Streaming โ”‚ CDC, near-real-time sync โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Realtime pipelines are less commonly used than batch in practice โ€” for genuinely low-latency streaming, most teams reach for Dataflow directly instead, because Data Fusionโ€™s realtime mode still carries more operational overhead than a purpose-built streaming pipeline. Batch is where Data Fusion earns its keep.


Real-World Use Case: Legacy System Migration

A common scenario: a company migrating off a legacy on-prem data warehouse to BigQuery has dozens of source tables from SAP, Oracle, and flat file exports, each needing slightly different cleaning logic, and a data engineering team too small to hand-write and maintain dozens of custom Spark jobs. Data Fusion lets a smaller team build these pipelines visually, review them in a UI a non-Spark-expert stakeholder can actually read, and hand off maintenance to analysts who understand the business logic even if they canโ€™t write Scala. The visual pipeline also becomes documentation โ€” anyone can open the pipeline and see exactly what transformations happen, which is a real advantage over a 400-line PySpark script during an audit or handoff.


Pricing Reality Check

Data Fusion pricing has a structural quirk that catches teams off guard: you pay for the instance itself (an hourly rate for the always-on control plane) regardless of whether pipelines are running, on top of the Dataproc compute consumed per pipeline execution. A Basic edition instance left running 24/7 for a team that only runs pipelines during business hours is paying for idle control-plane time. Teams that use Data Fusion heavily but only during working hours often script instance start/stop via the API to avoid burning budget on nights and weekends โ€” the instance supports this, but itโ€™s not the default behavior and you have to build it yourself.


Best Practices


Common Mistakes

Treating Data Fusion as a low-latency tool. Between control-plane overhead and ephemeral cluster spin-up, expect pipeline start latency measured in minutes, not seconds. This is fine for hourly or daily batch jobs and wrong for anything expecting near-instant execution.

Under-provisioning the instance edition. The free Developer edition instance is genuinely useful for prototyping but has real limitations on pipeline concurrency and isnโ€™t meant for production workloads โ€” teams sometimes build out a production dependency on a Developer instance and then hit a wall.

Skipping schema validation before scheduling. A source schema change (a renamed or dropped column) breaks a scheduled pipeline silently until the next run fails. Enabling schema drift handling, or at minimum alerting on pipeline failure, avoids discovering this days later.


Data Fusion vs Dataflow vs Dataproc

These three GCP data-processing services get confused constantly because they overlap in capability. Dataflow is the right choice for custom, code-first stream or batch processing where you need fine control over the transformation logic โ€” you write Apache Beam pipelines in Java or Python. Dataproc is for teams that already have Hadoop/Spark/Hive jobs and want a managed cluster to run them on, largely unchanged. Data Fusion sits above both, targeting the case where the transformation logic is standard ETL (extract, clean, load) and a visual interface is more valuable than code-level control โ€” and under the hood, itโ€™s actually generating and running jobs on Dataproc.


Frequently Asked Questions

Do I need to know Spark to use Data Fusion? No โ€” thatโ€™s the point of the tool. You configure plugins and Wrangler directives through the UI, and Data Fusion compiles the pipeline to Spark for you.

Can Data Fusion connect to on-premises databases? Yes, via the Cloud Data Fusion private instance option with VPC peering, or through a JDBC driver plugin configured with appropriate network connectivity (VPN or Interconnect) to reach on-prem systems.

What happens if a pipeline fails partway through? Behavior depends on the sinkโ€™s write disposition and whether the pipeline was configured with checkpointing. For BigQuery sinks with truncate-and-reload, a failed run typically leaves the previous data intact until a successful run completes โ€” but this should be verified per pipeline rather than assumed.

Is Data Fusion suitable for real-time analytics dashboards? Generally no โ€” the realtime pipeline mode exists but for genuinely latency-sensitive dashboards, a purpose-built Dataflow streaming pipeline feeding Pub/Sub and BigQuery streaming inserts is the more common and better-supported pattern.

Can non-engineers actually build production pipelines in Data Fusion? Partially. Wrangler genuinely lowers the bar for data cleaning logic, and an analyst comfortable with spreadsheet-level transformations can go a long way. But connection configuration, error handling design, and performance tuning of the underlying Dataproc cluster still benefit from engineering involvement, especially for pipelines processing meaningful data volume.


A Note on Team Fit

Data Fusion works best when the organization already has a mix of skill levels touching the same pipelines โ€” a data engineer setting up connections and cluster profiles, an analyst refining Wrangler directives against real sample data, and a platform team managing instance lifecycle and cost. If your team is small and fully Spark-literate, hand-written Beam or PySpark jobs under source control will likely be faster to build and easier to unit test than the equivalent visual pipeline. Data Fusion earns its cost when the visual, reviewable nature of the pipeline is itself valuable โ€” for audits, for cross-functional handoffs, or for reducing the bus factor on integration logic that would otherwise live only in one engineerโ€™s head.


Summary

Data Fusionโ€™s real value is turning ETL work that would otherwise require a Spark-literate engineer into something a broader team can build and maintain visually, without sacrificing the ability to run at genuine data-warehouse scale underneath. Itโ€™s not the right tool for low-latency streaming or for teams that already have mature, code-first data pipelines theyโ€™re happy maintaining โ€” but for the very common case of โ€œmove data from A to B with some cleaning in between, on a schedule,โ€ it removes a surprising amount of engineering overhead. Budget for the always-on instance cost from day one, and treat pipeline export-to-source-control as a non-negotiable practice rather than an afterthought.