fix: updated DI cost analysis aggregated report (#13498)

This commit is contained in:
Teddy 2023-10-10 07:04:40 +02:00 committed by GitHub
parent d3da2d1b9f
commit eefce68015
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 118 additions and 122 deletions

View File

@ -20,7 +20,7 @@
{"id":"b7f4f28c-df63-4060-9e18-89ed33d3508d","timestamp":1696232067205,"reportDataType":"AggregatedCostAnalysisReportData","data":{"unusedDataAssets":{"count":{"threeDays":14,"sevenDays":11,"fourteenDays":7,"thirtyDays":3,"sixtyDays":1},"size":{"threeDays":8574,"sevenDays":8103,"fourteenDays":451,"thirtyDays":2456,"sixtyDays":4537},"totalSize":8574,"totalCount":14},"frequentlyUsedDataAssets":{"count":{"threeDays":1,"sevenDays":4,"fourteenDays":8,"thirtyDays":12,"sixtyDays":14},"size":{"threeDays":30844,"sevenDays":38723,"fourteenDays":3246,"thirtyDays":7824,"sixtyDays":6758},"totalSize":30844,"totalCount":1},"totalCount":39418,"totalSize":15,"serviceName":"sample_data","serviceType":"BigQuery","entityType":"Table","serviceOwner":null},"entityType":"aggregatedCostAnalysisReportData"},
{"id":"b7f4f28c-df63-4060-9e18-89ed33d3508d","timestamp":1696232067205,"reportDataType":"AggregatedCostAnalysisReportData","data":{"unusedDataAssets":{"count":{"threeDays":18,"sevenDays":8,"fourteenDays":11,"thirtyDays":3,"sixtyDays":10},"size":{"threeDays":32423,"sevenDays":4543,"fourteenDays":3414,"thirtyDays":4532,"sixtyDays":34435},"totalSize":32423,"totalCount":18},"frequentlyUsedDataAssets":{"count":{"threeDays":2,"sevenDays":5,"fourteenDays":9,"thirtyDays":13,"sixtyDays":15},"size":{"threeDays":3341,"sevenDays":795,"fourteenDays":3492,"thirtyDays":1233,"sixtyDays":5647},"totalSize":3341,"totalCount":2},"totalSize":35764,"totalCount":20,"serviceName":"sample_data","serviceType":"Snowflake","entityType":"Table","serviceOwner":null},"entityType":"aggregatedCostAnalysisReportData"},
{"id":"b7f4f28c-df63-4060-9e18-89ed33d3508d","timestamp":1696232067205,"reportDataType":"AggregatedCostAnalysisReportData","data":{"unusedDataAssets":{"count":{"threeDays":20,"sevenDays":15,"fourteenDays":10,"thirtyDays":5,"sixtyDays":2},"size":{"threeDays":12000,"sevenDays":11000,"fourteenDays":700,"thirtyDays":3500,"sixtyDays":1800},"totalSize":12000,"totalCount":20},"frequentlyUsedDataAssets":{"count":{"threeDays":2,"sevenDays":8,"fourteenDays":15,"thirtyDays":20,"sixtyDays":25},"size":{"threeDays":60000,"sevenDays":75000,"fourteenDays":6000,"thirtyDays":12000,"sixtyDays":10000},"totalSize":60000,"totalCount":2},"totalSize":72000,"totalCount":12,"serviceName":"sample_data","serviceType":"AzureSQL","entityType":"Table","serviceOwner":null},"entityType":"aggregatedCostAnalysisReportData"},
{"id":"b7f4f28c-df63-4060-9e18-89ed33d3508d","timestamp":1696232067205,"reportDataType":"AggregatedCostAnalysisReportData","data":{"unusedDataAssets":{"count":{"threeDays":18,"sevenDays":13,"fourteenDays":9,"thirtyDays":4,"sixtyDays":2.5},"size":{"threeDays":10000,"sevenDays":9500,"fourteenDays":600,"thirtyDays":3100,"sixtyDays":2000},"totalSize":10000,"totalCount":18},"frequentlyUsedDataAssets":{"count":{"threeDays":3,"sevenDays":7,"fourteenDays":12,"thirtyDays":15,"sixtyDays":20},"size":{"threeDays":55000,"sevenDays":68000,"fourteenDays":5500,"thirtyDays":11000,"sixtyDays":9000},"totalSize":55000,"totalCount":3},"totalSize":65000,"totalCount":21,"serviceName":"sample_data","serviceType":"Redshift","entityType":"Table","serviceOwner":null},"entityType":"aggregatedCostAnalysisReportData"}
{"id":"b7f4f28c-df63-4060-9e18-89ed33d3508d","timestamp":1696232067205,"reportDataType":"AggregatedCostAnalysisReportData","data":{"unusedDataAssets":{"count":{"threeDays":18,"sevenDays":13,"fourteenDays":9,"thirtyDays":4,"sixtyDays":2},"size":{"threeDays":10000,"sevenDays":9500,"fourteenDays":600,"thirtyDays":3100,"sixtyDays":2000},"totalSize":10000,"totalCount":18},"frequentlyUsedDataAssets":{"count":{"threeDays":3,"sevenDays":7,"fourteenDays":12,"thirtyDays":15,"sixtyDays":20},"size":{"threeDays":55000,"sevenDays":68000,"fourteenDays":5500,"thirtyDays":11000,"sixtyDays":9000},"totalSize":55000,"totalCount":3},"totalSize":65000,"totalCount":21,"serviceName":"sample_data","serviceType":"Redshift","entityType":"Table","serviceOwner":null},"entityType":"aggregatedCostAnalysisReportData"}
],
"RawCostAnalysisReportData": [
{"id":"e8feffaa-3277-461c-9261-b967d2aee2dd","timestamp":1696232067205,"reportDataType":"RawCostAnalysisReportData","data":{"entity":{"id":"34c63f1b-36f8-43ab-9420-aa1fc550653a","type":"table","name":null,"fullyQualifiedName":"sample_data.ecommerce_db.shopify.fact_session","description":"This fact table contains information about the visitors to your online store. This table has one row per session, where one session can contain many page views. If you use Urchin Traffic Module (UTM) parameters in marketing campaigns, then you can use this table to track how many customers they direct to your store.","displayName":null,"deleted":null,"href":"http://openmetadata-server:8585/api/v1/tables/34c63f1b-36f8-43ab-9420-aa1fc550653a"},"lifeCycle":{"created":{"timestamp":1695022318000,"accessedBy":null,"accessedByAProcess":"Alice"},"updated":{"timestamp":1695195118000,"accessedBy":null,"accessedByAProcess":"Bob"},"accessed":{"timestamp":1695454318000,"accessedBy":null,"accessedByAProcess":"Charlie"}},"sizeInByte":16890.0},"entityType":"rawCostAnalysisReportData"},

View File

@ -3,7 +3,7 @@ package org.openmetadata.service.dataInsight;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import org.openmetadata.schema.analytics.DataAssetValues;
import org.openmetadata.schema.dataInsight.type.AggregatedUnusedAssetsCount;
public abstract class AggregatedUnusedAssetsCountAggregator<A, H, B, S> implements DataInsightAggregatorInterface {
@ -20,26 +20,34 @@ public abstract class AggregatedUnusedAssetsCountAggregator<A, H, B, S> implemen
for (B bucket : getBuckets(histogramBucket)) {
String dateTimeString = getKeyAsString(bucket);
Long timestamp = convertDatTimeStringToTimestamp(dateTimeString);
S threeDays = getAggregations(bucket, "threeDays");
S sevenDays = getAggregations(bucket, "sevenDays");
S fourteenDays = getAggregations(bucket, "fourteenDays");
S thirtyDays = getAggregations(bucket, "thirtyDays");
S sixtyDays = getAggregations(bucket, "sixtyDays");
S totalUnused = getAggregations(bucket, "totalUnused");
S totalUsed = getAggregations(bucket, "totalUsed");
Double used = Objects.requireNonNullElse(getValue(totalUsed), 0.0);
Double unused = Objects.requireNonNullElse(getValue(totalUnused), 0.0);
Double total = used + unused;
S unusedThreeDays = getAggregations(bucket, "unusedDataAssetsThreeDays");
S unusedSevenDays = getAggregations(bucket, "unusedDataAssetsSevenDays");
S unusedFourteenDays = getAggregations(bucket, "unusedDataAssetsFourteenDays");
S unusedThirtyDays = getAggregations(bucket, "unusedDataAssetsThirtyDays");
S unusedSixtyDays = getAggregations(bucket, "unusedDataAssetsSixtyDays");
S frequentlyUsedThreeDays = getAggregations(bucket, "frequentlyUsedDataAssetsThreeDays");
S frequentlyUsedSevenDays = getAggregations(bucket, "frequentlyUsedDataAssetsSevenDays");
S frequentlyUsedFourteenDays = getAggregations(bucket, "frequentlyUsedDataAssetsFourteenDays");
S frequentlyUsedThirtyDays = getAggregations(bucket, "frequentlyUsedDataAssetsThirtyDays");
S frequentlyUsedSixtyDays = getAggregations(bucket, "frequentlyUsedDataAssetsSixtyDays");
data.add(
new AggregatedUnusedAssetsCount()
.withTimestamp(timestamp)
.withThreeDays(getValue(threeDays))
.withSevenDays(getValue(sevenDays))
.withFourteenDays(getValue(fourteenDays))
.withThirtyDays(getValue(thirtyDays))
.withSixtyDays(getValue(sixtyDays))
.withTotal(total));
.withUnusedDataAssets(
new DataAssetValues()
.withThreeDays(getValue(unusedThreeDays))
.withSevenDays(getValue(unusedSevenDays))
.withFourteenDays(getValue(unusedFourteenDays))
.withThirtyDays(getValue(unusedThirtyDays))
.withSixtyDays(getValue(unusedSixtyDays)))
.withFrequentlyUsedDataAssets(
new DataAssetValues()
.withThreeDays(getValue(frequentlyUsedThreeDays))
.withSevenDays(getValue(frequentlyUsedSevenDays))
.withFourteenDays(getValue(frequentlyUsedFourteenDays))
.withThirtyDays(getValue(frequentlyUsedThirtyDays))
.withSixtyDays(getValue(frequentlyUsedSixtyDays))));
}
return data;
}

