-
Notifications
You must be signed in to change notification settings - Fork 122
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add MetadataCacheStatistics to Job QueryStatistics (#3133)
* Feat: Add MetadataCacheStatistics to Job QueryStatistics * Add integration test * Add integration test * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * Update documentation. * 🦉 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 <gcf-owl-bot[bot]@users.noreply.github.com>
- Loading branch information
1 parent
e1947c1
commit f3f387b
Showing
8 changed files
with
403 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
76 changes: 76 additions & 0 deletions
76
google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/MetadataCacheStats.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
/* | ||
* Copyright 2024 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 | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package com.google.cloud.bigquery; | ||
|
||
import com.google.api.services.bigquery.model.MetadataCacheStatistics; | ||
import com.google.auto.value.AutoValue; | ||
import java.io.Serializable; | ||
import java.util.List; | ||
import java.util.stream.Collectors; | ||
import javax.annotation.Nullable; | ||
|
||
/** | ||
* Represents statistics for metadata caching in BigLake tables. | ||
* | ||
* @see <a href="https://cloud.google.com/bigquery/docs/biglake-intro">BigLake Tables</a> | ||
*/ | ||
@AutoValue | ||
public abstract class MetadataCacheStats implements Serializable { | ||
|
||
private static final long serialVersionUID = 1L; | ||
|
||
@AutoValue.Builder | ||
public abstract static class Builder { | ||
/** Sets the free form human-readable reason metadata caching was unused for the job. */ | ||
public abstract MetadataCacheStats.Builder setTableMetadataCacheUsage( | ||
List<TableMetadataCacheUsage> tableMetadataCacheUsage); | ||
|
||
/** Creates a @code MetadataCacheStats} object. */ | ||
public abstract MetadataCacheStats build(); | ||
} | ||
|
||
public abstract Builder toBuilder(); | ||
|
||
public static Builder newBuilder() { | ||
return new AutoValue_MetadataCacheStats.Builder(); | ||
} | ||
|
||
@Nullable | ||
public abstract List<TableMetadataCacheUsage> getTableMetadataCacheUsage(); | ||
|
||
MetadataCacheStatistics toPb() { | ||
MetadataCacheStatistics metadataCacheStatistics = new MetadataCacheStatistics(); | ||
if (getTableMetadataCacheUsage() != null) { | ||
metadataCacheStatistics.setTableMetadataCacheUsage( | ||
getTableMetadataCacheUsage().stream() | ||
.map(TableMetadataCacheUsage::toPb) | ||
.collect(Collectors.toList())); | ||
} | ||
return metadataCacheStatistics; | ||
} | ||
|
||
static MetadataCacheStats fromPb(MetadataCacheStatistics metadataCacheStatistics) { | ||
Builder builder = newBuilder(); | ||
if (metadataCacheStatistics.getTableMetadataCacheUsage() != null) { | ||
builder.setTableMetadataCacheUsage( | ||
metadataCacheStatistics.getTableMetadataCacheUsage().stream() | ||
.map(TableMetadataCacheUsage::fromPb) | ||
.collect(Collectors.toList())); | ||
} | ||
return builder.build(); | ||
} | ||
} |
118 changes: 118 additions & 0 deletions
118
google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/TableMetadataCacheUsage.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
/* | ||
* Copyright 2024 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 | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package com.google.cloud.bigquery; | ||
|
||
import com.google.auto.value.AutoValue; | ||
import java.io.Serializable; | ||
import javax.annotation.Nullable; | ||
|
||
/** Represents Table level detail on the usage of metadata caching. */ | ||
@AutoValue | ||
public abstract class TableMetadataCacheUsage implements Serializable { | ||
|
||
private static final long serialVersionUID = 1L; | ||
|
||
/** Reason for not using metadata caching for the table. */ | ||
public enum UnusedReason { | ||
/** Unused reasons not specified. */ | ||
UNUSED_REASON_UNSPECIFIED, | ||
|
||
/** Metadata cache was outside the table's maxStaleness. */ | ||
EXCEEDED_MAX_STALENESS, | ||
|
||
/** | ||
* Metadata caching feature is not enabled. Update BigLake tables to enable the metadata | ||
* caching. | ||
*/ | ||
METADATA_CACHING_NOT_ENABLED, | ||
|
||
/** Other unknown reason. */ | ||
OTHER_REASON | ||
} | ||
|
||
@AutoValue.Builder | ||
public abstract static class Builder { | ||
/** Sets the free form human-readable reason metadata caching was unused for the job. */ | ||
public abstract TableMetadataCacheUsage.Builder setExplanation(String explanation); | ||
|
||
/** Sets the metadata caching eligible table referenced in the query. */ | ||
public abstract TableMetadataCacheUsage.Builder setTableReference(TableId tableReference); | ||
|
||
/** Sets the table type. */ | ||
public abstract TableMetadataCacheUsage.Builder setTableType(String tableType); | ||
|
||
/** Sets reason for not using metadata caching for the table. */ | ||
public abstract TableMetadataCacheUsage.Builder setUnusedReason(UnusedReason unusedReason); | ||
|
||
/** Creates a @code TableMetadataCacheUsage} object. */ | ||
public abstract TableMetadataCacheUsage build(); | ||
} | ||
|
||
public abstract Builder toBuilder(); | ||
|
||
public static Builder newBuilder() { | ||
return new AutoValue_TableMetadataCacheUsage.Builder(); | ||
} | ||
|
||
@Nullable | ||
public abstract String getExplanation(); | ||
|
||
@Nullable | ||
public abstract TableId getTableReference(); | ||
|
||
@Nullable | ||
public abstract String getTableType(); | ||
|
||
@Nullable | ||
public abstract UnusedReason getUnusedReason(); | ||
|
||
com.google.api.services.bigquery.model.TableMetadataCacheUsage toPb() { | ||
com.google.api.services.bigquery.model.TableMetadataCacheUsage tableMetadataCacheUsage = | ||
new com.google.api.services.bigquery.model.TableMetadataCacheUsage(); | ||
if (getExplanation() != null) { | ||
tableMetadataCacheUsage.setExplanation(getExplanation()); | ||
} | ||
if (getTableReference() != null) { | ||
tableMetadataCacheUsage.setTableReference(getTableReference().toPb()); | ||
} | ||
if (getTableType() != null) { | ||
tableMetadataCacheUsage.setTableType(getTableType()); | ||
} | ||
if (getUnusedReason() != null) { | ||
tableMetadataCacheUsage.setUnusedReason(getUnusedReason().toString()); | ||
} | ||
return tableMetadataCacheUsage; | ||
} | ||
|
||
static TableMetadataCacheUsage fromPb( | ||
com.google.api.services.bigquery.model.TableMetadataCacheUsage tableMetadataCacheUsage) { | ||
Builder builder = newBuilder(); | ||
if (tableMetadataCacheUsage.getExplanation() != null) { | ||
builder.setExplanation(tableMetadataCacheUsage.getExplanation()); | ||
} | ||
if (tableMetadataCacheUsage.getTableReference() != null) { | ||
builder.setTableReference(TableId.fromPb(tableMetadataCacheUsage.getTableReference())); | ||
} | ||
if (tableMetadataCacheUsage.getTableType() != null) { | ||
builder.setTableType(tableMetadataCacheUsage.getTableType()); | ||
} | ||
if (tableMetadataCacheUsage.getUnusedReason() != null) { | ||
builder.setUnusedReason(UnusedReason.valueOf(tableMetadataCacheUsage.getUnusedReason())); | ||
} | ||
return builder.build(); | ||
} | ||
} |
60 changes: 60 additions & 0 deletions
60
google-cloud-bigquery/src/test/java/MetadataCacheStatsTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
/* | ||
* Copyright 2024 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 | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package com.google.cloud.bigquery; | ||
|
||
import static org.junit.Assert.assertEquals; | ||
|
||
import com.google.api.services.bigquery.model.MetadataCacheStatistics; | ||
import com.google.common.collect.ImmutableList; | ||
import com.google.common.truth.Truth; | ||
import java.util.List; | ||
import java.util.stream.Collectors; | ||
import org.junit.Test; | ||
|
||
public class MetadataCacheStatsTest { | ||
private static List<com.google.api.services.bigquery.model.TableMetadataCacheUsage> | ||
TABLE_METADATA_CACHE_USAGE_PB_LIST = | ||
ImmutableList.of( | ||
new com.google.api.services.bigquery.model.TableMetadataCacheUsage() | ||
.setExplanation("test explanation")); | ||
|
||
private static final MetadataCacheStats METADATA_CACHE_STATS = | ||
MetadataCacheStats.newBuilder() | ||
.setTableMetadataCacheUsage( | ||
TABLE_METADATA_CACHE_USAGE_PB_LIST.stream() | ||
.map(TableMetadataCacheUsage::fromPb) | ||
.collect(Collectors.toList())) | ||
.build(); | ||
|
||
private static final MetadataCacheStatistics METADATA_CACHE_STATISTICS_PB = | ||
new MetadataCacheStatistics().setTableMetadataCacheUsage(TABLE_METADATA_CACHE_USAGE_PB_LIST); | ||
|
||
@Test | ||
public void testToPbAndFromPb() { | ||
assertEquals(METADATA_CACHE_STATISTICS_PB, METADATA_CACHE_STATS.toPb()); | ||
compareMetadataCacheStats( | ||
METADATA_CACHE_STATS, MetadataCacheStats.fromPb(METADATA_CACHE_STATISTICS_PB)); | ||
} | ||
|
||
private void compareMetadataCacheStats(MetadataCacheStats expected, MetadataCacheStats value) { | ||
assertEquals(expected, value); | ||
assertEquals(expected.hashCode(), value.hashCode()); | ||
assertEquals(expected.toString(), value.toString()); | ||
Truth.assertThat( | ||
expected.getTableMetadataCacheUsage().containsAll(value.getTableMetadataCacheUsage())); | ||
} | ||
} |
Oops, something went wrong.