com.google.api.services.bigquery.model.HivePartitioningOptions Maven / Gradle / Ivy
/*
* 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.
*/
/*
* This code was generated by https://github.com/googleapis/google-api-java-client-services/
* Modify at your own risk.
*/
package com.google.api.services.bigquery.model;
/**
* Options for configuring hive partitioning detect.
*
* This is the Java data model class that specifies how to parse/serialize into the JSON that is
* transmitted over HTTP when working with the BigQuery API. For a detailed explanation see:
* https://developers.google.com/api-client-library/java/google-http-java-client/json
*
*
* @author Google, Inc.
*/
@SuppressWarnings("javadoc")
public final class HivePartitioningOptions extends com.google.api.client.json.GenericJson {
/**
* Output only. For permanent external tables, this field is populated with the hive partition
* keys in the order they were inferred. The types of the partition keys can be deduced by
* checking the table schema (which will include the partition keys). Not every API will populate
* this field in the output. For example, Tables.Get will populate it, but Tables.List will not
* contain this field.
* The value may be {@code null}.
*/
@com.google.api.client.util.Key
private java.util.List fields;
/**
* Optional. When set, what mode of hive partitioning to use when reading data. The following
* modes are supported: * AUTO: automatically infer partition key name(s) and type(s). * STRINGS:
* automatically infer partition key name(s). All types are strings. * CUSTOM: partition key
* schema is encoded in the source URI prefix. Not all storage formats support hive partitioning.
* Requesting hive partitioning on an unsupported format will lead to an error. Currently
* supported formats are: JSON, CSV, ORC, Avro and Parquet.
* The value may be {@code null}.
*/
@com.google.api.client.util.Key
private java.lang.String mode;
/**
* Optional. If set to true, queries over this table require a partition filter that can be used
* for partition elimination to be specified. Note that this field should only be true when
* creating a permanent external table or querying a temporary external table. Hive-partitioned
* loads with require_partition_filter explicitly set to true will fail.
* The value may be {@code null}.
*/
@com.google.api.client.util.Key
private java.lang.Boolean requirePartitionFilter;
/**
* Optional. When hive partition detection is requested, a common prefix for all source uris must
* be required. The prefix must end immediately before the partition key encoding begins. For
* example, consider files following this data layout:
* gs://bucket/path_to_table/dt=2019-06-01/country=USA/id=7/file.avro
* gs://bucket/path_to_table/dt=2019-05-31/country=CA/id=3/file.avro When hive partitioning is
* requested with either AUTO or STRINGS detection, the common prefix can be either of
* gs://bucket/path_to_table or gs://bucket/path_to_table/. CUSTOM detection requires encoding the
* partitioning schema immediately after the common prefix. For CUSTOM, any of *
* gs://bucket/path_to_table/{dt:DATE}/{country:STRING}/{id:INTEGER} *
* gs://bucket/path_to_table/{dt:STRING}/{country:STRING}/{id:INTEGER} *
* gs://bucket/path_to_table/{dt:DATE}/{country:STRING}/{id:STRING} would all be valid source URI
* prefixes.
* The value may be {@code null}.
*/
@com.google.api.client.util.Key
private java.lang.String sourceUriPrefix;
/**
* Output only. For permanent external tables, this field is populated with the hive partition
* keys in the order they were inferred. The types of the partition keys can be deduced by
* checking the table schema (which will include the partition keys). Not every API will populate
* this field in the output. For example, Tables.Get will populate it, but Tables.List will not
* contain this field.
* @return value or {@code null} for none
*/
public java.util.List getFields() {
return fields;
}
/**
* Output only. For permanent external tables, this field is populated with the hive partition
* keys in the order they were inferred. The types of the partition keys can be deduced by
* checking the table schema (which will include the partition keys). Not every API will populate
* this field in the output. For example, Tables.Get will populate it, but Tables.List will not
* contain this field.
* @param fields fields or {@code null} for none
*/
public HivePartitioningOptions setFields(java.util.List fields) {
this.fields = fields;
return this;
}
/**
* Optional. When set, what mode of hive partitioning to use when reading data. The following
* modes are supported: * AUTO: automatically infer partition key name(s) and type(s). * STRINGS:
* automatically infer partition key name(s). All types are strings. * CUSTOM: partition key
* schema is encoded in the source URI prefix. Not all storage formats support hive partitioning.
* Requesting hive partitioning on an unsupported format will lead to an error. Currently
* supported formats are: JSON, CSV, ORC, Avro and Parquet.
* @return value or {@code null} for none
*/
public java.lang.String getMode() {
return mode;
}
/**
* Optional. When set, what mode of hive partitioning to use when reading data. The following
* modes are supported: * AUTO: automatically infer partition key name(s) and type(s). * STRINGS:
* automatically infer partition key name(s). All types are strings. * CUSTOM: partition key
* schema is encoded in the source URI prefix. Not all storage formats support hive partitioning.
* Requesting hive partitioning on an unsupported format will lead to an error. Currently
* supported formats are: JSON, CSV, ORC, Avro and Parquet.
* @param mode mode or {@code null} for none
*/
public HivePartitioningOptions setMode(java.lang.String mode) {
this.mode = mode;
return this;
}
/**
* Optional. If set to true, queries over this table require a partition filter that can be used
* for partition elimination to be specified. Note that this field should only be true when
* creating a permanent external table or querying a temporary external table. Hive-partitioned
* loads with require_partition_filter explicitly set to true will fail.
* @return value or {@code null} for none
*/
public java.lang.Boolean getRequirePartitionFilter() {
return requirePartitionFilter;
}
/**
* Optional. If set to true, queries over this table require a partition filter that can be used
* for partition elimination to be specified. Note that this field should only be true when
* creating a permanent external table or querying a temporary external table. Hive-partitioned
* loads with require_partition_filter explicitly set to true will fail.
* @param requirePartitionFilter requirePartitionFilter or {@code null} for none
*/
public HivePartitioningOptions setRequirePartitionFilter(java.lang.Boolean requirePartitionFilter) {
this.requirePartitionFilter = requirePartitionFilter;
return this;
}
/**
* Convenience method that returns only {@link Boolean#TRUE} or {@link Boolean#FALSE}.
*
*
* Boolean properties can have four possible values:
* {@code null}, {@link com.google.api.client.util.Data#NULL_BOOLEAN}, {@link Boolean#TRUE}
* or {@link Boolean#FALSE}.
*
*
*
* This method returns {@link Boolean#TRUE} if the default of the property is {@link Boolean#TRUE}
* and it is {@code null} or {@link com.google.api.client.util.Data#NULL_BOOLEAN}.
* {@link Boolean#FALSE} is returned if the default of the property is {@link Boolean#FALSE} and
* it is {@code null} or {@link com.google.api.client.util.Data#NULL_BOOLEAN}.
*
*
*
* Optional. If set to true, queries over this table require a partition filter that can be used for
partition elimination to be specified. Note that this field should only be true when creating a
permanent external table or querying a temporary external table. Hive-partitioned loads with
require_partition_filter explicitly set to true will fail.
*
*/
public boolean isRequirePartitionFilter() {
if (requirePartitionFilter == null || requirePartitionFilter == com.google.api.client.util.Data.NULL_BOOLEAN) {
return false;
}
return requirePartitionFilter;
}
/**
* Optional. When hive partition detection is requested, a common prefix for all source uris must
* be required. The prefix must end immediately before the partition key encoding begins. For
* example, consider files following this data layout:
* gs://bucket/path_to_table/dt=2019-06-01/country=USA/id=7/file.avro
* gs://bucket/path_to_table/dt=2019-05-31/country=CA/id=3/file.avro When hive partitioning is
* requested with either AUTO or STRINGS detection, the common prefix can be either of
* gs://bucket/path_to_table or gs://bucket/path_to_table/. CUSTOM detection requires encoding the
* partitioning schema immediately after the common prefix. For CUSTOM, any of *
* gs://bucket/path_to_table/{dt:DATE}/{country:STRING}/{id:INTEGER} *
* gs://bucket/path_to_table/{dt:STRING}/{country:STRING}/{id:INTEGER} *
* gs://bucket/path_to_table/{dt:DATE}/{country:STRING}/{id:STRING} would all be valid source URI
* prefixes.
* @return value or {@code null} for none
*/
public java.lang.String getSourceUriPrefix() {
return sourceUriPrefix;
}
/**
* Optional. When hive partition detection is requested, a common prefix for all source uris must
* be required. The prefix must end immediately before the partition key encoding begins. For
* example, consider files following this data layout:
* gs://bucket/path_to_table/dt=2019-06-01/country=USA/id=7/file.avro
* gs://bucket/path_to_table/dt=2019-05-31/country=CA/id=3/file.avro When hive partitioning is
* requested with either AUTO or STRINGS detection, the common prefix can be either of
* gs://bucket/path_to_table or gs://bucket/path_to_table/. CUSTOM detection requires encoding the
* partitioning schema immediately after the common prefix. For CUSTOM, any of *
* gs://bucket/path_to_table/{dt:DATE}/{country:STRING}/{id:INTEGER} *
* gs://bucket/path_to_table/{dt:STRING}/{country:STRING}/{id:INTEGER} *
* gs://bucket/path_to_table/{dt:DATE}/{country:STRING}/{id:STRING} would all be valid source URI
* prefixes.
* @param sourceUriPrefix sourceUriPrefix or {@code null} for none
*/
public HivePartitioningOptions setSourceUriPrefix(java.lang.String sourceUriPrefix) {
this.sourceUriPrefix = sourceUriPrefix;
return this;
}
@Override
public HivePartitioningOptions set(String fieldName, Object value) {
return (HivePartitioningOptions) super.set(fieldName, value);
}
@Override
public HivePartitioningOptions clone() {
return (HivePartitioningOptions) super.clone();
}
}