View File

@ -3,7 +3,7 @@ package org.openmetadata.service.dataInsight;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import org.openmetadata.schema.analytics.DataAssetValues;
import org.openmetadata.schema.dataInsight.type.AggregatedUnusedAssetsSize;
public abstract class AggregatedUnusedAssetsSizeAggregator<A, H, B, S> implements DataInsightAggregatorInterface {
@ -20,26 +20,34 @@ public abstract class AggregatedUnusedAssetsSizeAggregator<A, H, B, S> implement
for (B bucket : getBuckets(histogramBucket)) {
String dateTimeString = getKeyAsString(bucket);
Long timestamp = convertDatTimeStringToTimestamp(dateTimeString);
S threeDays = getAggregations(bucket, "threeDays");
S sevenDays = getAggregations(bucket, "sevenDays");
S fourteenDays = getAggregations(bucket, "fourteenDays");
S thirtyDays = getAggregations(bucket, "thirtyDays");
S sixtyDays = getAggregations(bucket, "sixtyDays");
S totalUnused = getAggregations(bucket, "totalUnused");
S totalUsed = getAggregations(bucket, "totalUsed");
Double used = Objects.requireNonNullElse(getValue(totalUsed), 0.0);
Double unused = Objects.requireNonNullElse(getValue(totalUnused), 0.0);
Double total = unused + used;
S unusedThreeDays = getAggregations(bucket, "unusedDataAssetsThreeDays");
S unusedSevenDays = getAggregations(bucket, "unusedDataAssetsSevenDays");
S unusedFourteenDays = getAggregations(bucket, "unusedDataAssetsFourteenDays");
S unusedThirtyDays = getAggregations(bucket, "unusedDataAssetsThirtyDays");
S unusedSixtyDays = getAggregations(bucket, "unusedDataAssetsSixtyDays");
S frequentlyUsedThreeDays = getAggregations(bucket, "frequentlyUsedDataAssetsThreeDays");
S frequentlyUsedSevenDays = getAggregations(bucket, "frequentlyUsedDataAssetsSevenDays");
S frequentlyUsedFourteenDays = getAggregations(bucket, "frequentlyUsedDataAssetsFourteenDays");
S frequentlyUsedThirtyDays = getAggregations(bucket, "frequentlyUsedDataAssetsThirtyDays");
S frequentlyUsedSixtyDays = getAggregations(bucket, "frequentlyUsedDataAssetsSixtyDays");
data.add(
new AggregatedUnusedAssetsSize()
.withTimestamp(timestamp)
.withThreeDays(getValue(threeDays))
.withSevenDays(getValue(sevenDays))
.withFourteenDays(getValue(fourteenDays))
.withThirtyDays(getValue(thirtyDays))
.withSixtyDays(getValue(sixtyDays))
.withTotal(total));
.withUnusedDataAssets(
new DataAssetValues()
.withThreeDays(getValue(unusedThreeDays))
.withSevenDays(getValue(unusedSevenDays))
.withFourteenDays(getValue(unusedFourteenDays))
.withThirtyDays(getValue(unusedThirtyDays))
.withSixtyDays(getValue(unusedSixtyDays)))
.withFrequentlyUsedDataAssets(
new DataAssetValues()
.withThreeDays(getValue(frequentlyUsedThreeDays))
.withSevenDays(getValue(frequentlyUsedSevenDays))
.withFourteenDays(getValue(frequentlyUsedFourteenDays))
.withThirtyDays(getValue(frequentlyUsedThirtyDays))
.withSixtyDays(getValue(frequentlyUsedSixtyDays))));
}
return data;
}

