Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AggregationDataStore: Static Attribute Aggregation #818

Closed
aklish opened this issue May 21, 2019 · 3 comments
Closed

AggregationDataStore: Static Attribute Aggregation #818

aklish opened this issue May 21, 2019 · 3 comments
Assignees
Milestone

Comments

@aklish
Copy link
Member

aklish commented May 21, 2019

The AggregationDataStore needs a schema for each entity that:

  • Specifies that an attribute is a metric
  • Specifies that an attribute or relationship is a dimension
  • Specifies that an attribute is a Data/Time column and supports grain.
  • Specifies that an Attribute is a friendlyName or human displayable column for that dimension.
  • Specifies whether a dimension has small, medium, or large cardinality.

Expected Behavior

New AggregationDataStore annotations should be created:

  1. MetricAggregation
  2. Cardinality
  3. ComputedMetric
  4. FriendlyName

Examples

@MetricAggregation(default = Sum.class, aggregations = {Max.class, Median.class})
@ComputedMetric(expression = '(fieldA * fieldB) / 100')
@Cardinality(size = MEDIUM)
@FriendlyName

Current Behavior

N/A

Possible Solution

Elide calls populateEntityDictionary on each data store.

The AggregationDataStore should only bind entities that have at least one MetricAggregation annotation. For each entity bound, it should use the EntityDictionary to lookup other data store specific annotations and construct a schema object for that entity. The schema will be used as foundational metadata for the store to perform its functions.

@QubitPi
Copy link
Contributor

QubitPi commented May 23, 2019

@aklish Is @Cardinality is same thing as the cardinality in JPQL database? Do we simply trust user who will set whatever value it will be for size?

@aklish
Copy link
Member Author

aklish commented May 23, 2019

@Cardinality is a new annotation that will have a value of SMALL, MEDIUM, or LARGE. We trust the developer to set it. The values should be an enum. Also, let's rename @ComputedMetric to @MetricComputation.

@QubitPi
Copy link
Contributor

QubitPi commented May 23, 2019

Ok. Yeah enum is my choice, too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants