@@ -135,6 +135,14 @@ 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 Builder setHivePartitioningOptions (HivePartitioningOptions hivePartitioningOptions ) {
140+ return setHivePartitioningOptionsInner (hivePartitioningOptions );
141+ };
142+
143+ abstract Builder setHivePartitioningOptionsInner (
144+ HivePartitioningOptions hivePartitioningOptions );
145+
138146 /** Creates an {@code ExternalTableDefinition} object. */
139147 @ Override
140148 public abstract ExternalTableDefinition build ();
@@ -212,6 +220,17 @@ public <F extends FormatOptions> F getFormatOptions() {
212220 @ Nullable
213221 public abstract Boolean getAutodetect ();
214222
223+ /**
224+ * [Experimental] Returns the HivePartitioningOptions when the data layout follows Hive
225+ * partitioning convention
226+ */
227+ @ SuppressWarnings ("unchecked" )
228+ @ Nullable
229+ public HivePartitioningOptions getHivePartitioningOptions () {
230+ return getHivePartitioningOptionsInner ();
231+ }
232+
233+ abstract HivePartitioningOptions getHivePartitioningOptionsInner ();
215234 /** Returns a builder for the {@code ExternalTableDefinition} object. */
216235 public abstract Builder toBuilder ();
217236
@@ -257,6 +276,9 @@ com.google.api.services.bigquery.model.ExternalDataConfiguration toExternalDataC
257276 if (getAutodetect () != null ) {
258277 externalConfigurationPb .setAutodetect (getAutodetect ());
259278 }
279+ if (getHivePartitioningOptions () != null ) {
280+ externalConfigurationPb .setHivePartitioningOptions (getHivePartitioningOptions ().toPb ());
281+ }
260282 return externalConfigurationPb ;
261283 }
262284
@@ -405,6 +427,10 @@ static ExternalTableDefinition fromPb(Table tablePb) {
405427 }
406428 builder .setMaxBadRecords (externalDataConfiguration .getMaxBadRecords ());
407429 builder .setAutodetect (externalDataConfiguration .getAutodetect ());
430+ if (externalDataConfiguration .getHivePartitioningOptions () != null ) {
431+ builder .setHivePartitioningOptions (
432+ HivePartitioningOptions .fromPb (externalDataConfiguration .getHivePartitioningOptions ()));
433+ }
408434 }
409435 return builder .build ();
410436 }
@@ -444,6 +470,10 @@ static ExternalTableDefinition fromExternalDataConfiguration(
444470 if (externalDataConfiguration .getAutodetect () != null ) {
445471 builder .setAutodetect (externalDataConfiguration .getAutodetect ());
446472 }
473+ if (externalDataConfiguration .getHivePartitioningOptions () != null ) {
474+ builder .setHivePartitioningOptions (
475+ HivePartitioningOptions .fromPb (externalDataConfiguration .getHivePartitioningOptions ()));
476+ }
447477 return builder .build ();
448478 }
449479}
0 commit comments