View File

@ -1308,32 +1308,35 @@ public class ElasticSearchClient implements SearchClient {
case AGGREGATED_UNUSED_ASSETS_COUNT:
boolean isSize =
dataInsightChartName.equals(DataInsightChartResult.DataInsightChartType.AGGREGATED_UNUSED_ASSETS_SIZE);
String[] types = new String[] {"frequentlyUsedDataAssets", "unusedDataAssets"};
String fieldType = isSize ? "size" : "count";
String totalField = isSize ? "totalSize" : "totalCount";
SumAggregationBuilder threeDaysAgg =
AggregationBuilders.sum("threeDays").field(String.format("data.unusedDataAssets.%s.threeDays", fieldType));
SumAggregationBuilder sevenDaysAgg =
AggregationBuilders.sum("sevenDays").field(String.format("data.unusedDataAssets.%s.sevenDays", fieldType));
SumAggregationBuilder fourteenDaysAgg =
AggregationBuilders.sum("fourteenDays")
.field(String.format("data.unusedDataAssets.%s.fourteenDays", fieldType));
SumAggregationBuilder thirtyDaysAgg =
AggregationBuilders.sum("thirtyDays")
.field(String.format("data.unusedDataAssets.%s.thirtyDays", fieldType));
SumAggregationBuilder sixtyDaysAgg =
AggregationBuilders.sum("sixtyDays").field(String.format("data.unusedDataAssets.%s.sixtyDays", fieldType));
SumAggregationBuilder totalUnused =
AggregationBuilders.sum("totalUnused").field(String.format("data.unusedDataAssets.%s", totalField));
SumAggregationBuilder totalUsed =
AggregationBuilders.sum("totalUsed").field(String.format("data.frequentlyUsedDataAssets.%s", totalField));
return dateHistogramAggregationBuilder
.subAggregation(threeDaysAgg)
.subAggregation(sevenDaysAgg)
.subAggregation(fourteenDaysAgg)
.subAggregation(thirtyDaysAgg)
.subAggregation(sixtyDaysAgg)
.subAggregation(totalUnused)
.subAggregation(totalUsed);
for (String type : types) {
SumAggregationBuilder threeDaysAgg =
AggregationBuilders.sum(String.format("%sThreeDays", type))
.field(String.format("data.%s.%s.threeDays", type, fieldType));
SumAggregationBuilder sevenDaysAgg =
AggregationBuilders.sum(String.format("%sSevenDays", type))
.field(String.format("data.%s.%s.sevenDays", type, fieldType));
SumAggregationBuilder fourteenDaysAgg =
AggregationBuilders.sum(String.format("%sFourteenDays", type))
.field(String.format("data.%s.%s.fourteenDays", type, fieldType));
SumAggregationBuilder thirtyDaysAgg =
AggregationBuilders.sum(String.format("%sThirtyDays", type))
.field(String.format("data.%s.%s.thirtyDays", type, fieldType));
SumAggregationBuilder sixtyDaysAgg =
AggregationBuilders.sum(String.format("%sSixtyDays", type))
.field(String.format("data.%s.%s.sixtyDays", type, fieldType));
dateHistogramAggregationBuilder
.subAggregation(threeDaysAgg)
.subAggregation(sevenDaysAgg)
.subAggregation(fourteenDaysAgg)
.subAggregation(thirtyDaysAgg)
.subAggregation(sixtyDaysAgg);
}
return dateHistogramAggregationBuilder;
case AGGREGATED_USED_VS_UNUSED_ASSETS_SIZE:
case AGGREGATED_USED_VS_UNUSED_ASSETS_COUNT:
boolean isSizeReport =

View File

@ -2,17 +2,21 @@
"name": "AggregatedUnusedAssetsCount",
"fullyQualifiedName": "AggregatedUnusedAssetsCount",
"displayName": "Unused Assets Count",
"description": "Displays the total count of unused assets over time.",
"description": "Displays the total count of unused assets over time broken down by unused time period.",
"dataIndexType": "aggregated_cost_analysis_report_data_index",
"dimensions": [
{"name": "timestamp","chartDataType":"INT"}
],
"metrics": [
{"name": "threeDays", "displayName": "3 Days", "chartDataType": "FLOAT"},
{"name": "sevenDays", "displayName": "7 Days", "chartDataType": "FLOAT"},
{"name": "fourteenDays", "displayName": "14 Days", "chartDataType": "FLOAT"},
{"name": "thirtyDays", "displayName": "30 Days", "chartDataType": "FLOAT"},
{"name": "sixtyDays", "displayName": "60 Days", "chartDataType": "FLOAT"},
{"name": "totalAssetCount", "displayName": "Total Asset Counts", "chartDataType": "FLOAT"}
{"name": "frequentlyUsedDataAssets.threeDays", "displayName": "Last 3 Days (Used)", "chartDataType": "FLOAT"},
{"name": "frequentlyUsedDataAssets.sevenDays", "displayName": "Last 7 Days (Used)", "chartDataType": "FLOAT"},
{"name": "frequentlyUsedDataAssets.fourteenDays", "displayName": "Last 14 Days (Used)", "chartDataType": "FLOAT"},
{"name": "frequentlyUsedDataAssets.thirtyDays", "displayName": "last 30 Days (Used)", "chartDataType": "FLOAT"},
{"name": "frequentlyUsedDataAssets.sixtyDays", "displayName": "Last 60 Days (Used)", "chartDataType": "FLOAT"},
{"name": "unusedDataAssets.threeDays", "displayName": "Last 3 Days (Unused)", "chartDataType": "FLOAT"},
{"name": "unusedDataAssets.sevenDays", "displayName": "Last 7 Days (Unused)", "chartDataType": "FLOAT"},
{"name": "unusedDataAssets.fourteenDays", "displayName": "Last 14 Days (Unused)", "chartDataType": "FLOAT"},
{"name": "unusedDataAssets.thirtyDays", "displayName": "last 30 Days (Unused)", "chartDataType": "FLOAT"},
{"name": "unusedDataAssets.sixtyDays", "displayName": "Last 60 Days (Unused)", "chartDataType": "FLOAT"}
]
}

View File

@ -2,17 +2,21 @@
"name": "AggregatedUnusedAssetsSize",
"fullyQualifiedName": "AggregatedUnusedAssetsSize",
"displayName": "Unused Assets Size",
"description": "Displays the total size of unused assets over time.",
"description": "Displays the total size of unused assets over time broken down by unused time period.",
"dataIndexType": "aggregated_cost_analysis_report_data_index",
"dimensions": [
{"name": "timestamp","chartDataType":"INT"}
],
"metrics": [
{"name": "threeDays", "displayName": "3 Days", "chartDataType": "FLOAT"},
{"name": "sevenDays", "displayName": "7 Days", "chartDataType": "FLOAT"},
{"name": "fourteenDays", "displayName": "14 Days", "chartDataType": "FLOAT"},
{"name": "thirtyDays", "displayName": "30 Days", "chartDataType": "FLOAT"},
{"name": "sixtyDays", "displayName": "60 Days", "chartDataType": "FLOAT"},
{"name": "totalAssetSize", "displayName": "Total Asset Size", "chartDataType": "FLOAT"}
{"name": "frequentlyUsedDataAssets.threeDays", "displayName": "Last 3 Days (Used)", "chartDataType": "FLOAT"},
{"name": "frequentlyUsedDataAssets.sevenDays", "displayName": "Last 7 Days (Used)", "chartDataType": "FLOAT"},
{"name": "frequentlyUsedDataAssets.fourteenDays", "displayName": "Last 14 Days (Used)", "chartDataType": "FLOAT"},
{"name": "frequentlyUsedDataAssets.thirtyDays", "displayName": "last 30 Days (Used)", "chartDataType": "FLOAT"},
{"name": "frequentlyUsedDataAssets.sixtyDays", "displayName": "Last 60 Days (Used)", "chartDataType": "FLOAT"},
{"name": "unusedDataAssets.threeDays", "displayName": "Last 3 Days (Unused)", "chartDataType": "FLOAT"},
{"name": "unusedDataAssets.sevenDays", "displayName": "Last 7 Days (Unused)", "chartDataType": "FLOAT"},
{"name": "unusedDataAssets.fourteenDays", "displayName": "Last 14 Days (Unused)", "chartDataType": "FLOAT"},
{"name": "unusedDataAssets.thirtyDays", "displayName": "last 30 Days (Unused)", "chartDataType": "FLOAT"},
{"name": "unusedDataAssets.sixtyDays", "displayName": "Last 60 Days (Unused)", "chartDataType": "FLOAT"}
]
}

