Schedule a backfill run

Initiate a data backfill to load historical data into BigQuery. For information about how much data is available for backfill, see the documentation for your data source.

Explore further

For detailed documentation that includes this code sample, see the following:

Code sample

Java

Before trying this sample, follow the Java setup instructions in the BigQuery quickstart using client libraries . For more information, see the BigQuery Java API reference documentation .

To authenticate to BigQuery, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  import 
  
 com.google.api.gax.rpc. ApiException 
 
 ; 
 import 
  
 com.google.cloud.bigquery.datatransfer.v1. DataTransferServiceClient 
 
 ; 
 import 
  
 com.google.cloud.bigquery.datatransfer.v1. ScheduleTransferRunsRequest 
 
 ; 
 import 
  
 com.google.cloud.bigquery.datatransfer.v1. ScheduleTransferRunsResponse 
 
 ; 
 import 
  
 com.google.protobuf. Timestamp 
 
 ; 
 import 
  
 java.io.IOException 
 ; 
 import 
  
 org.threeten.bp.Clock 
 ; 
 import 
  
 org.threeten.bp.Instant 
 ; 
 import 
  
 org.threeten.bp.temporal.ChronoUnit 
 ; 
 // Sample to run schedule back fill for transfer config 
 public 
  
 class 
 ScheduleBackFill 
  
 { 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 [] 
  
 args 
 ) 
  
 throws 
  
 IOException 
  
 { 
  
 // TODO(developer): Replace these variables before running the sample. 
  
 String 
  
 configId 
  
 = 
  
 "MY_CONFIG_ID" 
 ; 
  
 Clock 
  
 clock 
  
 = 
  
 Clock 
 . 
 systemDefaultZone 
 (); 
  
 Instant 
  
 instant 
  
 = 
  
 clock 
 . 
 instant 
 (); 
  
  Timestamp 
 
  
 startTime 
  
 = 
  
  Timestamp 
 
 . 
 newBuilder 
 () 
  
 . 
 setSeconds 
 ( 
 instant 
 . 
 minus 
 ( 
 5 
 , 
  
 ChronoUnit 
 . 
 DAYS 
 ). 
 getEpochSecond 
 ()) 
  
 . 
 setNanos 
 ( 
 instant 
 . 
 minus 
 ( 
 5 
 , 
  
 ChronoUnit 
 . 
 DAYS 
 ). 
 getNano 
 ()) 
  
 . 
 build 
 (); 
  
  Timestamp 
 
  
 endTime 
  
 = 
  
  Timestamp 
 
 . 
 newBuilder 
 () 
  
 . 
 setSeconds 
 ( 
 instant 
 . 
 minus 
 ( 
 2 
 , 
  
 ChronoUnit 
 . 
 DAYS 
 ). 
 getEpochSecond 
 ()) 
  
 . 
 setNanos 
 ( 
 instant 
 . 
 minus 
 ( 
 2 
 , 
  
 ChronoUnit 
 . 
 DAYS 
 ). 
 getNano 
 ()) 
  
 . 
 build 
 (); 
  
 scheduleBackFill 
 ( 
 configId 
 , 
  
 startTime 
 , 
  
 endTime 
 ); 
  
 } 
  
 public 
  
 static 
  
 void 
  
 scheduleBackFill 
 ( 
 String 
  
 configId 
 , 
  
  Timestamp 
 
  
 startTime 
 , 
  
  Timestamp 
 
  
 endTime 
 ) 
  
 throws 
  
 IOException 
  
 { 
  
 try 
  
 ( 
  DataTransferServiceClient 
 
  
 client 
  
 = 
  
  DataTransferServiceClient 
 
 . 
 create 
 ()) 
  
 { 
  
  ScheduleTransferRunsRequest 
 
  
 request 
  
 = 
  
  ScheduleTransferRunsRequest 
 
 . 
 newBuilder 
 () 
  
 . 
 setParent 
 ( 
 configId 
 ) 
  
 . 
 setStartTime 
 ( 
 startTime 
 ) 
  
 . 
 setEndTime 
 ( 
 endTime 
 ) 
  
 . 
 build 
 (); 
  
  ScheduleTransferRunsResponse 
 
  
 response 
  
 = 
  
 client 
 . 
 scheduleTransferRuns 
 ( 
 request 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Schedule backfill run successfully :" 
  
 + 
  
 response 
 . 
  getRunsCount 
 
 ()); 
  
 } 
  
 catch 
  
 ( 
  ApiException 
 
  
 ex 
 ) 
  
 { 
  
 System 
 . 
 out 
 . 
 print 
 ( 
 "Schedule backfill was not run." 
  
 + 
  
 ex 
 . 
 toString 
 ()); 
  
 } 
  
 } 
 } 
 

Python

Before trying this sample, follow the Python setup instructions in the BigQuery quickstart using client libraries . For more information, see the BigQuery Python API reference documentation .

To authenticate to BigQuery, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  import 
  
 datetime 
 from 
  
 google.cloud.bigquery_datatransfer_v1 
  
 import 
 ( 
  DataTransferServiceClient 
 
 , 
  StartManualTransferRunsRequest 
 
 , 
 ) 
 # Create a client object 
 client 
 = 
 DataTransferServiceClient 
 () 
 # Replace with your transfer configuration name 
 transfer_config_name 
 = 
 "projects/1234/locations/us/transferConfigs/abcd" 
 now 
 = 
 datetime 
 . 
 datetime 
 . 
 now 
 ( 
 datetime 
 . 
 timezone 
 . 
 utc 
 ) 
 start_time 
 = 
 now 
 - 
 datetime 
 . 
 timedelta 
 ( 
 days 
 = 
 5 
 ) 
 end_time 
 = 
 now 
 - 
 datetime 
 . 
 timedelta 
 ( 
 days 
 = 
 2 
 ) 
 # Some data sources, such as scheduled_query only support daily run. 
 # Truncate start_time and end_time to midnight time (00:00AM UTC). 
 start_time 
 = 
 datetime 
 . 
 datetime 
 ( 
 start_time 
 . 
 year 
 , 
 start_time 
 . 
 month 
 , 
 start_time 
 . 
 day 
 , 
 tzinfo 
 = 
 datetime 
 . 
 timezone 
 . 
 utc 
 ) 
 end_time 
 = 
 datetime 
 . 
 datetime 
 ( 
 end_time 
 . 
 year 
 , 
 end_time 
 . 
 month 
 , 
 end_time 
 . 
 day 
 , 
 tzinfo 
 = 
 datetime 
 . 
 timezone 
 . 
 utc 
 ) 
 requested_time_range 
 = 
  StartManualTransferRunsRequest 
 
 . 
  TimeRange 
 
 ( 
 start_time 
 = 
 start_time 
 , 
 end_time 
 = 
 end_time 
 , 
 ) 
 # Initialize request argument(s) 
 request 
 = 
 StartManualTransferRunsRequest 
 ( 
 parent 
 = 
 transfer_config_name 
 , 
 requested_time_range 
 = 
 requested_time_range 
 , 
 ) 
 # Make the request 
 response 
 = 
 client 
 . 
  start_manual_transfer_runs 
 
 ( 
 request 
 = 
 request 
 ) 
 # Handle the response 
 print 
 ( 
 "Started manual transfer runs:" 
 ) 
 for 
 run 
 in 
 response 
 . 
 runs 
 : 
 print 
 ( 
 f 
 "backfill: 
 { 
 run 
 . 
 run_time 
 } 
 run: 
 { 
 run 
 . 
 name 
 } 
 " 
 ) 
 

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser .

Design a Mobile Site
View Site in Mobile | Classic
Share by: