@@ -135,6 +135,9 @@ public Builder setFormatOptions(FormatOptions formatOptions) {
135135 /** Sets the table schema. */
136136 public abstract Builder setSchema (Schema schema );
137137
138+ /** Sets the table Hive partitioning options. */
139+ public abstract Builder setHivePartitioningOptions (HivePartitioningOptions hivePartitioningOptions );
140+
138141 /** Creates an {@code ExternalTableDefinition} object. */
139142 @ Override
140143 public abstract ExternalTableDefinition build ();
@@ -212,6 +215,13 @@ public <F extends FormatOptions> F getFormatOptions() {
212215 @ Nullable
213216 public abstract Boolean getAutodetect ();
214217
218+ /**
219+ * [Experimental] Returns the HivePartitioningOptions when the data layout follows Hive partitioning convention
220+ */
221+ @ SuppressWarnings ("unchecked" )
222+ @ Nullable
223+ public abstract HivePartitioningOptions getHivePartitioningOptions ();
224+
215225 /** Returns a builder for the {@code ExternalTableDefinition} object. */
216226 public abstract Builder toBuilder ();
217227
@@ -257,6 +267,9 @@ com.google.api.services.bigquery.model.ExternalDataConfiguration toExternalDataC
257267 if (getAutodetect () != null ) {
258268 externalConfigurationPb .setAutodetect (getAutodetect ());
259269 }
270+ if (getHivePartitioningOptions () != null ) {
271+ externalConfigurationPb .setHivePartitioningOptions (getHivePartitioningOptions ().toPb ());
272+ }
260273 return externalConfigurationPb ;
261274 }
262275
@@ -405,6 +418,10 @@ static ExternalTableDefinition fromPb(Table tablePb) {
405418 }
406419 builder .setMaxBadRecords (externalDataConfiguration .getMaxBadRecords ());
407420 builder .setAutodetect (externalDataConfiguration .getAutodetect ());
421+ if (externalDataConfiguration .getHivePartitioningOptions () != null ) {
422+ builder .setHivePartitioningOptions (
423+ HivePartitioningOptions .fromPb (externalDataConfiguration .getHivePartitioningOptions ()));
424+ }
408425 }
409426 return builder .build ();
410427 }
@@ -444,6 +461,10 @@ static ExternalTableDefinition fromExternalDataConfiguration(
444461 if (externalDataConfiguration .getAutodetect () != null ) {
445462 builder .setAutodetect (externalDataConfiguration .getAutodetect ());
446463 }
464+ if (externalDataConfiguration .getHivePartitioningOptions () != null ) {
465+ builder .setHivePartitioningOptions (
466+ HivePartitioningOptions .fromPb (externalDataConfiguration .getHivePartitioningOptions ()));
467+ }
447468 return builder .build ();
448469 }
449470}
0 commit comments