package com.linkedin.thirdeye.datalayer.dto; import com.linkedin.thirdeye.api.TimeGranularity; import com.linkedin.thirdeye.datalayer.pojo.DatasetConfigBean; import java.util.concurrent.TimeUnit; public class DatasetConfigDTO extends DatasetConfigBean { private TimeGranularity bucketTimeGranularity; /** * Returns the granularity of a bucket (a data point) of this dataset. The granularity of a bucket, which may be * different from the granularity that is defined in dataset configuration, which actually defines the granularity of * the timestamp of each data point. This variable provides the actual granularity when the granularity defined in * the dataset config is different from the granularity of data point. This information is crucial for non-additive * dataset. * * @return the granularity of a bucket (a data point) of this dataset */ public TimeGranularity bucketTimeGranularity() { if (bucketTimeGranularity == null) { if (this.isAdditive()) { bucketTimeGranularity = new TimeGranularity(getTimeDuration(), getTimeUnit()); } else { int size = getNonAdditiveBucketSize() != null ? getNonAdditiveBucketSize() : getTimeDuration(); TimeUnit timeUnit = getNonAdditiveBucketUnit() != null ? getNonAdditiveBucketUnit() : getTimeUnit(); bucketTimeGranularity = new TimeGranularity(size, timeUnit); } } return bucketTimeGranularity; } }