Google Cloud BigQuery Data Transfer Service: Automatic Deliveries into Your Data Warehouse
A beginner-friendly, book-style guide to BigQuery Data Transfer Service, the managed Google Cloud service that loads data from advertising platforms, SaaS tools, other clouds, databases and files into BigQuery on a schedule, with no pipeline code to write.
Imagine a restaurant that needs fresh vegetables, bread and fish every morning. The owner could drive to three different markets every day, load the car, and carry everything inside. Or the owner could sign up for a delivery service that collects each order from each supplier on a fixed timetable and places it on the kitchen counter before opening time. BigQuery Data Transfer Service is that delivery service for data, and BigQuery is the kitchen.
This guide assumes you know nothing about data loading or data warehouses. Every new word is explained the first time it appears, with a simple comparison from daily life. By the end you will understand what the service is, which sources it supports, how a transfer runs, how to schedule and repair transfers, how to keep them secure and watched, how pricing works, and when to use a different tool.
1What Is BigQuery Data Transfer Service and Why Does It Exist?
It automates the movement of data into BigQuery on a regular, managed schedule.
The problem of getting data in
BigQuery is Google Cloud’s data warehouse, a place where huge amounts of data can be stored and analyzed with SQL. But a warehouse is only useful when it is full of data, and that data lives somewhere else. Advertising numbers sit inside advertising platforms. Customer records sit inside a sales application. Log files sit in cloud storage on another provider. Orders sit in a database. Someone has to carry all of this into BigQuery, and keep carrying it every day as new data appears.
The old way: custom pipelines
Traditionally, an engineer wrote a program for each source. The program called the source’s interface, handled logins, dealt with limits, converted formats, loaded the result and retried when something failed. Each program had to be scheduled, monitored and repaired whenever the source changed its interface. A company with twenty sources ended up with twenty fragile programs and a team busy keeping them alive.
What the service does
BigQuery Data Transfer Service, often shortened to DTS, replaces those programs with configuration. You pick a source, give it permission to read, choose a destination dataset in BigQuery and set a schedule. From then on the service loads data automatically on that schedule. It can also backfill, meaning re-load a past period to recover from outages or gaps. It is a one-way street: it loads data into BigQuery and cannot be used to move data out.
Instead of hiring a driver for every supplier, you sign one contract with a delivery company. You say what you want, from whom, and when. The company handles the routes, the keys at each door and the retries when a supplier is closed.
DTS is built for scheduled batch loads. It is not a tool for streaming individual events as they happen, and it does not run ad hoc analysis. Think of it as the supply line, not the kitchen.
2Core Concepts in Plain English
Twelve words you will meet in every DTS conversation.
Data source
The kind of system the data comes from, such as Google Ads, Amazon S3 or a database. DTS offers one connector per data source.
Transfer configuration
The saved setup of one transfer: its source, destination, schedule, parameters and identity. It is the main thing you create.
Transfer run
One execution of a transfer configuration, for a particular time window. A daily transfer creates one run per day.
Destination dataset
The BigQuery dataset, which is like a folder of tables, where the loaded data lands.
Schedule
The timetable that says when runs start, such as every day at a certain hour, or in response to an event.
Backfill
A request to re-run a transfer for past dates, to fill gaps or recover from an outage.
Connector
The ready-made piece of DTS that knows how to talk to one data source and shape its data into BigQuery tables.
Scheduled query
A SQL query that runs on a timetable and saves its result into a table. DTS runs these too.
Dataset copy
A transfer that copies a BigQuery dataset to another dataset, in the same or another location.
Run notification
A message sent when a run finishes, by email or to a Pub/Sub topic, so people and systems know the result.
Service account
A non-human identity that a transfer can use, so it does not depend on one person’s login.
Batch loading
Moving data in groups at set times, in contrast to streaming, which moves each event as it happens.
Hold on to the picture: a transfer configuration is the standing order, each run is one delivery, and the dataset is the shelf where deliveries are put.
3Where DTS Fits in a Data Platform
The first stop of a data journey, before cleaning and analysis.
A modern data platform has stages. First data is ingested, meaning brought into the warehouse. Then it is transformed, which means cleaned, joined and reshaped. Finally it is analyzed and shared through reports and models. DTS lives in the first stage. It lands raw data into BigQuery in a reliable, repeatable way, so that later stages can start from a trustworthy base.
flowchart LR
SRC["Sources: ads, SaaS, clouds, databases, files"] --> DTS["BigQuery Data Transfer Service"]
DTS --> RAW["Raw datasets in BigQuery"]
RAW --> TRF["Transform with SQL or Dataform"]
TRF --> MART["Clean tables and views"]
MART --> BI["Dashboards, reports and machine learning"]
ELT, not ETL
Older systems extracted data, transformed it on a separate machine and then loaded the result, which is called ETL. With a powerful warehouse such as BigQuery, it is often better to load first and transform inside the warehouse with SQL, called ELT. DTS follows the ELT idea. It loads data in a form close to the source, and you shape it afterwards with queries.
A supermarket receives goods at its loading dock, unpacks and shelves them, and customers pick what they want. DTS is the loading dock. Transformation is stocking the shelves, and dashboards are the customers walking the aisles.
Keep raw transferred data in its own datasets, and build cleaned tables in separate ones. When a source changes, or a mistake is found, you can rebuild the clean layer from the untouched raw layer.
4Architecture and Components
The few objects you create, and the work Google does behind them.
From your side, DTS has a small number of objects. You enable the service in a project, create a destination dataset, and create a transfer configuration for each source. Behind the scenes, the service reaches the source using the credentials you gave, retrieves the data, stages it, loads it into BigQuery tables and records the result. You never see or manage the machines that do this.
flowchart TD
CFG["Transfer configuration: source, schedule, identity"] --> RUN1["Run: Monday window"]
CFG --> RUN2["Run: Tuesday window"]
CFG --> RUN3["Run: Backfill of earlier dates"]
RUN1 --> DS["Destination dataset in BigQuery"]
RUN2 --> DS
RUN3 --> DS
RUN1 --> LOG["Run history and logs"]
RUN2 --> LOG
RUN3 --> LOG
RUN1 --> NOTE["Notifications by email or Pub/Sub"]
Data transfer API
The programming interface and console pages used to create, list, update and monitor transfers.
Transfer configuration
Holds all the settings of one recurring transfer. Changing the schedule or destination means editing this object.
Transfer runs and logs
Each run records its status, timing and messages, which is the first place to look when something fails.
Destination tables
Tables are created and updated inside the chosen dataset, often partitioned by date to keep queries efficient.
A standing order with a florist has a contract, a delivery slip for each visit, and a shelf at home where the flowers go. The configuration is the contract, runs are the slips and the dataset is the shelf.
5Supported Data Sources
A growing list of connectors, grouped by what kind of system they read from.
DTS offers connectors for many systems. Some are generally available and covered by full support, while others are in preview, meaning they are still maturing and may change. The list grows over time, so always check the current documentation for the exact sources and their status.
Google Ads, Campaign Manager, Display and Video 360, Search Ads 360, Ad Manager
Advertising performance, campaign settings and reporting data from Google’s advertising products.
Google Analytics 4, YouTube, Google Play, Merchant Center
Website and app analytics, video channel and content owner reports, app store reports and shopping data.
Cloud Storage, Amazon S3, Azure Blob Storage
Files such as CSV, JSON and other formats, loaded from buckets and containers on a schedule.
MySQL, PostgreSQL, Oracle, SQL Server, Teradata, Amazon Redshift, Snowflake, Hive
Tables from operational databases and other warehouses, useful for migration and ongoing replication of batch data.
Salesforce, ServiceNow, HubSpot, Shopify, Mailchimp, Klaviyo and others
Customer, sales, service and marketing data from business applications.
Facebook Ads, Salesforce Marketing Cloud, Stripe, PayPal
Advertising from other platforms, campaign reports and payment records.
A connector in preview may change its tables, behavior or price when it becomes generally available, and preview features come without the usual service commitments. For critical reporting, prefer generally available connectors, or plan for change.
A delivery company has routes it has served for years and new routes it is trying out. The old routes are dependable, and the new ones are still being tested. Know which is which before you promise a customer a time.
6Three Jobs Done by DTS: Loads, Dataset Copies and Scheduled Queries
The service does more than load files, and the other jobs are easy to overlook.
Loading from external sources
The main job. Connectors pull data from outside systems and load it into BigQuery tables on a schedule.
Dataset copies
Copies a dataset to another dataset, in the same project or another, and in the same or a different location. Useful for sharing and for disaster recovery.
Scheduled queries
Runs SQL on a timetable and writes results to a table, which is a simple way to build summary tables without extra tools.
Scheduled queries in more detail
Many teams meet DTS first through scheduled queries without realizing it. You write a SQL query, choose how often it should run, and choose a destination table. Each run executes the query and either replaces or adds to the table. This is a tidy way to build a daily summary, a weekly snapshot or a cleaned copy of raw data, with no external scheduler.
Dataset copies in more detail
A dataset copy transfer duplicates tables from a source dataset to a destination dataset. It can be repeated on a schedule to keep the copy fresh. Teams use it to give another team its own copy, to move data closer to users in another region, or to keep a backup in a separate project.
Daily summary table
A scheduled query reads yesterday’s raw orders and writes a small table of totals by region, ready for dashboards.
Cross-region copy
A dataset copy places a replica of key tables in another location, so analysts nearby query it faster and a copy exists if one location has trouble.
Project to project sharing
A central data team copies curated tables into a department’s project, where the department controls cost and access.
A newspaper delivery company also offers a service to photocopy a magazine for another office, and to prepare a daily summary sheet. Different jobs, one reliable timetable.
7Internal Working: Life of a Transfer Run
What happens between the schedule firing and the data appearing in your table.
sequenceDiagram
participant S as Scheduler
participant D as DTS Service
participant X as Source System
participant B as BigQuery
participant N as Notifications
S->>D: Time reached, start a run
D->>D: Check identity and permissions
D->>X: Connect and read data for the window
X-->>D: Return data
D->>D: Stage and shape into table format
D->>B: Load into destination tables
B-->>D: Load result
D->>N: Send success or failure message
The schedule fires
At the configured time, or when an event arrives, a run is created for a specific time window.
Identity is checked
The service uses the credentials of the transfer, either a user’s authorization or a service account, to prove it may read the source and write the destination.
Data is read from the source
The connector fetches only what belongs to the window, such as yesterday’s report or newly arrived files.
Data is staged and shaped
It is converted into the table layout that the connector defines, in the same location as the destination dataset.
Data is loaded
Rows are written into BigQuery tables, adding to them or replacing parts, depending on the source and settings.
The result is recorded
The run is marked succeeded, failed or cancelled, logs are written, and notifications are sent if configured.
A courier collects a parcel from the sender, checks the ID at pickup, sorts it at the depot, delivers it to your door and sends you a message saying it arrived. DTS does the same with data.
Because each run covers a window, you can reason about it clearly: this run is for this day. When something goes wrong, you re-run only the affected windows, not the whole history.
8Scheduling, Event-Driven Runs and Backfills
Choosing when data arrives, and repairing the past when it does not.
Time based schedules
Most transfers run on a repeating timetable, such as every day at a chosen hour, or every hour for sources that support it. The right frequency depends on how fresh the data must be and how often the source updates. Loading hourly something that changes once a day wastes effort and cost.
Event-driven transfers
For files, waiting for a clock is not always ideal. Some transfers can instead be triggered by an event, such as a new file arriving in a Cloud Storage bucket, using a Pub/Sub notification. This brings the data into BigQuery soon after it appears, without polling on a timer.
Backfills
Pipelines break. A source is down, a password expires, a quota is hit, and a few days of data are missing. A backfill lets you ask DTS to run the transfer again for a range of past dates. Not every source supports backfill in the same way, and some can only return a limited history, so check what your connector allows.
| Style | When it runs | Best for |
|---|---|---|
| Daily schedule | Once a day at a set time | Reports and sources that update daily |
| Hourly or more frequent schedule | Several times a day, where supported | Fresher file loads and near-real-time dashboards |
| Event-driven | When a new file or message arrives | Landing files as soon as they appear |
| On demand | When you press run | Testing and one-off loads |
| Backfill | For chosen past dates | Recovering after outages and gaps |
Find the gap
Check run history and tables to see which dates are missing or wrong.
Fix the cause
Repair credentials, quotas or source issues before re-running, or the backfill will fail again.
Run the backfill
Request runs for the missing range, in manageable chunks.
Verify the result
Compare row counts or totals with the source to confirm the gap is closed, and make sure nothing is duplicated.
Backfilling without checking how the connector writes data. Some transfers replace the day’s partition, which is safe to repeat, while others append, which can create duplicates. Learn the behavior of your source before repairing.
9Loading Files from Cloud Storage, Amazon S3 and Azure
The most common use: files in buckets, turned into queryable tables.
Many data sources export files, such as daily log files, partner data drops or exports from other systems. DTS can pick these up from Cloud Storage, Amazon S3 and Azure Blob Storage, and load them into BigQuery. You give a location and a file pattern, and the service finds matching files, loads them and tracks which it has already handled.
File location and pattern
A path with wildcards describes which files belong to the transfer, such as all files for a given date.
File format
Common formats such as CSV, JSON, Avro, Parquet and ORC are supported, with options for headers and delimiters.
Destination table and naming
Table names can include runtime values, such as the run date, so each run writes to the right table or partition.
Write behavior
Choose whether to add rows to the table or to mirror the files, replacing the table with the latest data.
Schema handling
Let BigQuery detect the schema, or supply it, so columns have the right names and types.
Error tolerance
Decide how many bad rows to allow before a run fails, so one broken line does not block everything.
flowchart LR
S3["Amazon S3 bucket"] --> DTS["DTS transfer"]
AZ["Azure Blob container"] --> DTS
GCS["Cloud Storage bucket"] --> DTS
DTS --> BQ["BigQuery table, partitioned by date"]
Cross-cloud loads
Moving data from another cloud involves network transfer between providers, and the source provider may charge for data leaving its network. Hourly loads from Amazon S3 are available for fresher data. Credentials for the other cloud are stored in the transfer configuration, so treat them with the same care as any secret, and use limited, read-only keys.
A mailroom collects letters from several post boxes on a schedule, ignores the ones it has already collected, and files them in the right drawer by date. Pattern matching is the rule for which post box and which letters.
Write files into dated folders or with dated names, and avoid overwriting files in place. Predictable file layouts make transfers reliable and backfills simple.
10Advertising and Analytics Connectors
Turning campaign and website data into tables that analysts can join with the rest of the business.
Marketing teams live in advertising and analytics products, each with its own reports and interface. Their data becomes much more valuable when it sits next to sales, product and customer data in one warehouse. DTS connectors for Google Ads, Campaign Manager, Display and Video 360, Search Ads 360 and Google Analytics 4 deliver this data into a standard set of BigQuery tables, so it can be joined and analyzed with SQL.
Cost per customer acquired
Advertising spend from Google Ads is joined with orders from the sales database, showing which campaigns bring profitable customers.
Full funnel analytics
Website behavior from Analytics 4 is combined with advertising impressions and clicks, so teams can follow a user journey across channels.
Custom reports
For some connectors, you can ask for a custom report using the source’s own query language, pulling only the fields you need and reducing volume.
Historical archives
Advertising platforms keep data only for a limited time, so transferring it to BigQuery builds a long-term history for trends and year-over-year comparisons.
| Question | What to know |
|---|---|
| Who authorizes the transfer? | An account with access to the advertising or analytics data, or a service account where supported |
| How fresh is the data? | Usually daily, and reports may be updated for several days after the date, as platforms finalize numbers |
| Can I load older data? | Backfills are possible within the limits of the source platform |
| What do the tables look like? | A set of tables defined by the connector, often partitioned by date, with documented columns |
Treating yesterday’s advertising numbers as final. Platforms often adjust figures for days after the event, so connectors refresh recent windows. Build reports that expect small changes in the latest few days.
11Databases, Warehouse Migrations and SaaS Applications
Bringing tables from operational systems and other warehouses into BigQuery.
Database and warehouse connectors
For databases such as MySQL, PostgreSQL, Oracle and SQL Server, and for warehouses such as Teradata, Amazon Redshift and Snowflake, DTS can copy tables into BigQuery. This is widely used for migration, where an organization moves its analytics away from an older warehouse. It also supports ongoing batch replication, so reporting can run in BigQuery without burdening the operational database. For some warehouse sources, DTS can also help with schema conversion and moving data and history.
SaaS application connectors
For applications such as Salesforce, ServiceNow, HubSpot and Shopify, connectors read the application’s objects, such as accounts, tickets or orders, and load them as tables. Some of these connectors are offered through Google Cloud Marketplace as third party transfers. They are enrolled and configured in the console, and support comes from the provider of the connector.
One-time migration
A single large copy of tables to move a warehouse, followed by switching reports to BigQuery.
Recurring replication
Scheduled copies of operational tables, so analysts always work from a fresh but separate copy.
Parallel run
Old and new warehouses run side by side while results are compared, before the old one is retired.
Application data hub
Several business applications feed one set of tables, giving a unified view of customers.
Moving a library to a new building means carrying the books, then keeping the new shelves up to date while the old building is still open. Warehouse migration and recurring replication are those two steps.
For databases that must be mirrored with changes within seconds, consider a change data capture service instead. DTS is best for scheduled batch copies. The comparison chapter explains the difference.
12Locations, Regions and Data Residency
Where your data is processed and stored matters for law, speed and cost.
BigQuery datasets live in a location, which can be a multi-region such as a large geographic area, or a single region. DTS follows the destination dataset. The transfer configuration is set to the same location as the destination dataset, and the service processes and stages data in that same location. The source can be anywhere, since DTS supports transfers from the source’s region to any destination location, but the destination location decides where processing happens.
flowchart TD
SRC["Source in any region or cloud"] --> DTS["DTS processes and stages in destination location"]
DEST["Destination dataset: chosen location"] --> DTS
DTS --> OUT["Tables stored in the destination location"]
| Situation | What to do |
|---|---|
| Data must stay in a country or region | Create the destination dataset in an allowed location before creating the transfer |
| Source and analysts are in different regions | Choose the destination near the analysts, and consider cost of moving data |
| Need data in two locations | Use a dataset copy to replicate to a second location |
| Wrong location chosen | Create a new dataset in the right location, and recreate the transfer, since a dataset’s location cannot be changed |
Deliveries are unpacked in the warehouse where they are going to be stored. The delivery truck can come from anywhere, but the unpacking happens at the destination.
Creating the dataset in a default location without checking residency rules. Data that was loaded into the wrong location may need to be deleted and reloaded, which is costly and may already breach policy.
13Identity, Security and Access Control
A transfer holds the keys to both the source and the warehouse, so protect it carefully.
Whose identity does the transfer use?
A transfer can run with the authorization of a person, or, for many sources, with a service account. A transfer tied to a person breaks when that person leaves the company, changes their password or loses access. A service account is a stable identity for the transfer itself, which is the better choice for production. Service account support has been added for many sources over time, so check which your connector supports.
Permissions you need
The person creating a transfer needs permission to manage transfers in the project, and to edit the destination dataset. The identity running the transfer needs access to the source data and permission to write to the destination. For third party sources, you also need whatever permissions the external system requires. Grant roles on specific datasets rather than on the whole project where possible.
Service accounts
Run production transfers as service accounts, so they survive staff changes.
Least privilege
Give the identity access only to the needed source data and destination dataset.
Encryption
Data is encrypted in transit and at rest, and customer-managed keys are supported for several transfer types.
Workforce identity federation
Supported for most sources, allowing external identity providers to be used for authorization.
Credentials for other clouds
Use read-only keys limited to the needed bucket, and rotate them regularly.
Audit logging
Administrative actions are recorded, so you can see who created or changed transfers.
A delivery contract signed by a named employee is a problem when that employee leaves. A contract signed by the company’s own account office continues smoothly. Service accounts are the company’s own account office.
Leaving critical transfers authorized by an individual’s personal account. When the credential expires or the person leaves, the data silently stops arriving. Move important transfers to service accounts.
14Monitoring, Notifications and Troubleshooting
A pipeline that fails quietly is worse than one that fails loudly.
Every run records its status and logs, which you can inspect in the console. You can also configure run notifications. Pub/Sub notifications send a message to a topic when a run finishes as succeeded, failed or cancelled, which suits automation. Email notifications tell people when a run fails. If a transfer uses a service account, the email may not reach a real person, so Pub/Sub notifications are recommended in that case.
flowchart LR
RUN["Transfer run finishes"] --> ST{"Status"}
ST -->|"Succeeded"| OK["Pub/Sub message: downstream jobs can start"]
ST -->|"Failed"| FAIL["Pub/Sub and email: alert the team"]
ST -->|"Cancelled"| CAN["Pub/Sub message: investigate"]
OK --> NEXT["Start transformation workflow"]
FAIL --> TKT["Create ticket or page on-call"]
Permission denied
The identity lacks access to the source or destination. Check roles on the dataset and the source system.
Authorization expired
A personal authorization has expired or been revoked. Reauthorize, or move to a service account.
No data found
The file pattern or window matches nothing, or the source has not published the data yet. Check paths and timing.
Schema mismatch
The source changed a column or type. Update the schema settings and fix downstream queries.
Quota or rate limits
The source or BigQuery limited the request. Spread the schedule or request an increase.
Location mismatch
A dataset or resource is in a different location than the transfer expects. Align locations.
Open the run history
Find the failed run and read its status and error message.
Check credentials and permissions
Most failures are about access: expired authorization, missing roles or changed keys.
Check the source
Confirm the source is available and that the data for the window exists.
Fix and re-run
Run the failed window again, or backfill a range, then verify the result.
Add a data freshness check in your reports, such as a visible last updated date. People will notice a stale table long before they would notice a missing notification.
15Reliability, SLOs and Compute Resources
What Google promises, and what depends on other people’s systems.
Google describes a data delivery objective for scheduled transfers from sources within Google Cloud. For transfers from third party or non-Google sources, the objective does not apply, because outages and limits at those sources can affect the transfer. In practice, treat transfers from outside sources as dependent on those sources, and design reports to tolerate delay.
Slots and processing
BigQuery does its work using units of compute capacity called slots. Jobs started by DTS use the slots of a reservation only if the project, folder or organization is assigned to a reservation for the relevant job types. Otherwise they use the default on-demand arrangements. Teams with reservations should check how transfer jobs are assigned, so that loading data does not compete with business queries, or the other way around.
| Topic | What to know |
|---|---|
| Data delivery objective | Applies to scheduled transfers from sources within Google Cloud, not to third party sources |
| Dependency on the source | Source outages, limits and late data can delay transfers |
| Preview connectors | Come without the usual service commitments |
| Reservations | Control whether transfer jobs use reserved slots, depending on job type assignment |
| Quotas | Limits exist on transfers, runs and loads, so check the quotas page for large setups |
A delivery company can promise to bring parcels from its own depots on time, but cannot promise that a supplier’s warehouse opens on time. Build your timetable with that in mind.
Starting the morning dashboard refresh at the exact minute the transfer is scheduled to begin. Chain downstream jobs to the success notification instead, so reports build only after the data has really arrived.
16Understanding Cost and Pricing
The transfer fee is only one part of what loading data costs.
DTS pricing has been evolving. Google announced a consumption-based model for third party SaaS and database connectors that takes effect when each connector becomes generally available, with connectors free while in preview. More recently, the orchestration fee has been removed for many Google sources, object storage and migration connectors. Because terms change, use the official pricing page for the current picture of which transfers are free and which are charged.
Whatever the transfer fee is, other costs remain. Once data has landed, normal BigQuery storage and query pricing applies. Cross-cloud transfers can involve network charges from the source provider. Pub/Sub notifications incur Pub/Sub charges. Source systems may also bill for exports or API usage.
| Cost driver | Why it grows | How to control it |
|---|---|---|
| Transfer fees | Charged connectors billed by consumption | Check which connectors are charged, and load only needed objects |
| BigQuery storage | Raw history accumulates | Use partition expiration and archive or delete old raw data |
| Queries on raw data | Analysts scan large unpartitioned tables | Partition and cluster tables, and query only needed columns and dates |
| Too frequent schedules | More runs than the data needs | Match frequency to how often the source changes |
| Cross-cloud egress | Large files leaving another cloud | Compress, filter at the source and transfer only new data |
| Notifications | Many messages | Subscribe only where useful |
A free transfer can still lead to a large bill if you load everything and query it carelessly. The cost of data is mostly in how much you store and how much each query reads, so design tables with partitions from day one.
Compare the total cost of DTS with building and running your own pipeline, including engineers’ time and monitoring. For many teams, the managed service is cheaper once people are counted.
17Real-World and Industry Examples
Where scheduled loading quietly powers decisions.
These are common patterns rather than named customer stories, because specific designs and contracts change over time.
Retail and e-commerce
Orders from a store database, advertising data from several platforms and shipment files from carriers are loaded daily, so one dashboard shows revenue, ad spend and delivery performance.
Marketing agencies
An agency loads advertising data for many client accounts into separate datasets, and automates monthly reports that used to be built by hand in spreadsheets.
Software as a service companies
Product usage logs from storage, customer data from a sales application and support tickets from a service tool are brought together to find customers at risk of leaving.
Financial services
Daily files from partners and transaction exports are loaded under strict controls, with service accounts, regional datasets and audit logs.
Media and publishing
Video platform reports, advertising revenue and audience analytics are combined to see which content earns the most.
Warehouse modernization
A company moves from an older on-premises warehouse to BigQuery, using database and warehouse connectors to copy history, then keeps loading deltas until the cutover.
Multicloud analytics
Log files in another cloud’s storage are loaded hourly into BigQuery, so security and operations teams analyze all environments in one place.
18Advantages, Disadvantages and Trade-offs
Convenience and reliability, in return for less flexibility than custom code.
Advantages
- No code or servers needed to load data on a schedule
- Many ready-made connectors, maintained by Google or partners
- Built-in scheduling, backfills, run history and notifications
- Handles authorization, retries and file tracking for you
- Works with scheduled queries and dataset copies in one tool
- Integrates with BigQuery security, locations and encryption
Disadvantages / Trade-offs
- Loads data into BigQuery only, with no way to move data out
- Batch and scheduled, so not suited to streaming events
- Connector tables and options are fixed, with limited custom transformation
- Some connectors are in preview, with less commitment and possible change
- Depends on third party source availability and limits
- Pricing has been changing, so costs need watching
A standard delivery service is reliable and cheap, but it follows fixed routes and timetables. For an unusual item that needs a special route, you hire a custom courier, and then you carry the responsibility too.
19Design Patterns and Anti-patterns
Habits that keep data arriving, and habits that let it silently disappear.
Patterns that work
Strong teams separate raw and cleaned datasets. They run production transfers with service accounts, and they send run notifications to a topic that triggers downstream work and alerts. They partition tables by date and set expiry on raw data. They name transfers clearly, record the owner of each, and keep the configuration under infrastructure as code, so setups can be reviewed and rebuilt. They test backfills before they need them, and they monitor freshness.
Problem
Production transfers run under a personal account of the engineer who created them.
Why It’s Harmful
When the person leaves, changes a password or loses access, transfers stop, often without anyone noticing until a report looks empty.
Correct Approach
Use service accounts where supported, document ownership, and monitor for failed runs.
Problem
Nobody receives failure notifications, and run history is checked only when someone complains.
Why It’s Harmful
Gaps in data last for days or weeks, and decisions are made on stale or incomplete numbers.
Correct Approach
Configure Pub/Sub or email notifications, route failures to an owned channel, and add freshness checks to reports.
Problem
Analysts query the raw transferred tables directly, and business logic is copied into every report.
Why It’s Harmful
When a source changes its columns, every report breaks, and definitions drift apart between teams.
Correct Approach
Build a cleaned layer with views or tables that define business logic once, and have reports use that layer.
Problem
Downstream jobs start at a fixed clock time, assuming the transfer is finished by then.
Why It’s Harmful
When a transfer is late, reports are built on partial data and nobody knows it.
Correct Approach
Trigger downstream jobs from the success notification, and fail loudly when data is missing.
Problem
Every table is loaded at the highest frequency, with no expiry, and never partitioned.
Why It’s Harmful
Storage and query costs climb steadily, queries become slow, and the cost of data far exceeds its value.
Correct Approach
Match schedules to needs, partition and cluster tables, and expire or archive old raw data.
20Best Practices and Common Mistakes
A checklist to keep your data deliveries dependable, secure and affordable.
List your sources and needs
Know what data you need, how fresh, and which connectors cover it, and their status.
Plan datasets and locations first
Create destination datasets in the correct location, with raw and clean layers separated.
Use service accounts and least privilege
Give transfers stable identities with only the access they need.
Choose schedules that match the data
Avoid over-frequent runs, and consider event-driven loading for file arrivals.
Turn on notifications and freshness checks
Send results to a topic, alert owners on failure and show freshness in reports.
Partition, cluster and expire
Design tables for efficient queries and controlled storage from the start.
Understand backfill behavior
Test how your connector re-writes data, so repairs never create duplicates.
Keep configuration as code and review costs
Manage transfers with infrastructure as code, and review pricing and usage regularly as terms change.
Mistakes beginners make most often
The first is using a personal authorization for production transfers. The second is ignoring notifications. The third is forgetting dataset location rules. The fourth is treating preview connectors as fully supported. The fifth is starting downstream jobs by the clock instead of by completion. The sixth is backfilling without understanding write behavior. The seventh is leaving raw data unpartitioned and unexpired.
Keep a short record for every transfer: owner, source, schedule, destination, identity and what to do when it fails. When a run breaks at an awkward time, this page saves everyone from guessing.
21DTS Compared with Other Ingestion Tools
Google Cloud has several ways to get data into BigQuery, each with its own sweet spot.
| Tool | What it does | Best fit |
|---|---|---|
| BigQuery Data Transfer Service | Managed scheduled batch loads from supported sources | Marketing, SaaS, file and database batch loads with no code |
| Datastream | Change data capture, streaming database changes | Near-real-time replication from operational databases |
| Dataflow | Custom batch and streaming pipelines | Complex processing, custom logic and streaming events |
| BigQuery load jobs and the Storage Write API | Direct loading by your own programs | Custom applications that produce data |
| Pub/Sub with BigQuery subscriptions | Streams messages straight into tables | Event streams |
| Storage Transfer Service | Moves files between storage systems | Bulk file movement, not loading into tables |
| Dataform and scheduled queries | Transform data already in BigQuery | The step after ingestion |
| Partner integration tools | Third-party platforms with many connectors | Sources that DTS does not cover |
flowchart TD
Q1{"Is a supported connector available for your source?"} -->|Yes| Q2{"Is scheduled batch loading enough?"}
Q2 -->|Yes| DTS["Use BigQuery Data Transfer Service"]
Q2 -->|"No, need changes in seconds"| DS["Consider Datastream or streaming tools"]
Q1 -->|No| Q3{"Need custom logic or streaming events?"}
Q3 -->|Yes| DF["Consider Dataflow or Pub/Sub"]
Q3 -->|No| LJ["Consider load jobs or a partner tool"]
A scheduled courier is perfect for daily parcels. A live conveyor belt suits a constant flow, and a custom truck suits unusual cargo. Pick the transport that matches how and what you are moving.
These tools are often combined. A company may use DTS for marketing and file loads, Datastream for key databases, and Dataflow for event streams, all landing in the same BigQuery warehouse.
22Frequently Asked Questions
It is a managed Google Cloud service that automatically loads data into BigQuery on a schedule from supported sources such as advertising platforms, SaaS applications, databases and cloud storage, with no pipeline code to write.
No. DTS loads data into BigQuery. To export data, use other tools such as export jobs or other services.
No. It is built for scheduled batch loads, with some sources supporting hourly runs and some file sources supporting event-driven triggers. For changes within seconds, use change data capture or streaming tools.
A request to run a transfer again for past dates, so gaps caused by outages or errors can be filled. How far back you can go depends on the source.
For production, a service account where the connector supports it, so the transfer does not depend on a person’s account. Check each connector’s documentation.
Configure run notifications. Pub/Sub notifications report succeeded, failed and cancelled runs and suit automation, while email notifications report failures to people.
In the location of the destination dataset. The transfer configuration and staging happen there, while the source can be in any region or cloud.
It also runs scheduled queries and copies datasets between locations or projects, on a schedule.
It depends on the connector and its status. Preview connectors have been free, many Google sources have had fees removed, and some third party connectors use consumption-based pricing once generally available. Storage and queries in BigQuery are billed separately. Check the official pricing page.
Only lightly, through connector options. For real transformation, load the data first and use SQL, scheduled queries or Dataform inside BigQuery.
Look for a partner connector, export files to cloud storage and load them with DTS, or build a pipeline with Dataflow or custom load jobs.
Understand whether the connector replaces date partitions or appends rows. Prefer replace-style writes, load into partitioned tables, and verify counts after a backfill.
23Summary and Key Takeaways
BigQuery Data Transfer Service is Google Cloud’s managed way to bring data into BigQuery on a schedule. You create a transfer configuration for a source, a destination dataset and a timetable, and the service runs, retries, logs and notifies, while also offering backfills, scheduled queries and dataset copies. It covers advertising and analytics products, storage in several clouds, databases, warehouses and SaaS applications. Success comes from stable identities, correct dataset locations, sensible schedules, notifications tied to downstream work, partitioned tables and attention to changing connector status and pricing.
Key Takeaways
- Managed batch ingestion — DTS loads data into BigQuery on a schedule with no code or servers, and cannot move data out.
- Configuration, runs and datasets — a transfer configuration creates runs for time windows that land in a destination dataset.
- Many sources, varied maturity — marketing, files, databases and SaaS connectors exist, and preview ones come without the usual commitments.
- Backfill with care — know whether a connector replaces or appends before repairing gaps.
- Use service accounts — keep production transfers independent of any one person’s account, with least privilege access.
- Notify and chain — send run results to Pub/Sub, alert on failure and start downstream jobs from success, not from the clock.
- Mind location and cost — the destination dataset sets where data is processed, and storage, queries and changing pricing deserve regular review.