Skip to content

Commit 7c02cd3

Browse files
authored
docs(samples): Convert tightly coupled local variable inside of method into method arguments (#386)
As the previous PR #382 and #379. I find several other samples that have the tendencies of including tightly coupled variable for each of specific method. Hence I think it will be better to pass it as an argument instead of simply using local variable inside of the method. Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: - [x] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/java-bigquery/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea - [x] Ensure the tests and linter pass - [x] Code coverage does not decrease (if any source code was changed) - [x] Appropriate docs were updated (if necessary) Fixes #387 ☕️
1 parent 70f702d commit 7c02cd3

14 files changed

+94
-55
lines changed

‎samples/snippets/src/main/java/com/example/bigquery/AddColumnLoadAppend.java

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import com.google.cloud.bigquery.Schema;
3333
import com.google.cloud.bigquery.TableId;
3434
import com.google.common.collect.ImmutableList;
35+
import java.util.ArrayList;
36+
import java.util.List;
3537
import java.util.UUID;
3638

3739
public class AddColumnLoadAppend {
@@ -41,31 +43,35 @@ public static void runAddColumnLoadAppend() throws Exception {
4143
String datasetName = "MY_DATASET_NAME";
4244
String tableName = "MY_TABLE_NAME";
4345
String sourceUri = "/path/to/file.csv";
44-
addColumnLoadAppend(datasetName, tableName, sourceUri);
46+
// Add a new column to a BigQuery table while appending rows via a load job.
47+
// 'REQUIRED' fields cannot be added to an existing schema, so the additional column must be
48+
// 'NULLABLE'.
49+
Schema schema =
50+
Schema.of(
51+
Field.newBuilder("name", LegacySQLTypeName.STRING)
52+
.setMode(Field.Mode.REQUIRED)
53+
.build());
54+
55+
List<Field> fields = schema.getFields();
56+
// Adding below additional column during the load job
57+
Field newField = Field.newBuilder("post_abbr", LegacySQLTypeName.STRING)
58+
.setMode(Field.Mode.NULLABLE)
59+
.build();
60+
List<Field> newFields = new ArrayList<>(fields);
61+
newFields.add(newField);
62+
Schema newSchema = Schema.of(newFields);
63+
addColumnLoadAppend(datasetName, tableName, sourceUri, newSchema);
4564
}
4665

47-
public static void addColumnLoadAppend(String datasetName, String tableName, String sourceUri)
48-
throws Exception {
66+
public static void addColumnLoadAppend(String datasetName, String tableName,
67+
String sourceUri, Schema newSchema) throws Exception {
4968
try {
5069
// Initialize client that will be used to send requests. This client only needs to be created
5170
// once, and can be reused for multiple requests.
5271
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
5372

5473
TableId tableId = TableId.of(datasetName, tableName);
5574

56-
// Add a new column to a BigQuery table while appending rows via a load job.
57-
// 'REQUIRED' fields cannot be added to an existing schema, so the additional column must be
58-
// 'NULLABLE'.
59-
Schema newSchema =
60-
Schema.of(
61-
Field.newBuilder("name", LegacySQLTypeName.STRING)
62-
.setMode(Field.Mode.REQUIRED)
63-
.build(),
64-
// Adding below additional column during the load job
65-
Field.newBuilder("post_abbr", LegacySQLTypeName.STRING)
66-
.setMode(Field.Mode.NULLABLE)
67-
.build());
68-
6975
LoadJobConfiguration loadJobConfig =
7076
LoadJobConfiguration.builder(tableId, sourceUri)
7177
.setFormatOptions(FormatOptions.csv())

‎samples/snippets/src/main/java/com/example/bigquery/LoadParquet.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,18 @@ public class LoadParquet {
3232
public static void runLoadParquet() {
3333
// TODO(developer): Replace these variables before running the sample.
3434
String datasetName = "MY_DATASET_NAME";
35-
loadParquet(datasetName);
35+
String sourceUri = "gs://cloud-samples-data/bigquery/us-states/us-states.parquet";
36+
String tableName = "us_states";
37+
loadParquet(datasetName, tableName, sourceUri);
3638
}
3739

38-
public static void loadParquet(String datasetName) {
40+
public static void loadParquet(String datasetName, String tableName, String sourceUri) {
3941
try {
4042
// Initialize client that will be used to send requests. This client only needs to be created
4143
// once, and can be reused for multiple requests.
4244
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
4345

44-
String sourceUri = "gs://cloud-samples-data/bigquery/us-states/us-states.parquet";
45-
TableId tableId = TableId.of(datasetName, "us_states");
46+
TableId tableId = TableId.of(datasetName, tableName);
4647

4748
LoadJobConfiguration configuration =
4849
LoadJobConfiguration.builder(tableId, sourceUri)

‎samples/snippets/src/main/java/com/example/bigquery/LoadParquetReplaceTable.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,13 @@ public class LoadParquetReplaceTable {
3434
public static void runLoadParquetReplaceTable() {
3535
// TODO(developer): Replace these variables before running the sample.
3636
String datasetName = "MY_DATASET_NAME";
37-
loadParquetReplaceTable(datasetName);
37+
String sourceUri = "gs://cloud-samples-data/bigquery/us-states/us-states.parquet";
38+
String tableName = "us_states";
39+
loadParquetReplaceTable(datasetName, tableName, sourceUri);
3840
}
3941

40-
public static void loadParquetReplaceTable(String datasetName) {
42+
public static void loadParquetReplaceTable(String datasetName, String tableName,
43+
String sourceUri) {
4144
try {
4245
// Initialize client that will be used to send requests. This client only needs to be created
4346
// once, and can be reused for multiple requests.
@@ -46,8 +49,7 @@ public static void loadParquetReplaceTable(String datasetName) {
4649
// Imports a GCS file into a table and overwrites table data if table already exists.
4750
// This sample loads CSV file at:
4851
// https://storage.googleapis.com/cloud-samples-data/bigquery/us-states/us-states.csv
49-
String sourceUri = "gs://cloud-samples-data/bigquery/us-states/us-states.parquet";
50-
TableId tableId = TableId.of(datasetName, "us_states");
52+
TableId tableId = TableId.of(datasetName, tableName);
5153

5254
// For more information on LoadJobConfiguration see:
5355
// https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/bigquery/LoadJobConfiguration.Builder.html

‎samples/snippets/src/main/java/com/example/bigquery/TableInsertRows.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,16 @@ public static void runTableInsertRows() {
3434
// TODO(developer): Replace these variables before running the sample.
3535
String datasetName = "MY_DATASET_NAME";
3636
String tableName = "MY_TABLE_NAME";
37-
tableInsertRows(datasetName, tableName);
37+
// Create a row to insert
38+
Map<String, Object> rowContent = new HashMap<>();
39+
rowContent.put("booleanField", true);
40+
rowContent.put("numericField", "3.14");
41+
42+
tableInsertRows(datasetName, tableName, rowContent);
3843
}
3944

40-
public static void tableInsertRows(String datasetName, String tableName) {
45+
public static void tableInsertRows(String datasetName, String tableName,
46+
Map<String, Object> rowContent) {
4147
try {
4248
// Initialize client that will be used to send requests. This client only needs to be created
4349
// once, and can be reused for multiple requests.
@@ -46,11 +52,6 @@ public static void tableInsertRows(String datasetName, String tableName) {
4652
// Get table
4753
TableId tableId = TableId.of(datasetName, tableName);
4854

49-
// Create a row to insert
50-
Map<String, Object> rowContent = new HashMap<>();
51-
rowContent.put("booleanField", true);
52-
rowContent.put("numericField", "3.14");
53-
5455
// Inserts rowContent into datasetName:tableId.
5556
InsertAllResponse response =
5657
bigquery.insertAll(InsertAllRequest.newBuilder(tableId).addRow(rowContent).build());

‎samples/snippets/src/main/java/com/example/bigquery/UpdateDatasetAccess.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,22 @@ public class UpdateDatasetAccess {
3131
public static void runUpdateDatasetAccess() {
3232
// TODO(developer): Replace these variables before running the sample.
3333
String datasetName = "MY_DATASET_NAME";
34-
updateDatasetAccess(datasetName);
34+
// Create a new ACL granting the READER role to "sample.bigquery.dev@gmail.com"
35+
// For more information on the types of ACLs available see:
36+
// https://cloud.google.com/storage/docs/access-control/lists
37+
Acl newEntry = Acl.of(new User("sample.bigquery.dev@gmail.com"), Role.READER);
38+
39+
updateDatasetAccess(datasetName, newEntry);
3540
}
3641

37-
public static void updateDatasetAccess(String datasetName) {
42+
public static void updateDatasetAccess(String datasetName, Acl newEntry) {
3843
try {
3944
// Initialize client that will be used to send requests. This client only needs to be created
4045
// once, and can be reused for multiple requests.
4146
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
4247

4348
Dataset dataset = bigquery.getDataset(datasetName);
4449

45-
// Create a new ACL granting the READER role to "sample.bigquery.dev@gmail.com"
46-
// For more information on the types of ACLs available see:
47-
// https://cloud.google.com/storage/docs/access-control/lists
48-
Acl newEntry = Acl.of(new User("sample.bigquery.dev@gmail.com"), Role.READER);
49-
5050
// Get a copy of the ACLs list from the dataset and append the new entry
5151
ArrayList<Acl> acls = new ArrayList<>(dataset.getAcl());
5252
acls.add(newEntry);

‎samples/snippets/src/main/java/com/example/bigquery/UpdateDatasetExpiration.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,17 @@ public class UpdateDatasetExpiration {
2828
public static void runUpdateDatasetExpiration() {
2929
// TODO(developer): Replace these variables before running the sample.
3030
String datasetName = "MY_DATASET_NAME";
31-
updateDatasetExpiration(datasetName);
31+
// Update dataset expiration to one day
32+
Long newExpiration = TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS);
33+
updateDatasetExpiration(datasetName, newExpiration);
3234
}
3335

34-
public static void updateDatasetExpiration(String datasetName) {
36+
public static void updateDatasetExpiration(String datasetName, Long newExpiration) {
3537
try {
3638
// Initialize client that will be used to send requests. This client only needs to be created
3739
// once, and can be reused for multiple requests.
3840
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
3941

40-
// Update dataset expiration to one day
41-
Long newExpiration = TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS);
42-
4342
Dataset dataset = bigquery.getDataset(datasetName);
4443
bigquery.update(dataset.toBuilder().setDefaultTableLifetime(newExpiration).build());
4544
System.out.println("Dataset description updated successfully to " + newExpiration);

‎samples/snippets/src/main/java/com/example/bigquery/UpdateTableExpiration.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,18 @@ public static void runUpdateTableExpiration() {
2929
// TODO(developer): Replace these variables before running the sample.
3030
String datasetName = "MY_DATASET_NAME";
3131
String tableName = "MY_TABLE_NAME";
32-
updateTableExpiration(datasetName, tableName);
32+
// Update table expiration to one day.
33+
Long newExpiration = TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS);
34+
updateTableExpiration(datasetName, tableName, newExpiration);
3335
}
3436

35-
public static void updateTableExpiration(String datasetName, String tableName) {
37+
public static void updateTableExpiration(String datasetName, String tableName,
38+
Long newExpiration) {
3639
try {
3740
// Initialize client that will be used to send requests. This client only needs to be created
3841
// once, and can be reused for multiple requests.
3942
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
4043

41-
// Update table expiration to one day
42-
Long newExpiration = TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS);
43-
4444
Table table = bigquery.getTable(datasetName, tableName);
4545
bigquery.update(table.toBuilder().setExpirationTime(newExpiration).build());
4646

‎samples/snippets/src/test/java/com/example/bigquery/AddColumnLoadAppendIT.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import com.google.cloud.bigquery.Schema;
2525
import java.io.ByteArrayOutputStream;
2626
import java.io.PrintStream;
27+
import java.util.ArrayList;
28+
import java.util.List;
2729
import org.junit.After;
2830
import org.junit.Before;
2931
import org.junit.BeforeClass;
@@ -71,7 +73,16 @@ public void testAddColumnLoadAppend() throws Exception {
7173

7274
CreateTable.createTable(BIGQUERY_DATASET_NAME, tableName, originalSchema);
7375

74-
AddColumnLoadAppend.addColumnLoadAppend(BIGQUERY_DATASET_NAME, tableName, sourceUri);
76+
List<Field> fields = originalSchema.getFields();
77+
// Adding below additional column during the load job
78+
Field newField = Field.newBuilder("post_abbr", LegacySQLTypeName.STRING)
79+
.setMode(Field.Mode.NULLABLE)
80+
.build();
81+
List<Field> newFields = new ArrayList<>(fields);
82+
newFields.add(newField);
83+
Schema newSchema = Schema.of(newFields);
84+
85+
AddColumnLoadAppend.addColumnLoadAppend(BIGQUERY_DATASET_NAME, tableName, sourceUri, newSchema);
7586

7687
assertThat(bout.toString()).contains("Column successfully added during load append job");
7788

‎samples/snippets/src/test/java/com/example/bigquery/LoadParquetIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ public void tearDown() {
5757

5858
@Test
5959
public void loadParquet() {
60-
LoadParquet.loadParquet(BIGQUERY_DATASET_NAME);
60+
String sourceUri = "gs://cloud-samples-data/bigquery/us-states/us-states.parquet";
61+
String tableName = "us_states";
62+
LoadParquet.loadParquet(BIGQUERY_DATASET_NAME, tableName, sourceUri);
6163
assertThat(bout.toString()).contains("GCS parquet loaded successfully.");
6264
}
6365
}

‎samples/snippets/src/test/java/com/example/bigquery/LoadParquetReplaceTableIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ public void tearDown() {
5757

5858
@Test
5959
public void testLoadParquetReplaceTable() {
60-
LoadParquetReplaceTable.loadParquetReplaceTable(BIGQUERY_DATASET_NAME);
60+
String sourceUri = "gs://cloud-samples-data/bigquery/us-states/us-states.parquet";
61+
String tableName = "us_states";
62+
LoadParquetReplaceTable.loadParquetReplaceTable(BIGQUERY_DATASET_NAME, tableName, sourceUri);
6163
assertThat(bout.toString()).contains("GCS parquet overwrote existing table successfully.");
6264
}
6365
}

‎samples/snippets/src/test/java/com/example/bigquery/TableInsertRowsIT.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import com.google.cloud.bigquery.Schema;
2525
import java.io.ByteArrayOutputStream;
2626
import java.io.PrintStream;
27+
import java.util.HashMap;
28+
import java.util.Map;
2729
import java.util.UUID;
2830
import org.junit.After;
2931
import org.junit.Before;
@@ -70,8 +72,13 @@ public void testTableInsertRows() {
7072
// Create table in dataset for testing
7173
CreateTable.createTable(BIGQUERY_DATASET_NAME, tableName, schema);
7274

75+
// Create a row to insert
76+
Map<String, Object> rowContent = new HashMap<>();
77+
rowContent.put("booleanField", true);
78+
rowContent.put("numericField", "3.14");
79+
7380
// Testing
74-
TableInsertRows.tableInsertRows(BIGQUERY_DATASET_NAME, tableName);
81+
TableInsertRows.tableInsertRows(BIGQUERY_DATASET_NAME, tableName, rowContent);
7582
assertThat(bout.toString()).contains("Rows successfully inserted into table");
7683

7784
// Clean up

‎samples/snippets/src/test/java/com/example/bigquery/UpdateDatasetAccessIT.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
import static com.google.common.truth.Truth.assertThat;
2020
import static junit.framework.TestCase.assertNotNull;
2121

22+
import com.google.cloud.bigquery.Acl;
23+
import com.google.cloud.bigquery.Acl.Role;
24+
import com.google.cloud.bigquery.Acl.User;
2225
import com.google.cloud.bigquery.testing.RemoteBigQueryHelper;
2326
import java.io.ByteArrayOutputStream;
2427
import java.io.PrintStream;
@@ -62,8 +65,9 @@ public void updateDatasetAccess() {
6265
// Create a dataset in order to modify its ACL
6366
CreateDataset.createDataset(generatedDatasetName);
6467

68+
Acl newEntry = Acl.of(new User("sample.bigquery.dev@gmail.com"), Role.READER);
6569
// Modify dataset's ACL
66-
UpdateDatasetAccess.updateDatasetAccess(generatedDatasetName);
70+
UpdateDatasetAccess.updateDatasetAccess(generatedDatasetName, newEntry);
6771
assertThat(bout.toString()).contains("Dataset Access Control updated successfully");
6872

6973
// Clean up

‎samples/snippets/src/test/java/com/example/bigquery/UpdateDatasetExpirationIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.google.cloud.bigquery.testing.RemoteBigQueryHelper;
2323
import java.io.ByteArrayOutputStream;
2424
import java.io.PrintStream;
25+
import java.util.concurrent.TimeUnit;
2526
import org.junit.After;
2627
import org.junit.Before;
2728
import org.junit.BeforeClass;
@@ -62,8 +63,9 @@ public void updateDatasetExpiration() {
6263
// Create a dataset in order to modify its expiration
6364
CreateDataset.createDataset(generatedDatasetName);
6465

66+
Long newExpiration = TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS);
6567
// Modify dataset's expiration
66-
UpdateDatasetExpiration.updateDatasetExpiration(generatedDatasetName);
68+
UpdateDatasetExpiration.updateDatasetExpiration(generatedDatasetName, newExpiration);
6769
assertThat(bout.toString()).contains("Dataset description updated successfully");
6870

6971
// Clean up

‎samples/snippets/src/test/java/com/example/bigquery/UpdateTableExpirationIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import java.io.ByteArrayOutputStream;
2323
import java.io.PrintStream;
24+
import java.util.concurrent.TimeUnit;
2425
import org.junit.After;
2526
import org.junit.Before;
2627
import org.junit.BeforeClass;
@@ -59,7 +60,8 @@ public void tearDown() {
5960
public void updateTableExpiration() {
6061
String tableName = "update_expiration_table";
6162
CreateTable.createTable(BIGQUERY_DATASET_NAME, tableName, null);
62-
UpdateTableExpiration.updateTableExpiration(BIGQUERY_DATASET_NAME, tableName);
63+
Long newExpiration = TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS);
64+
UpdateTableExpiration.updateTableExpiration(BIGQUERY_DATASET_NAME, tableName, newExpiration);
6365
assertThat(bout.toString()).contains("Table expiration updated successfully");
6466

6567
// Clean up

0 commit comments

Comments
 (0)