From fbbbc5c2aaa8fe3e38c4a507db075a65e3d83627 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 09:34:21 -0500 Subject: [PATCH] feat: [dataplex] add data quality score to DataQualityResult (#10108) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add data quality score to DataQualityResult PiperOrigin-RevId: 587100465 Source-Link: https://github.com/googleapis/googleapis/commit/2aa3b1d5a90d05e0606d11787de475b0df068d49 Source-Link: https://github.com/googleapis/googleapis-gen/commit/86f694fec6b48cacd62d534a1a073bcda3b4644f Copy-Tag: eyJwIjoiamF2YS1kYXRhcGxleC8uT3dsQm90LnlhbWwiLCJoIjoiODZmNjk0ZmVjNmI0OGNhY2Q2MmQ1MzRhMWEwNzNiY2RhM2I0NjQ0ZiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../reflect-config.json | 18 + .../dataplex/v1/DataQualityColumnResult.java | 783 ++++++++++++++++ .../v1/DataQualityColumnResultOrBuilder.java | 83 ++ .../v1/DataQualityDimensionResult.java | 157 ++++ .../DataQualityDimensionResultOrBuilder.java | 33 + .../cloud/dataplex/v1/DataQualityProto.java | 182 ++-- .../cloud/dataplex/v1/DataQualityResult.java | 838 +++++++++++++++++- .../v1/DataQualityResultOrBuilder.java | 106 +++ .../cloud/dataplex/v1/data_quality.proto | 33 + 9 files changed, 2115 insertions(+), 118 deletions(-) create mode 100644 java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityColumnResult.java create mode 100644 java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityColumnResultOrBuilder.java diff --git a/java-dataplex/google-cloud-dataplex/src/main/resources/META-INF/native-image/com.google.cloud.dataplex.v1/reflect-config.json b/java-dataplex/google-cloud-dataplex/src/main/resources/META-INF/native-image/com.google.cloud.dataplex.v1/reflect-config.json index 7750afd2aa57..10bec5e16c5a 100644 --- a/java-dataplex/google-cloud-dataplex/src/main/resources/META-INF/native-image/com.google.cloud.dataplex.v1/reflect-config.json +++ b/java-dataplex/google-cloud-dataplex/src/main/resources/META-INF/native-image/com.google.cloud.dataplex.v1/reflect-config.json @@ -1430,6 +1430,24 @@ "allDeclaredClasses": true, "allPublicClasses": true }, + { + "name": "com.google.cloud.dataplex.v1.DataQualityColumnResult", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.cloud.dataplex.v1.DataQualityColumnResult$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, { "name": "com.google.cloud.dataplex.v1.DataQualityDimension", "queryAllDeclaredConstructors": true, diff --git a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityColumnResult.java b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityColumnResult.java new file mode 100644 index 000000000000..e98ae847ae80 --- /dev/null +++ b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityColumnResult.java @@ -0,0 +1,783 @@ +/* + * Copyright 2023 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 + * + * https://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. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/dataplex/v1/data_quality.proto + +package com.google.cloud.dataplex.v1; + +/** + * + * + *
+ * DataQualityColumnResult provides a more detailed, per-column view of
+ * the results.
+ * 
+ * + * Protobuf type {@code google.cloud.dataplex.v1.DataQualityColumnResult} + */ +public final class DataQualityColumnResult extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.dataplex.v1.DataQualityColumnResult) + DataQualityColumnResultOrBuilder { + private static final long serialVersionUID = 0L; + // Use DataQualityColumnResult.newBuilder() to construct. + private DataQualityColumnResult(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private DataQualityColumnResult() { + column_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new DataQualityColumnResult(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.dataplex.v1.DataQualityProto + .internal_static_google_cloud_dataplex_v1_DataQualityColumnResult_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.dataplex.v1.DataQualityProto + .internal_static_google_cloud_dataplex_v1_DataQualityColumnResult_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.dataplex.v1.DataQualityColumnResult.class, + com.google.cloud.dataplex.v1.DataQualityColumnResult.Builder.class); + } + + private int bitField0_; + public static final int COLUMN_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object column_ = ""; + /** + * + * + *
+   * Output only. The column specified in the DataQualityRule.
+   * 
+ * + * string column = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The column. + */ + @java.lang.Override + public java.lang.String getColumn() { + java.lang.Object ref = column_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + column_ = s; + return s; + } + } + /** + * + * + *
+   * Output only. The column specified in the DataQualityRule.
+   * 
+ * + * string column = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The bytes for column. + */ + @java.lang.Override + public com.google.protobuf.ByteString getColumnBytes() { + java.lang.Object ref = column_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + column_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SCORE_FIELD_NUMBER = 2; + private float score_ = 0F; + /** + * + * + *
+   * Output only. The column-level data quality score for this data scan job if
+   * and only if the 'column' field is set.
+   *
+   * The score ranges between between [0, 100] (up to two decimal
+   * points).
+   * 
+ * + * optional float score = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return Whether the score field is set. + */ + @java.lang.Override + public boolean hasScore() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+   * Output only. The column-level data quality score for this data scan job if
+   * and only if the 'column' field is set.
+   *
+   * The score ranges between between [0, 100] (up to two decimal
+   * points).
+   * 
+ * + * optional float score = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The score. + */ + @java.lang.Override + public float getScore() { + return score_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(column_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, column_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeFloat(2, score_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(column_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, column_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, score_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.dataplex.v1.DataQualityColumnResult)) { + return super.equals(obj); + } + com.google.cloud.dataplex.v1.DataQualityColumnResult other = + (com.google.cloud.dataplex.v1.DataQualityColumnResult) obj; + + if (!getColumn().equals(other.getColumn())) return false; + if (hasScore() != other.hasScore()) return false; + if (hasScore()) { + if (java.lang.Float.floatToIntBits(getScore()) + != java.lang.Float.floatToIntBits(other.getScore())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + COLUMN_FIELD_NUMBER; + hash = (53 * hash) + getColumn().hashCode(); + if (hasScore()) { + hash = (37 * hash) + SCORE_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getScore()); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.cloud.dataplex.v1.DataQualityColumnResult prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * DataQualityColumnResult provides a more detailed, per-column view of
+   * the results.
+   * 
+ * + * Protobuf type {@code google.cloud.dataplex.v1.DataQualityColumnResult} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.dataplex.v1.DataQualityColumnResult) + com.google.cloud.dataplex.v1.DataQualityColumnResultOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.dataplex.v1.DataQualityProto + .internal_static_google_cloud_dataplex_v1_DataQualityColumnResult_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.dataplex.v1.DataQualityProto + .internal_static_google_cloud_dataplex_v1_DataQualityColumnResult_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.dataplex.v1.DataQualityColumnResult.class, + com.google.cloud.dataplex.v1.DataQualityColumnResult.Builder.class); + } + + // Construct using com.google.cloud.dataplex.v1.DataQualityColumnResult.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + column_ = ""; + score_ = 0F; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.dataplex.v1.DataQualityProto + .internal_static_google_cloud_dataplex_v1_DataQualityColumnResult_descriptor; + } + + @java.lang.Override + public com.google.cloud.dataplex.v1.DataQualityColumnResult getDefaultInstanceForType() { + return com.google.cloud.dataplex.v1.DataQualityColumnResult.getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.dataplex.v1.DataQualityColumnResult build() { + com.google.cloud.dataplex.v1.DataQualityColumnResult result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.dataplex.v1.DataQualityColumnResult buildPartial() { + com.google.cloud.dataplex.v1.DataQualityColumnResult result = + new com.google.cloud.dataplex.v1.DataQualityColumnResult(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.cloud.dataplex.v1.DataQualityColumnResult result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.column_ = column_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.score_ = score_; + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.dataplex.v1.DataQualityColumnResult) { + return mergeFrom((com.google.cloud.dataplex.v1.DataQualityColumnResult) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.cloud.dataplex.v1.DataQualityColumnResult other) { + if (other == com.google.cloud.dataplex.v1.DataQualityColumnResult.getDefaultInstance()) + return this; + if (!other.getColumn().isEmpty()) { + column_ = other.column_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (other.hasScore()) { + setScore(other.getScore()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + column_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 21: + { + score_ = input.readFloat(); + bitField0_ |= 0x00000002; + break; + } // case 21 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.lang.Object column_ = ""; + /** + * + * + *
+     * Output only. The column specified in the DataQualityRule.
+     * 
+ * + * string column = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The column. + */ + public java.lang.String getColumn() { + java.lang.Object ref = column_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + column_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Output only. The column specified in the DataQualityRule.
+     * 
+ * + * string column = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The bytes for column. + */ + public com.google.protobuf.ByteString getColumnBytes() { + java.lang.Object ref = column_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + column_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Output only. The column specified in the DataQualityRule.
+     * 
+ * + * string column = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @param value The column to set. + * @return This builder for chaining. + */ + public Builder setColumn(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + column_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The column specified in the DataQualityRule.
+     * 
+ * + * string column = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return This builder for chaining. + */ + public Builder clearColumn() { + column_ = getDefaultInstance().getColumn(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The column specified in the DataQualityRule.
+     * 
+ * + * string column = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @param value The bytes for column to set. + * @return This builder for chaining. + */ + public Builder setColumnBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + column_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private float score_; + /** + * + * + *
+     * Output only. The column-level data quality score for this data scan job if
+     * and only if the 'column' field is set.
+     *
+     * The score ranges between between [0, 100] (up to two decimal
+     * points).
+     * 
+ * + * optional float score = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return Whether the score field is set. + */ + @java.lang.Override + public boolean hasScore() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+     * Output only. The column-level data quality score for this data scan job if
+     * and only if the 'column' field is set.
+     *
+     * The score ranges between between [0, 100] (up to two decimal
+     * points).
+     * 
+ * + * optional float score = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The score. + */ + @java.lang.Override + public float getScore() { + return score_; + } + /** + * + * + *
+     * Output only. The column-level data quality score for this data scan job if
+     * and only if the 'column' field is set.
+     *
+     * The score ranges between between [0, 100] (up to two decimal
+     * points).
+     * 
+ * + * optional float score = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @param value The score to set. + * @return This builder for chaining. + */ + public Builder setScore(float value) { + + score_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The column-level data quality score for this data scan job if
+     * and only if the 'column' field is set.
+     *
+     * The score ranges between between [0, 100] (up to two decimal
+     * points).
+     * 
+ * + * optional float score = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return This builder for chaining. + */ + public Builder clearScore() { + bitField0_ = (bitField0_ & ~0x00000002); + score_ = 0F; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.dataplex.v1.DataQualityColumnResult) + } + + // @@protoc_insertion_point(class_scope:google.cloud.dataplex.v1.DataQualityColumnResult) + private static final com.google.cloud.dataplex.v1.DataQualityColumnResult DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.dataplex.v1.DataQualityColumnResult(); + } + + public static com.google.cloud.dataplex.v1.DataQualityColumnResult getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DataQualityColumnResult parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.dataplex.v1.DataQualityColumnResult getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityColumnResultOrBuilder.java b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityColumnResultOrBuilder.java new file mode 100644 index 000000000000..6ecd268d0236 --- /dev/null +++ b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityColumnResultOrBuilder.java @@ -0,0 +1,83 @@ +/* + * Copyright 2023 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 + * + * https://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. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/dataplex/v1/data_quality.proto + +package com.google.cloud.dataplex.v1; + +public interface DataQualityColumnResultOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.dataplex.v1.DataQualityColumnResult) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Output only. The column specified in the DataQualityRule.
+   * 
+ * + * string column = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The column. + */ + java.lang.String getColumn(); + /** + * + * + *
+   * Output only. The column specified in the DataQualityRule.
+   * 
+ * + * string column = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The bytes for column. + */ + com.google.protobuf.ByteString getColumnBytes(); + + /** + * + * + *
+   * Output only. The column-level data quality score for this data scan job if
+   * and only if the 'column' field is set.
+   *
+   * The score ranges between between [0, 100] (up to two decimal
+   * points).
+   * 
+ * + * optional float score = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return Whether the score field is set. + */ + boolean hasScore(); + /** + * + * + *
+   * Output only. The column-level data quality score for this data scan job if
+   * and only if the 'column' field is set.
+   *
+   * The score ranges between between [0, 100] (up to two decimal
+   * points).
+   * 
+ * + * optional float score = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The score. + */ + float getScore(); +} diff --git a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityDimensionResult.java b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityDimensionResult.java index eace2e080182..cb2d08c53b1d 100644 --- a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityDimensionResult.java +++ b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityDimensionResult.java @@ -61,6 +61,7 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { com.google.cloud.dataplex.v1.DataQualityDimensionResult.Builder.class); } + private int bitField0_; public static final int DIMENSION_FIELD_NUMBER = 1; private com.google.cloud.dataplex.v1.DataQualityDimension dimension_; /** @@ -135,6 +136,47 @@ public boolean getPassed() { return passed_; } + public static final int SCORE_FIELD_NUMBER = 4; + private float score_ = 0F; + /** + * + * + *
+   * Output only. The dimension-level data quality score for this data scan job
+   * if and only if the 'dimension' field is set.
+   *
+   * The score ranges between [0, 100] (up to two decimal
+   * points).
+   * 
+ * + * optional float score = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return Whether the score field is set. + */ + @java.lang.Override + public boolean hasScore() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+   * Output only. The dimension-level data quality score for this data scan job
+   * if and only if the 'dimension' field is set.
+   *
+   * The score ranges between [0, 100] (up to two decimal
+   * points).
+   * 
+ * + * optional float score = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The score. + */ + @java.lang.Override + public float getScore() { + return score_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -155,6 +197,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (passed_ != false) { output.writeBool(3, passed_); } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeFloat(4, score_); + } getUnknownFields().writeTo(output); } @@ -170,6 +215,9 @@ public int getSerializedSize() { if (passed_ != false) { size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, passed_); } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, score_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -191,6 +239,11 @@ public boolean equals(final java.lang.Object obj) { if (!getDimension().equals(other.getDimension())) return false; } if (getPassed() != other.getPassed()) return false; + if (hasScore() != other.hasScore()) return false; + if (hasScore()) { + if (java.lang.Float.floatToIntBits(getScore()) + != java.lang.Float.floatToIntBits(other.getScore())) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -208,6 +261,10 @@ public int hashCode() { } hash = (37 * hash) + PASSED_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getPassed()); + if (hasScore()) { + hash = (37 * hash) + SCORE_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getScore()); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -355,6 +412,7 @@ public Builder clear() { dimensionBuilder_ = null; } passed_ = false; + score_ = 0F; return this; } @@ -397,6 +455,12 @@ private void buildPartial0(com.google.cloud.dataplex.v1.DataQualityDimensionResu if (((from_bitField0_ & 0x00000002) != 0)) { result.passed_ = passed_; } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000004) != 0)) { + result.score_ = score_; + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; } @java.lang.Override @@ -451,6 +515,9 @@ public Builder mergeFrom(com.google.cloud.dataplex.v1.DataQualityDimensionResult if (other.getPassed() != false) { setPassed(other.getPassed()); } + if (other.hasScore()) { + setScore(other.getScore()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -489,6 +556,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000002; break; } // case 24 + case 37: + { + score_ = input.readFloat(); + bitField0_ |= 0x00000004; + break; + } // case 37 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -764,6 +837,90 @@ public Builder clearPassed() { return this; } + private float score_; + /** + * + * + *
+     * Output only. The dimension-level data quality score for this data scan job
+     * if and only if the 'dimension' field is set.
+     *
+     * The score ranges between [0, 100] (up to two decimal
+     * points).
+     * 
+ * + * optional float score = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return Whether the score field is set. + */ + @java.lang.Override + public boolean hasScore() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * + * + *
+     * Output only. The dimension-level data quality score for this data scan job
+     * if and only if the 'dimension' field is set.
+     *
+     * The score ranges between [0, 100] (up to two decimal
+     * points).
+     * 
+ * + * optional float score = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The score. + */ + @java.lang.Override + public float getScore() { + return score_; + } + /** + * + * + *
+     * Output only. The dimension-level data quality score for this data scan job
+     * if and only if the 'dimension' field is set.
+     *
+     * The score ranges between [0, 100] (up to two decimal
+     * points).
+     * 
+ * + * optional float score = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @param value The score to set. + * @return This builder for chaining. + */ + public Builder setScore(float value) { + + score_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The dimension-level data quality score for this data scan job
+     * if and only if the 'dimension' field is set.
+     *
+     * The score ranges between [0, 100] (up to two decimal
+     * points).
+     * 
+ * + * optional float score = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return This builder for chaining. + */ + public Builder clearScore() { + bitField0_ = (bitField0_ & ~0x00000004); + score_ = 0F; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityDimensionResultOrBuilder.java b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityDimensionResultOrBuilder.java index 358e1792b670..31b6f53c03e0 100644 --- a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityDimensionResultOrBuilder.java +++ b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityDimensionResultOrBuilder.java @@ -76,4 +76,37 @@ public interface DataQualityDimensionResultOrBuilder * @return The passed. */ boolean getPassed(); + + /** + * + * + *
+   * Output only. The dimension-level data quality score for this data scan job
+   * if and only if the 'dimension' field is set.
+   *
+   * The score ranges between [0, 100] (up to two decimal
+   * points).
+   * 
+ * + * optional float score = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return Whether the score field is set. + */ + boolean hasScore(); + /** + * + * + *
+   * Output only. The dimension-level data quality score for this data scan job
+   * if and only if the 'dimension' field is set.
+   *
+   * The score ranges between [0, 100] (up to two decimal
+   * points).
+   * 
+ * + * optional float score = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The score. + */ + float getScore(); } diff --git a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityProto.java b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityProto.java index 00219dea582a..8db569a93d54 100644 --- a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityProto.java +++ b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityProto.java @@ -99,6 +99,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_cloud_dataplex_v1_DataQualityRule_TableConditionExpectation_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_cloud_dataplex_v1_DataQualityRule_TableConditionExpectation_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_dataplex_v1_DataQualityColumnResult_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_dataplex_v1_DataQualityColumnResult_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -122,82 +126,88 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "_export\030\001 \001(\0132H.google.cloud.dataplex.v1" + ".DataQualitySpec.PostScanActions.BigQuer" + "yExportB\004\342A\001\001\032-\n\016BigQueryExport\022\033\n\rresul" - + "ts_table\030\001 \001(\tB\004\342A\001\001\"\353\005\n\021DataQualityResu" - + "lt\022\016\n\006passed\030\005 \001(\010\022H\n\ndimensions\030\002 \003(\01324" - + ".google.cloud.dataplex.v1.DataQualityDim" - + "ensionResult\022>\n\005rules\030\003 \003(\0132/.google.clo" - + "ud.dataplex.v1.DataQualityRuleResult\022\021\n\t" - + "row_count\030\004 \001(\003\022;\n\014scanned_data\030\007 \001(\0132%." - + "google.cloud.dataplex.v1.ScannedData\022i\n\030" - + "post_scan_actions_result\030\010 \001(\0132A.google." - + "cloud.dataplex.v1.DataQualityResult.Post" - + "ScanActionsResultB\004\342A\001\003\032\200\003\n\025PostScanActi" - + "onsResult\022|\n\026bigquery_export_result\030\001 \001(" - + "\0132V.google.cloud.dataplex.v1.DataQuality" - + "Result.PostScanActionsResult.BigQueryExp" - + "ortResultB\004\342A\001\003\032\350\001\n\024BigQueryExportResult" - + "\022q\n\005state\030\001 \001(\0162\\.google.cloud.dataplex." - + "v1.DataQualityResult.PostScanActionsResu" - + "lt.BigQueryExportResult.StateB\004\342A\001\003\022\025\n\007m" - + "essage\030\002 \001(\tB\004\342A\001\003\"F\n\005State\022\025\n\021STATE_UNS" - + "PECIFIED\020\000\022\r\n\tSUCCEEDED\020\001\022\n\n\006FAILED\020\002\022\013\n" - + "\007SKIPPED\020\003\"\323\001\n\025DataQualityRuleResult\0227\n\004" - + "rule\030\001 \001(\0132).google.cloud.dataplex.v1.Da" - + "taQualityRule\022\016\n\006passed\030\007 \001(\010\022\027\n\017evaluat" - + "ed_count\030\t \001(\003\022\024\n\014passed_count\030\010 \001(\003\022\022\n\n" - + "null_count\030\005 \001(\003\022\022\n\npass_ratio\030\006 \001(\001\022\032\n\022" - + "failing_rows_query\030\n \001(\t\"u\n\032DataQualityD" - + "imensionResult\022G\n\tdimension\030\001 \001(\0132..goog" - + "le.cloud.dataplex.v1.DataQualityDimensio" - + "nB\004\342A\001\003\022\016\n\006passed\030\003 \001(\010\"$\n\024DataQualityDi" - + "mension\022\014\n\004name\030\001 \001(\t\"\211\r\n\017DataQualityRul" - + "e\022W\n\021range_expectation\030\001 \001(\0132:.google.cl" - + "oud.dataplex.v1.DataQualityRule.RangeExp" - + "ectationH\000\022\\\n\024non_null_expectation\030\002 \001(\013" - + "2<.google.cloud.dataplex.v1.DataQualityR" - + "ule.NonNullExpectationH\000\022S\n\017set_expectat" - + "ion\030\003 \001(\01328.google.cloud.dataplex.v1.Dat" - + "aQualityRule.SetExpectationH\000\022W\n\021regex_e" - + "xpectation\030\004 \001(\0132:.google.cloud.dataplex" - + ".v1.DataQualityRule.RegexExpectationH\000\022a" - + "\n\026uniqueness_expectation\030d \001(\0132?.google." - + "cloud.dataplex.v1.DataQualityRule.Unique" - + "nessExpectationH\000\022j\n\033statistic_range_exp" - + "ectation\030e \001(\0132C.google.cloud.dataplex.v" - + "1.DataQualityRule.StatisticRangeExpectat" - + "ionH\000\022g\n\031row_condition_expectation\030\310\001 \001(" - + "\0132A.google.cloud.dataplex.v1.DataQuality" - + "Rule.RowConditionExpectationH\000\022k\n\033table_" - + "condition_expectation\030\311\001 \001(\0132C.google.cl" - + "oud.dataplex.v1.DataQualityRule.TableCon" - + "ditionExpectationH\000\022\025\n\006column\030\364\003 \001(\tB\004\342A" - + "\001\001\022\032\n\013ignore_null\030\365\003 \001(\010B\004\342A\001\001\022\030\n\tdimens" - + "ion\030\366\003 \001(\tB\004\342A\001\002\022\030\n\tthreshold\030\367\003 \001(\001B\004\342A" - + "\001\001\022\023\n\004name\030\370\003 \001(\tB\004\342A\001\001\022\032\n\013description\030\371" - + "\003 \001(\tB\004\342A\001\001\032\210\001\n\020RangeExpectation\022\027\n\tmin_" - + "value\030\001 \001(\tB\004\342A\001\001\022\027\n\tmax_value\030\002 \001(\tB\004\342A" - + "\001\001\022 \n\022strict_min_enabled\030\003 \001(\010B\004\342A\001\001\022 \n\022" - + "strict_max_enabled\030\004 \001(\010B\004\342A\001\001\032\024\n\022NonNul" - + "lExpectation\032&\n\016SetExpectation\022\024\n\006values" - + "\030\001 \003(\tB\004\342A\001\001\032\'\n\020RegexExpectation\022\023\n\005rege" - + "x\030\001 \001(\tB\004\342A\001\001\032\027\n\025UniquenessExpectation\032\307" - + "\002\n\031StatisticRangeExpectation\022l\n\tstatisti" - + "c\030\001 \001(\0162S.google.cloud.dataplex.v1.DataQ" - + "ualityRule.StatisticRangeExpectation.Col" - + "umnStatisticB\004\342A\001\001\022\027\n\tmin_value\030\002 \001(\tB\004\342" - + "A\001\001\022\027\n\tmax_value\030\003 \001(\tB\004\342A\001\001\022 \n\022strict_m" - + "in_enabled\030\004 \001(\010B\004\342A\001\001\022 \n\022strict_max_ena" - + "bled\030\005 \001(\010B\004\342A\001\001\"F\n\017ColumnStatistic\022\027\n\023S" - + "TATISTIC_UNDEFINED\020\000\022\010\n\004MEAN\020\001\022\007\n\003MIN\020\002\022" - + "\007\n\003MAX\020\003\0327\n\027RowConditionExpectation\022\034\n\016s" - + "ql_expression\030\001 \001(\tB\004\342A\001\001\0329\n\031TableCondit" - + "ionExpectation\022\034\n\016sql_expression\030\001 \001(\tB\004" - + "\342A\001\001B\013\n\trule_typeB\304\001\n\034com.google.cloud.d" - + "ataplex.v1B\020DataQualityProtoP\001Z8cloud.go" - + "ogle.com/go/dataplex/apiv1/dataplexpb;da" - + "taplexpb\352AU\n\035bigquery.googleapis.com/Tab" - + "le\0224projects/{project}/datasets/{dataset" - + "}/tables/{table}b\006proto3" + + "ts_table\030\001 \001(\tB\004\342A\001\001\"\331\006\n\021DataQualityResu" + + "lt\022\016\n\006passed\030\005 \001(\010\022\030\n\005score\030\t \001(\002B\004\342A\001\003H" + + "\000\210\001\001\022H\n\ndimensions\030\002 \003(\01324.google.cloud." + + "dataplex.v1.DataQualityDimensionResult\022H" + + "\n\007columns\030\n \003(\01321.google.cloud.dataplex." + + "v1.DataQualityColumnResultB\004\342A\001\003\022>\n\005rule" + + "s\030\003 \003(\0132/.google.cloud.dataplex.v1.DataQ" + + "ualityRuleResult\022\021\n\trow_count\030\004 \001(\003\022;\n\014s" + + "canned_data\030\007 \001(\0132%.google.cloud.dataple" + + "x.v1.ScannedData\022i\n\030post_scan_actions_re" + + "sult\030\010 \001(\0132A.google.cloud.dataplex.v1.Da" + + "taQualityResult.PostScanActionsResultB\004\342" + + "A\001\003\032\200\003\n\025PostScanActionsResult\022|\n\026bigquer" + + "y_export_result\030\001 \001(\0132V.google.cloud.dat" + + "aplex.v1.DataQualityResult.PostScanActio" + + "nsResult.BigQueryExportResultB\004\342A\001\003\032\350\001\n\024" + + "BigQueryExportResult\022q\n\005state\030\001 \001(\0162\\.go" + + "ogle.cloud.dataplex.v1.DataQualityResult" + + ".PostScanActionsResult.BigQueryExportRes" + + "ult.StateB\004\342A\001\003\022\025\n\007message\030\002 \001(\tB\004\342A\001\003\"F" + + "\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022\r\n\tSUCCEE" + + "DED\020\001\022\n\n\006FAILED\020\002\022\013\n\007SKIPPED\020\003B\010\n\006_score" + + "\"\323\001\n\025DataQualityRuleResult\0227\n\004rule\030\001 \001(\013" + + "2).google.cloud.dataplex.v1.DataQualityR" + + "ule\022\016\n\006passed\030\007 \001(\010\022\027\n\017evaluated_count\030\t" + + " \001(\003\022\024\n\014passed_count\030\010 \001(\003\022\022\n\nnull_count" + + "\030\005 \001(\003\022\022\n\npass_ratio\030\006 \001(\001\022\032\n\022failing_ro" + + "ws_query\030\n \001(\t\"\231\001\n\032DataQualityDimensionR" + + "esult\022G\n\tdimension\030\001 \001(\0132..google.cloud." + + "dataplex.v1.DataQualityDimensionB\004\342A\001\003\022\016" + + "\n\006passed\030\003 \001(\010\022\030\n\005score\030\004 \001(\002B\004\342A\001\003H\000\210\001\001" + + "B\010\n\006_score\"$\n\024DataQualityDimension\022\014\n\004na" + + "me\030\001 \001(\t\"\211\r\n\017DataQualityRule\022W\n\021range_ex" + + "pectation\030\001 \001(\0132:.google.cloud.dataplex." + + "v1.DataQualityRule.RangeExpectationH\000\022\\\n" + + "\024non_null_expectation\030\002 \001(\0132<.google.clo" + + "ud.dataplex.v1.DataQualityRule.NonNullEx" + + "pectationH\000\022S\n\017set_expectation\030\003 \001(\01328.g" + + "oogle.cloud.dataplex.v1.DataQualityRule." + + "SetExpectationH\000\022W\n\021regex_expectation\030\004 " + + "\001(\0132:.google.cloud.dataplex.v1.DataQuali" + + "tyRule.RegexExpectationH\000\022a\n\026uniqueness_" + + "expectation\030d \001(\0132?.google.cloud.dataple" + + "x.v1.DataQualityRule.UniquenessExpectati" + + "onH\000\022j\n\033statistic_range_expectation\030e \001(" + + "\0132C.google.cloud.dataplex.v1.DataQuality" + + "Rule.StatisticRangeExpectationH\000\022g\n\031row_" + + "condition_expectation\030\310\001 \001(\0132A.google.cl" + + "oud.dataplex.v1.DataQualityRule.RowCondi" + + "tionExpectationH\000\022k\n\033table_condition_exp" + + "ectation\030\311\001 \001(\0132C.google.cloud.dataplex." + + "v1.DataQualityRule.TableConditionExpecta" + + "tionH\000\022\025\n\006column\030\364\003 \001(\tB\004\342A\001\001\022\032\n\013ignore_" + + "null\030\365\003 \001(\010B\004\342A\001\001\022\030\n\tdimension\030\366\003 \001(\tB\004\342" + + "A\001\002\022\030\n\tthreshold\030\367\003 \001(\001B\004\342A\001\001\022\023\n\004name\030\370\003" + + " \001(\tB\004\342A\001\001\022\032\n\013description\030\371\003 \001(\tB\004\342A\001\001\032\210" + + "\001\n\020RangeExpectation\022\027\n\tmin_value\030\001 \001(\tB\004" + + "\342A\001\001\022\027\n\tmax_value\030\002 \001(\tB\004\342A\001\001\022 \n\022strict_" + + "min_enabled\030\003 \001(\010B\004\342A\001\001\022 \n\022strict_max_en" + + "abled\030\004 \001(\010B\004\342A\001\001\032\024\n\022NonNullExpectation\032" + + "&\n\016SetExpectation\022\024\n\006values\030\001 \003(\tB\004\342A\001\001\032" + + "\'\n\020RegexExpectation\022\023\n\005regex\030\001 \001(\tB\004\342A\001\001" + + "\032\027\n\025UniquenessExpectation\032\307\002\n\031StatisticR" + + "angeExpectation\022l\n\tstatistic\030\001 \001(\0162S.goo" + + "gle.cloud.dataplex.v1.DataQualityRule.St" + + "atisticRangeExpectation.ColumnStatisticB" + + "\004\342A\001\001\022\027\n\tmin_value\030\002 \001(\tB\004\342A\001\001\022\027\n\tmax_va" + + "lue\030\003 \001(\tB\004\342A\001\001\022 \n\022strict_min_enabled\030\004 " + + "\001(\010B\004\342A\001\001\022 \n\022strict_max_enabled\030\005 \001(\010B\004\342" + + "A\001\001\"F\n\017ColumnStatistic\022\027\n\023STATISTIC_UNDE" + + "FINED\020\000\022\010\n\004MEAN\020\001\022\007\n\003MIN\020\002\022\007\n\003MAX\020\003\0327\n\027R" + + "owConditionExpectation\022\034\n\016sql_expression" + + "\030\001 \001(\tB\004\342A\001\001\0329\n\031TableConditionExpectatio" + + "n\022\034\n\016sql_expression\030\001 \001(\tB\004\342A\001\001B\013\n\trule_" + + "type\"S\n\027DataQualityColumnResult\022\024\n\006colum" + + "n\030\001 \001(\tB\004\342A\001\003\022\030\n\005score\030\002 \001(\002B\004\342A\001\003H\000\210\001\001B" + + "\010\n\006_scoreB\304\001\n\034com.google.cloud.dataplex." + + "v1B\020DataQualityProtoP\001Z8cloud.google.com" + + "/go/dataplex/apiv1/dataplexpb;dataplexpb" + + "\352AU\n\035bigquery.googleapis.com/Table\0224proj" + + "ects/{project}/datasets/{dataset}/tables" + + "/{table}b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -239,7 +249,15 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_dataplex_v1_DataQualityResult_descriptor, new java.lang.String[] { - "Passed", "Dimensions", "Rules", "RowCount", "ScannedData", "PostScanActionsResult", + "Passed", + "Score", + "Dimensions", + "Columns", + "Rules", + "RowCount", + "ScannedData", + "PostScanActionsResult", + "Score", }); internal_static_google_cloud_dataplex_v1_DataQualityResult_PostScanActionsResult_descriptor = internal_static_google_cloud_dataplex_v1_DataQualityResult_descriptor @@ -281,7 +299,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_dataplex_v1_DataQualityDimensionResult_descriptor, new java.lang.String[] { - "Dimension", "Passed", + "Dimension", "Passed", "Score", "Score", }); internal_static_google_cloud_dataplex_v1_DataQualityDimension_descriptor = getDescriptor().getMessageTypes().get(4); @@ -373,6 +391,14 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "SqlExpression", }); + internal_static_google_cloud_dataplex_v1_DataQualityColumnResult_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_google_cloud_dataplex_v1_DataQualityColumnResult_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_dataplex_v1_DataQualityColumnResult_descriptor, + new java.lang.String[] { + "Column", "Score", "Score", + }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); registry.add(com.google.api.FieldBehaviorProto.fieldBehavior); diff --git a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityResult.java b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityResult.java index 279f78986cf5..05d8c293a302 100644 --- a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityResult.java +++ b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityResult.java @@ -39,6 +39,7 @@ private DataQualityResult(com.google.protobuf.GeneratedMessageV3.Builder buil private DataQualityResult() { dimensions_ = java.util.Collections.emptyList(); + columns_ = java.util.Collections.emptyList(); rules_ = java.util.Collections.emptyList(); } @@ -1993,6 +1994,7 @@ public com.google.protobuf.Parser getParserForType() { } } + private int bitField0_; public static final int PASSED_FIELD_NUMBER = 5; private boolean passed_ = false; /** @@ -2011,6 +2013,43 @@ public boolean getPassed() { return passed_; } + public static final int SCORE_FIELD_NUMBER = 9; + private float score_ = 0F; + /** + * + * + *
+   * Output only. The overall data quality score.
+   *
+   * The score ranges between [0, 100] (up to two decimal points).
+   * 
+ * + * optional float score = 9 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return Whether the score field is set. + */ + @java.lang.Override + public boolean hasScore() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+   * Output only. The overall data quality score.
+   *
+   * The score ranges between [0, 100] (up to two decimal points).
+   * 
+ * + * optional float score = 9 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The score. + */ + @java.lang.Override + public float getScore() { + return score_; + } + public static final int DIMENSIONS_FIELD_NUMBER = 2; @SuppressWarnings("serial") @@ -2099,6 +2138,103 @@ public com.google.cloud.dataplex.v1.DataQualityDimensionResultOrBuilder getDimen return dimensions_.get(index); } + public static final int COLUMNS_FIELD_NUMBER = 10; + + @SuppressWarnings("serial") + private java.util.List columns_; + /** + * + * + *
+   * Output only. A list of results at the column level.
+   *
+   * A column will have a corresponding `DataQualityColumnResult` if and only if
+   * there is at least one rule with the 'column' field set to it.
+   * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + @java.lang.Override + public java.util.List getColumnsList() { + return columns_; + } + /** + * + * + *
+   * Output only. A list of results at the column level.
+   *
+   * A column will have a corresponding `DataQualityColumnResult` if and only if
+   * there is at least one rule with the 'column' field set to it.
+   * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + @java.lang.Override + public java.util.List + getColumnsOrBuilderList() { + return columns_; + } + /** + * + * + *
+   * Output only. A list of results at the column level.
+   *
+   * A column will have a corresponding `DataQualityColumnResult` if and only if
+   * there is at least one rule with the 'column' field set to it.
+   * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + @java.lang.Override + public int getColumnsCount() { + return columns_.size(); + } + /** + * + * + *
+   * Output only. A list of results at the column level.
+   *
+   * A column will have a corresponding `DataQualityColumnResult` if and only if
+   * there is at least one rule with the 'column' field set to it.
+   * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + @java.lang.Override + public com.google.cloud.dataplex.v1.DataQualityColumnResult getColumns(int index) { + return columns_.get(index); + } + /** + * + * + *
+   * Output only. A list of results at the column level.
+   *
+   * A column will have a corresponding `DataQualityColumnResult` if and only if
+   * there is at least one rule with the 'column' field set to it.
+   * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + @java.lang.Override + public com.google.cloud.dataplex.v1.DataQualityColumnResultOrBuilder getColumnsOrBuilder( + int index) { + return columns_.get(index); + } + public static final int RULES_FIELD_NUMBER = 3; @SuppressWarnings("serial") @@ -2329,6 +2465,12 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (postScanActionsResult_ != null) { output.writeMessage(8, getPostScanActionsResult()); } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeFloat(9, score_); + } + for (int i = 0; i < columns_.size(); i++) { + output.writeMessage(10, columns_.get(i)); + } getUnknownFields().writeTo(output); } @@ -2357,6 +2499,12 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getPostScanActionsResult()); } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(9, score_); + } + for (int i = 0; i < columns_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, columns_.get(i)); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -2374,7 +2522,13 @@ public boolean equals(final java.lang.Object obj) { (com.google.cloud.dataplex.v1.DataQualityResult) obj; if (getPassed() != other.getPassed()) return false; + if (hasScore() != other.hasScore()) return false; + if (hasScore()) { + if (java.lang.Float.floatToIntBits(getScore()) + != java.lang.Float.floatToIntBits(other.getScore())) return false; + } if (!getDimensionsList().equals(other.getDimensionsList())) return false; + if (!getColumnsList().equals(other.getColumnsList())) return false; if (!getRulesList().equals(other.getRulesList())) return false; if (getRowCount() != other.getRowCount()) return false; if (hasScannedData() != other.hasScannedData()) return false; @@ -2398,10 +2552,18 @@ public int hashCode() { hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + PASSED_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getPassed()); + if (hasScore()) { + hash = (37 * hash) + SCORE_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getScore()); + } if (getDimensionsCount() > 0) { hash = (37 * hash) + DIMENSIONS_FIELD_NUMBER; hash = (53 * hash) + getDimensionsList().hashCode(); } + if (getColumnsCount() > 0) { + hash = (37 * hash) + COLUMNS_FIELD_NUMBER; + hash = (53 * hash) + getColumnsList().hashCode(); + } if (getRulesCount() > 0) { hash = (37 * hash) + RULES_FIELD_NUMBER; hash = (53 * hash) + getRulesList().hashCode(); @@ -2556,20 +2718,28 @@ public Builder clear() { super.clear(); bitField0_ = 0; passed_ = false; + score_ = 0F; if (dimensionsBuilder_ == null) { dimensions_ = java.util.Collections.emptyList(); } else { dimensions_ = null; dimensionsBuilder_.clear(); } - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000004); + if (columnsBuilder_ == null) { + columns_ = java.util.Collections.emptyList(); + } else { + columns_ = null; + columnsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); if (rulesBuilder_ == null) { rules_ = java.util.Collections.emptyList(); } else { rules_ = null; rulesBuilder_.clear(); } - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); rowCount_ = 0L; scannedData_ = null; if (scannedDataBuilder_ != null) { @@ -2618,18 +2788,27 @@ public com.google.cloud.dataplex.v1.DataQualityResult buildPartial() { private void buildPartialRepeatedFields(com.google.cloud.dataplex.v1.DataQualityResult result) { if (dimensionsBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0)) { + if (((bitField0_ & 0x00000004) != 0)) { dimensions_ = java.util.Collections.unmodifiableList(dimensions_); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000004); } result.dimensions_ = dimensions_; } else { result.dimensions_ = dimensionsBuilder_.build(); } + if (columnsBuilder_ == null) { + if (((bitField0_ & 0x00000008) != 0)) { + columns_ = java.util.Collections.unmodifiableList(columns_); + bitField0_ = (bitField0_ & ~0x00000008); + } + result.columns_ = columns_; + } else { + result.columns_ = columnsBuilder_.build(); + } if (rulesBuilder_ == null) { - if (((bitField0_ & 0x00000004) != 0)) { + if (((bitField0_ & 0x00000010) != 0)) { rules_ = java.util.Collections.unmodifiableList(rules_); - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); } result.rules_ = rules_; } else { @@ -2642,19 +2821,25 @@ private void buildPartial0(com.google.cloud.dataplex.v1.DataQualityResult result if (((from_bitField0_ & 0x00000001) != 0)) { result.passed_ = passed_; } - if (((from_bitField0_ & 0x00000008) != 0)) { + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.score_ = score_; + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000020) != 0)) { result.rowCount_ = rowCount_; } - if (((from_bitField0_ & 0x00000010) != 0)) { + if (((from_bitField0_ & 0x00000040) != 0)) { result.scannedData_ = scannedDataBuilder_ == null ? scannedData_ : scannedDataBuilder_.build(); } - if (((from_bitField0_ & 0x00000020) != 0)) { + if (((from_bitField0_ & 0x00000080) != 0)) { result.postScanActionsResult_ = postScanActionsResultBuilder_ == null ? postScanActionsResult_ : postScanActionsResultBuilder_.build(); } + result.bitField0_ |= to_bitField0_; } @java.lang.Override @@ -2705,11 +2890,14 @@ public Builder mergeFrom(com.google.cloud.dataplex.v1.DataQualityResult other) { if (other.getPassed() != false) { setPassed(other.getPassed()); } + if (other.hasScore()) { + setScore(other.getScore()); + } if (dimensionsBuilder_ == null) { if (!other.dimensions_.isEmpty()) { if (dimensions_.isEmpty()) { dimensions_ = other.dimensions_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000004); } else { ensureDimensionsIsMutable(); dimensions_.addAll(other.dimensions_); @@ -2722,7 +2910,7 @@ public Builder mergeFrom(com.google.cloud.dataplex.v1.DataQualityResult other) { dimensionsBuilder_.dispose(); dimensionsBuilder_ = null; dimensions_ = other.dimensions_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000004); dimensionsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDimensionsFieldBuilder() @@ -2732,11 +2920,38 @@ public Builder mergeFrom(com.google.cloud.dataplex.v1.DataQualityResult other) { } } } + if (columnsBuilder_ == null) { + if (!other.columns_.isEmpty()) { + if (columns_.isEmpty()) { + columns_ = other.columns_; + bitField0_ = (bitField0_ & ~0x00000008); + } else { + ensureColumnsIsMutable(); + columns_.addAll(other.columns_); + } + onChanged(); + } + } else { + if (!other.columns_.isEmpty()) { + if (columnsBuilder_.isEmpty()) { + columnsBuilder_.dispose(); + columnsBuilder_ = null; + columns_ = other.columns_; + bitField0_ = (bitField0_ & ~0x00000008); + columnsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getColumnsFieldBuilder() + : null; + } else { + columnsBuilder_.addAllMessages(other.columns_); + } + } + } if (rulesBuilder_ == null) { if (!other.rules_.isEmpty()) { if (rules_.isEmpty()) { rules_ = other.rules_; - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); } else { ensureRulesIsMutable(); rules_.addAll(other.rules_); @@ -2749,7 +2964,7 @@ public Builder mergeFrom(com.google.cloud.dataplex.v1.DataQualityResult other) { rulesBuilder_.dispose(); rulesBuilder_ = null; rules_ = other.rules_; - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); rulesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getRulesFieldBuilder() @@ -2825,7 +3040,7 @@ public Builder mergeFrom( case 32: { rowCount_ = input.readInt64(); - bitField0_ |= 0x00000008; + bitField0_ |= 0x00000020; break; } // case 32 case 40: @@ -2837,16 +3052,36 @@ public Builder mergeFrom( case 58: { input.readMessage(getScannedDataFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00000010; + bitField0_ |= 0x00000040; break; } // case 58 case 66: { input.readMessage( getPostScanActionsResultFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000080; break; } // case 66 + case 77: + { + score_ = input.readFloat(); + bitField0_ |= 0x00000002; + break; + } // case 77 + case 82: + { + com.google.cloud.dataplex.v1.DataQualityColumnResult m = + input.readMessage( + com.google.cloud.dataplex.v1.DataQualityColumnResult.parser(), + extensionRegistry); + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + columns_.add(m); + } else { + columnsBuilder_.addMessage(m); + } + break; + } // case 82 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -2919,15 +3154,91 @@ public Builder clearPassed() { return this; } + private float score_; + /** + * + * + *
+     * Output only. The overall data quality score.
+     *
+     * The score ranges between [0, 100] (up to two decimal points).
+     * 
+ * + * optional float score = 9 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return Whether the score field is set. + */ + @java.lang.Override + public boolean hasScore() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+     * Output only. The overall data quality score.
+     *
+     * The score ranges between [0, 100] (up to two decimal points).
+     * 
+ * + * optional float score = 9 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The score. + */ + @java.lang.Override + public float getScore() { + return score_; + } + /** + * + * + *
+     * Output only. The overall data quality score.
+     *
+     * The score ranges between [0, 100] (up to two decimal points).
+     * 
+ * + * optional float score = 9 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @param value The score to set. + * @return This builder for chaining. + */ + public Builder setScore(float value) { + + score_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The overall data quality score.
+     *
+     * The score ranges between [0, 100] (up to two decimal points).
+     * 
+ * + * optional float score = 9 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return This builder for chaining. + */ + public Builder clearScore() { + bitField0_ = (bitField0_ & ~0x00000002); + score_ = 0F; + onChanged(); + return this; + } + private java.util.List dimensions_ = java.util.Collections.emptyList(); private void ensureDimensionsIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { + if (!((bitField0_ & 0x00000004) != 0)) { dimensions_ = new java.util.ArrayList( dimensions_); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000004; } } @@ -3182,7 +3493,7 @@ public Builder addAllDimensions( public Builder clearDimensions() { if (dimensionsBuilder_ == null) { dimensions_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); } else { dimensionsBuilder_.clear(); @@ -3330,20 +3641,467 @@ public com.google.cloud.dataplex.v1.DataQualityDimensionResult.Builder addDimens com.google.cloud.dataplex.v1.DataQualityDimensionResult, com.google.cloud.dataplex.v1.DataQualityDimensionResult.Builder, com.google.cloud.dataplex.v1.DataQualityDimensionResultOrBuilder>( - dimensions_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); + dimensions_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); dimensions_ = null; } return dimensionsBuilder_; } + private java.util.List columns_ = + java.util.Collections.emptyList(); + + private void ensureColumnsIsMutable() { + if (!((bitField0_ & 0x00000008) != 0)) { + columns_ = + new java.util.ArrayList(columns_); + bitField0_ |= 0x00000008; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.dataplex.v1.DataQualityColumnResult, + com.google.cloud.dataplex.v1.DataQualityColumnResult.Builder, + com.google.cloud.dataplex.v1.DataQualityColumnResultOrBuilder> + columnsBuilder_; + + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public java.util.List getColumnsList() { + if (columnsBuilder_ == null) { + return java.util.Collections.unmodifiableList(columns_); + } else { + return columnsBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public int getColumnsCount() { + if (columnsBuilder_ == null) { + return columns_.size(); + } else { + return columnsBuilder_.getCount(); + } + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public com.google.cloud.dataplex.v1.DataQualityColumnResult getColumns(int index) { + if (columnsBuilder_ == null) { + return columns_.get(index); + } else { + return columnsBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder setColumns( + int index, com.google.cloud.dataplex.v1.DataQualityColumnResult value) { + if (columnsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureColumnsIsMutable(); + columns_.set(index, value); + onChanged(); + } else { + columnsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder setColumns( + int index, com.google.cloud.dataplex.v1.DataQualityColumnResult.Builder builderForValue) { + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + columns_.set(index, builderForValue.build()); + onChanged(); + } else { + columnsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder addColumns(com.google.cloud.dataplex.v1.DataQualityColumnResult value) { + if (columnsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureColumnsIsMutable(); + columns_.add(value); + onChanged(); + } else { + columnsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder addColumns( + int index, com.google.cloud.dataplex.v1.DataQualityColumnResult value) { + if (columnsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureColumnsIsMutable(); + columns_.add(index, value); + onChanged(); + } else { + columnsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder addColumns( + com.google.cloud.dataplex.v1.DataQualityColumnResult.Builder builderForValue) { + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + columns_.add(builderForValue.build()); + onChanged(); + } else { + columnsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder addColumns( + int index, com.google.cloud.dataplex.v1.DataQualityColumnResult.Builder builderForValue) { + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + columns_.add(index, builderForValue.build()); + onChanged(); + } else { + columnsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder addAllColumns( + java.lang.Iterable values) { + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, columns_); + onChanged(); + } else { + columnsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder clearColumns() { + if (columnsBuilder_ == null) { + columns_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + } else { + columnsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder removeColumns(int index) { + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + columns_.remove(index); + onChanged(); + } else { + columnsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public com.google.cloud.dataplex.v1.DataQualityColumnResult.Builder getColumnsBuilder( + int index) { + return getColumnsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public com.google.cloud.dataplex.v1.DataQualityColumnResultOrBuilder getColumnsOrBuilder( + int index) { + if (columnsBuilder_ == null) { + return columns_.get(index); + } else { + return columnsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public java.util.List + getColumnsOrBuilderList() { + if (columnsBuilder_ != null) { + return columnsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(columns_); + } + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public com.google.cloud.dataplex.v1.DataQualityColumnResult.Builder addColumnsBuilder() { + return getColumnsFieldBuilder() + .addBuilder(com.google.cloud.dataplex.v1.DataQualityColumnResult.getDefaultInstance()); + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public com.google.cloud.dataplex.v1.DataQualityColumnResult.Builder addColumnsBuilder( + int index) { + return getColumnsFieldBuilder() + .addBuilder( + index, com.google.cloud.dataplex.v1.DataQualityColumnResult.getDefaultInstance()); + } + /** + * + * + *
+     * Output only. A list of results at the column level.
+     *
+     * A column will have a corresponding `DataQualityColumnResult` if and only if
+     * there is at least one rule with the 'column' field set to it.
+     * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public java.util.List + getColumnsBuilderList() { + return getColumnsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.dataplex.v1.DataQualityColumnResult, + com.google.cloud.dataplex.v1.DataQualityColumnResult.Builder, + com.google.cloud.dataplex.v1.DataQualityColumnResultOrBuilder> + getColumnsFieldBuilder() { + if (columnsBuilder_ == null) { + columnsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.dataplex.v1.DataQualityColumnResult, + com.google.cloud.dataplex.v1.DataQualityColumnResult.Builder, + com.google.cloud.dataplex.v1.DataQualityColumnResultOrBuilder>( + columns_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean()); + columns_ = null; + } + return columnsBuilder_; + } + private java.util.List rules_ = java.util.Collections.emptyList(); private void ensureRulesIsMutable() { - if (!((bitField0_ & 0x00000004) != 0)) { + if (!((bitField0_ & 0x00000010) != 0)) { rules_ = new java.util.ArrayList(rules_); - bitField0_ |= 0x00000004; + bitField0_ |= 0x00000010; } } @@ -3559,7 +4317,7 @@ public Builder addAllRules( public Builder clearRules() { if (rulesBuilder_ == null) { rules_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); onChanged(); } else { rulesBuilder_.clear(); @@ -3683,7 +4441,7 @@ public com.google.cloud.dataplex.v1.DataQualityRuleResult.Builder addRulesBuilde com.google.cloud.dataplex.v1.DataQualityRuleResult, com.google.cloud.dataplex.v1.DataQualityRuleResult.Builder, com.google.cloud.dataplex.v1.DataQualityRuleResultOrBuilder>( - rules_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); + rules_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean()); rules_ = null; } return rulesBuilder_; @@ -3720,7 +4478,7 @@ public long getRowCount() { public Builder setRowCount(long value) { rowCount_ = value; - bitField0_ |= 0x00000008; + bitField0_ |= 0x00000020; onChanged(); return this; } @@ -3736,7 +4494,7 @@ public Builder setRowCount(long value) { * @return This builder for chaining. */ public Builder clearRowCount() { - bitField0_ = (bitField0_ & ~0x00000008); + bitField0_ = (bitField0_ & ~0x00000020); rowCount_ = 0L; onChanged(); return this; @@ -3760,7 +4518,7 @@ public Builder clearRowCount() { * @return Whether the scannedData field is set. */ public boolean hasScannedData() { - return ((bitField0_ & 0x00000010) != 0); + return ((bitField0_ & 0x00000040) != 0); } /** * @@ -3800,7 +4558,7 @@ public Builder setScannedData(com.google.cloud.dataplex.v1.ScannedData value) { } else { scannedDataBuilder_.setMessage(value); } - bitField0_ |= 0x00000010; + bitField0_ |= 0x00000040; onChanged(); return this; } @@ -3820,7 +4578,7 @@ public Builder setScannedData( } else { scannedDataBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00000010; + bitField0_ |= 0x00000040; onChanged(); return this; } @@ -3835,7 +4593,7 @@ public Builder setScannedData( */ public Builder mergeScannedData(com.google.cloud.dataplex.v1.ScannedData value) { if (scannedDataBuilder_ == null) { - if (((bitField0_ & 0x00000010) != 0) + if (((bitField0_ & 0x00000040) != 0) && scannedData_ != null && scannedData_ != com.google.cloud.dataplex.v1.ScannedData.getDefaultInstance()) { getScannedDataBuilder().mergeFrom(value); @@ -3845,7 +4603,7 @@ public Builder mergeScannedData(com.google.cloud.dataplex.v1.ScannedData value) } else { scannedDataBuilder_.mergeFrom(value); } - bitField0_ |= 0x00000010; + bitField0_ |= 0x00000040; onChanged(); return this; } @@ -3859,7 +4617,7 @@ public Builder mergeScannedData(com.google.cloud.dataplex.v1.ScannedData value) * .google.cloud.dataplex.v1.ScannedData scanned_data = 7; */ public Builder clearScannedData() { - bitField0_ = (bitField0_ & ~0x00000010); + bitField0_ = (bitField0_ & ~0x00000040); scannedData_ = null; if (scannedDataBuilder_ != null) { scannedDataBuilder_.dispose(); @@ -3878,7 +4636,7 @@ public Builder clearScannedData() { * .google.cloud.dataplex.v1.ScannedData scanned_data = 7; */ public com.google.cloud.dataplex.v1.ScannedData.Builder getScannedDataBuilder() { - bitField0_ |= 0x00000010; + bitField0_ |= 0x00000040; onChanged(); return getScannedDataFieldBuilder().getBuilder(); } @@ -3947,7 +4705,7 @@ public com.google.cloud.dataplex.v1.ScannedDataOrBuilder getScannedDataOrBuilder * @return Whether the postScanActionsResult field is set. */ public boolean hasPostScanActionsResult() { - return ((bitField0_ & 0x00000020) != 0); + return ((bitField0_ & 0x00000080) != 0); } /** * @@ -3994,7 +4752,7 @@ public Builder setPostScanActionsResult( } else { postScanActionsResultBuilder_.setMessage(value); } - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -4017,7 +4775,7 @@ public Builder setPostScanActionsResult( } else { postScanActionsResultBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -4035,7 +4793,7 @@ public Builder setPostScanActionsResult( public Builder mergePostScanActionsResult( com.google.cloud.dataplex.v1.DataQualityResult.PostScanActionsResult value) { if (postScanActionsResultBuilder_ == null) { - if (((bitField0_ & 0x00000020) != 0) + if (((bitField0_ & 0x00000080) != 0) && postScanActionsResult_ != null && postScanActionsResult_ != com.google.cloud.dataplex.v1.DataQualityResult.PostScanActionsResult @@ -4047,7 +4805,7 @@ public Builder mergePostScanActionsResult( } else { postScanActionsResultBuilder_.mergeFrom(value); } - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -4063,7 +4821,7 @@ public Builder mergePostScanActionsResult( * */ public Builder clearPostScanActionsResult() { - bitField0_ = (bitField0_ & ~0x00000020); + bitField0_ = (bitField0_ & ~0x00000080); postScanActionsResult_ = null; if (postScanActionsResultBuilder_ != null) { postScanActionsResultBuilder_.dispose(); @@ -4085,7 +4843,7 @@ public Builder clearPostScanActionsResult() { */ public com.google.cloud.dataplex.v1.DataQualityResult.PostScanActionsResult.Builder getPostScanActionsResultBuilder() { - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000080; onChanged(); return getPostScanActionsResultFieldBuilder().getBuilder(); } diff --git a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityResultOrBuilder.java b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityResultOrBuilder.java index df95bd6a1765..ff2c93919f32 100644 --- a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityResultOrBuilder.java +++ b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/java/com/google/cloud/dataplex/v1/DataQualityResultOrBuilder.java @@ -36,6 +36,35 @@ public interface DataQualityResultOrBuilder */ boolean getPassed(); + /** + * + * + *
+   * Output only. The overall data quality score.
+   *
+   * The score ranges between [0, 100] (up to two decimal points).
+   * 
+ * + * optional float score = 9 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return Whether the score field is set. + */ + boolean hasScore(); + /** + * + * + *
+   * Output only. The overall data quality score.
+   *
+   * The score ranges between [0, 100] (up to two decimal points).
+   * 
+ * + * optional float score = 9 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The score. + */ + float getScore(); + /** * * @@ -104,6 +133,83 @@ public interface DataQualityResultOrBuilder com.google.cloud.dataplex.v1.DataQualityDimensionResultOrBuilder getDimensionsOrBuilder( int index); + /** + * + * + *
+   * Output only. A list of results at the column level.
+   *
+   * A column will have a corresponding `DataQualityColumnResult` if and only if
+   * there is at least one rule with the 'column' field set to it.
+   * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + java.util.List getColumnsList(); + /** + * + * + *
+   * Output only. A list of results at the column level.
+   *
+   * A column will have a corresponding `DataQualityColumnResult` if and only if
+   * there is at least one rule with the 'column' field set to it.
+   * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + com.google.cloud.dataplex.v1.DataQualityColumnResult getColumns(int index); + /** + * + * + *
+   * Output only. A list of results at the column level.
+   *
+   * A column will have a corresponding `DataQualityColumnResult` if and only if
+   * there is at least one rule with the 'column' field set to it.
+   * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + int getColumnsCount(); + /** + * + * + *
+   * Output only. A list of results at the column level.
+   *
+   * A column will have a corresponding `DataQualityColumnResult` if and only if
+   * there is at least one rule with the 'column' field set to it.
+   * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + java.util.List + getColumnsOrBuilderList(); + /** + * + * + *
+   * Output only. A list of results at the column level.
+   *
+   * A column will have a corresponding `DataQualityColumnResult` if and only if
+   * there is at least one rule with the 'column' field set to it.
+   * 
+ * + * + * repeated .google.cloud.dataplex.v1.DataQualityColumnResult columns = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + com.google.cloud.dataplex.v1.DataQualityColumnResultOrBuilder getColumnsOrBuilder(int index); + /** * * diff --git a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/proto/google/cloud/dataplex/v1/data_quality.proto b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/proto/google/cloud/dataplex/v1/data_quality.proto index bc2d57403c77..35c1f501ed15 100644 --- a/java-dataplex/proto-google-cloud-dataplex-v1/src/main/proto/google/cloud/dataplex/v1/data_quality.proto +++ b/java-dataplex/proto-google-cloud-dataplex-v1/src/main/proto/google/cloud/dataplex/v1/data_quality.proto @@ -107,12 +107,24 @@ message DataQualityResult { // Overall data quality result -- `true` if all rules passed. bool passed = 5; + // Output only. The overall data quality score. + // + // The score ranges between [0, 100] (up to two decimal points). + optional float score = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; + // A list of results at the dimension level. // // A dimension will have a corresponding `DataQualityDimensionResult` if and // only if there is at least one rule with the 'dimension' field set to it. repeated DataQualityDimensionResult dimensions = 2; + // Output only. A list of results at the column level. + // + // A column will have a corresponding `DataQualityColumnResult` if and only if + // there is at least one rule with the 'column' field set to it. + repeated DataQualityColumnResult columns = 10 + [(google.api.field_behavior) = OUTPUT_ONLY]; + // A list of all the rules in a job, and their results. repeated DataQualityRuleResult rules = 3; @@ -175,6 +187,13 @@ message DataQualityDimensionResult { // Whether the dimension passed or failed. bool passed = 3; + + // Output only. The dimension-level data quality score for this data scan job + // if and only if the 'dimension' field is set. + // + // The score ranges between [0, 100] (up to two decimal + // points). + optional float score = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; } // A dimension captures data quality intent about a defined subset of the rules @@ -369,3 +388,17 @@ message DataQualityRule { // * The maximum length is 1,024 characters. string description = 505 [(google.api.field_behavior) = OPTIONAL]; } + +// DataQualityColumnResult provides a more detailed, per-column view of +// the results. +message DataQualityColumnResult { + // Output only. The column specified in the DataQualityRule. + string column = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The column-level data quality score for this data scan job if + // and only if the 'column' field is set. + // + // The score ranges between between [0, 100] (up to two decimal + // points). + optional float score = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; +}