diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 8b6aaee2..0e361b5d 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -45,6 +45,12 @@
1.0.1
test
+
+ com.google.cloud
+ google-cloud-bigquery
+ 1.116.3
+ test
+
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 8c603e17..d8a3be71 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -44,6 +44,12 @@
1.0.1
test
+
+ com.google.cloud
+ google-cloud-bigquery
+ 1.116.3
+ test
+
@@ -80,4 +86,4 @@
-
\ No newline at end of file
+
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 0ee6a63c..1b049db9 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -57,5 +57,11 @@
1.0.1
test
+
+ com.google.cloud
+ google-cloud-bigquery
+ 1.116.3
+ test
+
diff --git a/samples/snippets/src/main/java/com/example/bigquerydatatransfer/CreateScheduledQuery.java b/samples/snippets/src/main/java/com/example/bigquerydatatransfer/CreateScheduledQuery.java
new file mode 100644
index 00000000..b1bce193
--- /dev/null
+++ b/samples/snippets/src/main/java/com/example/bigquerydatatransfer/CreateScheduledQuery.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.bigquerydatatransfer;
+
+// [START bigquerydatatransfer_create_scheduled_query]
+import com.google.api.gax.rpc.ApiException;
+import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
+import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
+import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
+import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
+import com.google.protobuf.Struct;
+import com.google.protobuf.Value;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+// Sample to create a scheduled query
+public class CreateScheduledQuery {
+
+ public static void runCreateScheduledQuery() {
+ // TODO(developer): Replace these variables before running the sample.
+ String projectId = "MY_PROJECT_ID";
+ String datasetId = "MY_DATASET_ID";
+ String query =
+ "SELECT CURRENT_TIMESTAMP() as current_time, @run_time as intended_run_time, @run_date as intended_run_date, 17 as some_integer";
+ Map params = new HashMap<>();
+ params.put("query", Value.newBuilder().setStringValue(query).build());
+ params.put(
+ "destination_table_name_template",
+ Value.newBuilder().setStringValue("my_destination_table_{run_date}").build());
+ params.put("write_disposition", Value.newBuilder().setStringValue("WRITE_TRUNCATE").build());
+ params.put("partitioning_field", Value.newBuilder().build());
+ TransferConfig transferConfig =
+ TransferConfig.newBuilder()
+ .setDestinationDatasetId(datasetId)
+ .setDisplayName("Your Scheduled Query Name")
+ .setDataSourceId("scheduled_query")
+ .setParams(Struct.newBuilder().putAllFields(params).build())
+ .setSchedule("every 24 hours")
+ .build();
+ createScheduledQuery(projectId, transferConfig);
+ }
+
+ public static void createScheduledQuery(String projectId, TransferConfig transferConfig) {
+ try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
+ ProjectName parent = ProjectName.of(projectId);
+ CreateTransferConfigRequest request =
+ CreateTransferConfigRequest.newBuilder()
+ .setParent(parent.toString())
+ .setTransferConfig(transferConfig)
+ .build();
+ TransferConfig config = dataTransferServiceClient.createTransferConfig(request);
+ System.out.print("Scheduled query created successfully." + config.getName());
+ } catch (IOException | ApiException ex) {
+ System.out.print("Scheduled query was not created." + ex.toString());
+ }
+ }
+}
+// [END bigquerydatatransfer_create_scheduled_query]
diff --git a/samples/snippets/src/main/java/com/example/bigquerydatatransfer/DeleteScheduledQuery.java b/samples/snippets/src/main/java/com/example/bigquerydatatransfer/DeleteScheduledQuery.java
new file mode 100644
index 00000000..7c1d0282
--- /dev/null
+++ b/samples/snippets/src/main/java/com/example/bigquerydatatransfer/DeleteScheduledQuery.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.bigquerydatatransfer;
+
+// [START bigquerydatatransfer_delete_scheduled_query]
+import com.google.api.gax.rpc.ApiException;
+import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
+import com.google.cloud.bigquery.datatransfer.v1.DeleteTransferConfigRequest;
+
+import java.io.IOException;
+
+// Sample to delete a scheduled query
+public class DeleteScheduledQuery {
+
+ public static void runDeleteScheduledQuery() {
+ // TODO(developer): Replace these variables before running the sample.
+ // i.e projects/{project_id}/transferConfigs/{config_id}` or
+ // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`
+ String name = "MY_CONFIG_ID";
+ deleteScheduledQuery(name);
+ }
+
+ public static void deleteScheduledQuery(String name) {
+ try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
+ DeleteTransferConfigRequest request =
+ DeleteTransferConfigRequest.newBuilder().setName(name).build();
+ dataTransferServiceClient.deleteTransferConfig(request);
+ System.out.print("Scheduled query deleted successfully.");
+ } catch (IOException | ApiException ex) {
+ System.out.print("Scheduled query was not deleted." + ex.toString());
+ }
+ }
+}
+// [END bigquerydatatransfer_delete_scheduled_query]
diff --git a/samples/snippets/src/test/java/com/example/bigquerydatatransfer/CreateScheduledQueryIT.java b/samples/snippets/src/test/java/com/example/bigquerydatatransfer/CreateScheduledQueryIT.java
new file mode 100644
index 00000000..3cacdc4b
--- /dev/null
+++ b/samples/snippets/src/test/java/com/example/bigquerydatatransfer/CreateScheduledQueryIT.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.bigquerydatatransfer;
+
+import com.google.cloud.bigquery.BigQuery;
+import com.google.cloud.bigquery.BigQueryOptions;
+import com.google.cloud.bigquery.DatasetInfo;
+import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
+import com.google.cloud.bigquery.datatransfer.v1.TransferState;
+import com.google.protobuf.Struct;
+import com.google.protobuf.Value;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import static com.google.common.truth.Truth.assertThat;
+import static junit.framework.TestCase.assertNotNull;
+
+public class CreateScheduledQueryIT {
+
+ private BigQuery bigquery;
+ private ByteArrayOutputStream bout;
+ private String name;
+ private String displayName;
+ private String datasetName;
+ private PrintStream out;
+
+ private static final String PROJECT_ID = requireEnvVar("GOOGLE_CLOUD_PROJECT");
+
+ private static String requireEnvVar(String varName) {
+ String value = System.getenv(varName);
+ assertNotNull(
+ "Environment variable " + varName + " is required to perform these tests.",
+ System.getenv(varName));
+ return value;
+ }
+
+ @BeforeClass
+ public static void checkRequirements() {
+ requireEnvVar("GOOGLE_CLOUD_PROJECT");
+ }
+
+ @Before
+ public void setUp() {
+ displayName = "MY_SCHEDULE_NAME_TEST_" + UUID.randomUUID().toString().substring(0, 8);
+ datasetName = "MY_DATASET_NAME_TEST_" + UUID.randomUUID().toString().substring(0, 8);
+ // create a temporary dataset
+ bigquery = BigQueryOptions.getDefaultInstance().getService();
+ bigquery.create(DatasetInfo.of(datasetName));
+ bout = new ByteArrayOutputStream();
+ out = new PrintStream(bout);
+ System.setOut(out);
+ }
+
+ @After
+ public void tearDown() {
+ // Clean up
+ DeleteScheduledQuery.deleteScheduledQuery(name);
+ // delete a temporary dataset
+ bigquery.delete(datasetName, BigQuery.DatasetDeleteOption.deleteContents());
+ System.setOut(null);
+ }
+
+ @Test
+ public void testCreateScheduledQuery() {
+ String query =
+ "SELECT CURRENT_TIMESTAMP() as current_time, @run_time as intended_run_time, @run_date as intended_run_date, 17 as some_integer";
+ String destinationTableName =
+ "MY_DESTINATION_TABLE_" + UUID.randomUUID().toString().substring(0, 8) + "_{run_date}";
+ Map params = new HashMap<>();
+ params.put("query", Value.newBuilder().setStringValue(query).build());
+ params.put(
+ "destination_table_name_template",
+ Value.newBuilder().setStringValue(destinationTableName).build());
+ params.put("write_disposition", Value.newBuilder().setStringValue("WRITE_TRUNCATE").build());
+ params.put("partitioning_field", Value.newBuilder().setStringValue("").build());
+ TransferConfig transferConfig =
+ TransferConfig.newBuilder()
+ .setDestinationDatasetId(datasetName)
+ .setDisplayName(displayName)
+ .setDataSourceId("scheduled_query")
+ .setParams(Struct.newBuilder().putAllFields(params).build())
+ .setSchedule("every 24 hours")
+ .setState(TransferState.CANCELLED)
+ .build();
+ CreateScheduledQuery.createScheduledQuery(PROJECT_ID, transferConfig);
+ String result = bout.toString();
+ name = result.substring(result.indexOf(".") + 1);
+ assertThat(result).contains("Scheduled query created successfully.");
+ }
+}
diff --git a/samples/snippets/src/test/java/com/example/bigquerydatatransfer/DeleteScheduledQueryIT.java b/samples/snippets/src/test/java/com/example/bigquerydatatransfer/DeleteScheduledQueryIT.java
new file mode 100644
index 00000000..b22282ed
--- /dev/null
+++ b/samples/snippets/src/test/java/com/example/bigquerydatatransfer/DeleteScheduledQueryIT.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.bigquerydatatransfer;
+
+import com.google.cloud.bigquery.BigQuery;
+import com.google.cloud.bigquery.BigQueryOptions;
+import com.google.cloud.bigquery.DatasetInfo;
+import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
+import com.google.protobuf.Struct;
+import com.google.protobuf.Value;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import static com.google.common.truth.Truth.assertThat;
+import static junit.framework.TestCase.assertNotNull;
+
+public class DeleteScheduledQueryIT {
+
+ private BigQuery bigquery;
+ private ByteArrayOutputStream bout;
+ private String name;
+ private String displayName;
+ private String datasetName;
+ private PrintStream out;
+
+ private static final String PROJECT_ID = requireEnvVar("GOOGLE_CLOUD_PROJECT");
+
+ private static String requireEnvVar(String varName) {
+ String value = System.getenv(varName);
+ assertNotNull(
+ "Environment variable " + varName + " is required to perform these tests.",
+ System.getenv(varName));
+ return value;
+ }
+
+ @BeforeClass
+ public static void checkRequirements() {
+ requireEnvVar("GOOGLE_CLOUD_PROJECT");
+ }
+
+ @Before
+ public void setUp() {
+ bout = new ByteArrayOutputStream();
+ out = new PrintStream(bout);
+ System.setOut(out);
+
+ displayName = "MY_SCHEDULE_NAME_TEST_" + UUID.randomUUID().toString().substring(0, 8);
+ datasetName = "MY_DATASET_NAME_TEST_" + UUID.randomUUID().toString().substring(0, 8);
+ // create a temporary dataset
+ bigquery = BigQueryOptions.getDefaultInstance().getService();
+ bigquery.create(DatasetInfo.of(datasetName));
+
+ // create a scheduled query
+ String query =
+ "SELECT CURRENT_TIMESTAMP() as current_time, @run_time as intended_run_time, @run_date as intended_run_date, 17 as some_integer";
+ String destinationTableName =
+ "MY_DESTINATION_TABLE_" + UUID.randomUUID().toString().substring(0, 8) + "_{run_date}";
+ Map params = new HashMap<>();
+ params.put("query", Value.newBuilder().setStringValue(query).build());
+ params.put(
+ "destination_table_name_template",
+ Value.newBuilder().setStringValue(destinationTableName).build());
+ params.put("write_disposition", Value.newBuilder().setStringValue("WRITE_TRUNCATE").build());
+ params.put("partitioning_field", Value.newBuilder().setStringValue("").build());
+ TransferConfig transferConfig =
+ TransferConfig.newBuilder()
+ .setDestinationDatasetId(datasetName)
+ .setDisplayName(displayName)
+ .setDataSourceId("scheduled_query")
+ .setParams(Struct.newBuilder().putAllFields(params).build())
+ .setSchedule("every 24 hours")
+ .build();
+ CreateScheduledQuery.createScheduledQuery(PROJECT_ID, transferConfig);
+ String result = bout.toString();
+ name = result.substring(result.indexOf(".") + 1);
+
+ bout = new ByteArrayOutputStream();
+ out = new PrintStream(bout);
+ System.setOut(out);
+ }
+
+ @After
+ public void tearDown() {
+ // delete a temporary dataset
+ bigquery.delete(datasetName, BigQuery.DatasetDeleteOption.deleteContents());
+ System.setOut(null);
+ }
+
+ @Test
+ public void testDeleteScheduledQuery() {
+ // delete scheduled query that was just created
+ DeleteScheduledQuery.deleteScheduledQuery(name);
+ assertThat(bout.toString()).contains("Scheduled query deleted successfully.");
+ }
+}