View File

@ -1,8 +1,8 @@
{
"name": "AggregatedUsedvsUnusedAssetsCount",
"fullyQualifiedName": "AggregatedUsedvsUnusedAssetsCount",
"displayName": "Used vs Unused Assets Count",
"description": "Displays the count of used vs unused assets over time.",
"displayName": "Used vs Unused Assets Count Percentage",
"description": "Displays the count of used vs unused assets over time in percentage.",
"dataIndexType": "aggregated_cost_analysis_report_data_index",
"dimensions": [
{"name": "timestamp","chartDataType":"INT"}

View File

@ -1,8 +1,8 @@
{
"name": "AggregatedUsedvsUnusedAssetsSize",
"fullyQualifiedName": "AggregatedUsedvsUnusedAssetsSize",
"displayName": "Used vs Unused Assets Size",
"description": "Displays the size of used vs unused assets over time.",
"displayName": "Used vs Unused Assets Size Percentage",
"description": "Displays the size of used vs unused assets over time in percentage.",
"dataIndexType": "aggregated_cost_analysis_report_data_index",
"dimensions": [
{"name": "timestamp","chartDataType":"INT"}

View File

@ -5,34 +5,19 @@
"description": "AggregatedUnusedAssetsCount data blob",
"type": "object",
"javaType": "org.openmetadata.schema.dataInsight.type.AggregatedUnusedAssetsCount",
"properties": {
"timestamp": {
"description": "timestamp",
"$ref": "../../type/basic.json#/definitions/timestamp"
},
"threeDays": {
"description": "Number of unused assets in the last 3 days",
"type": "number"
"frequentlyUsedDataAssets": {
"description": "Frequently used Data Assets",
"$ref": "../../analytics/reportDataType/aggregatedCostAnalysisReportData.json#/definitions/dataAssetValues"
},
"sevenDays": {
"description": "Number of unused assets in the last 7 days",
"type": "number"
},
"fourteenDays": {
"description": "Number of unused assets in the last 14 days",
"type": "number"
},
"thirtyDays": {
"description": "Number of unused assets in the last 30 days",
"type": "number"
},
"sixtyDays": {
"description": "Number of unused assets in the last 60 days",
"type": "number"
},
"total": {
"description": "Total number of unused assets",
"type": "number"
"unusedDataAssets": {
"description": "Unused Data Assets",
"$ref": "../../analytics/reportDataType/aggregatedCostAnalysisReportData.json#/definitions/dataAssetValues"
}
},
"additionalProperties": false

View File

@ -10,29 +10,13 @@
"description": "timestamp",
"$ref": "../../type/basic.json#/definitions/timestamp"
},
"threeDays": {
"description": "Size of unused assets in the last 3 days",
"type": "number"
"frequentlyUsedDataAssets": {
"description": "Frequently used Data Assets",
"$ref": "../../analytics/reportDataType/aggregatedCostAnalysisReportData.json#/definitions/dataAssetValues"
},
"sevenDays": {
"description": "Size of unused assets in the last 7 days",
"type": "number"
},
"fourteenDays": {
"description": "Size of unused assets in the last 14 days",
"type": "number"
},
"thirtyDays": {
"description": "Size of unused assets in the last 30 days",
"type": "number"
},
"sixtyDays": {
"description": "Size of unused assets in the last 60 days",
"type": "number"
},
"total": {
"description": "Total size of unused assets",
"type": "number"
"unusedDataAssets": {
"description": "Unused Data Assets",
"$ref": "../../analytics/reportDataType/aggregatedCostAnalysisReportData.json#/definitions/dataAssetValues"
}
},
"additionalProperties": false