mirror of
https://github.com/apache/superset.git
synced 2024-09-17 11:09:47 -04:00
Support more druid postaggregations. (#2235)
This commit is contained in:
parent
ede4dffcb7
commit
3018356588
@ -37,7 +37,9 @@ from flask_babel import lazy_gettext as _
|
|||||||
from pydruid.client import PyDruid
|
from pydruid.client import PyDruid
|
||||||
from pydruid.utils.aggregators import count
|
from pydruid.utils.aggregators import count
|
||||||
from pydruid.utils.filters import Dimension, Filter
|
from pydruid.utils.filters import Dimension, Filter
|
||||||
from pydruid.utils.postaggregator import Postaggregator
|
from pydruid.utils.postaggregator import (
|
||||||
|
Postaggregator, Quantile, Quantiles, Field, Const, HyperUniqueCardinality,
|
||||||
|
)
|
||||||
from pydruid.utils.having import Aggregation
|
from pydruid.utils.having import Aggregation
|
||||||
from six import string_types
|
from six import string_types
|
||||||
|
|
||||||
@ -2354,9 +2356,30 @@ class DruidDatasource(Model, AuditMixinNullable, Datasource, ImportMixin):
|
|||||||
all_metrics += conf.get('fieldNames', [])
|
all_metrics += conf.get('fieldNames', [])
|
||||||
if conf.get('type') == 'javascript':
|
if conf.get('type') == 'javascript':
|
||||||
post_aggs[metric_name] = JavascriptPostAggregator(
|
post_aggs[metric_name] = JavascriptPostAggregator(
|
||||||
name=conf.get('name'),
|
name=conf.get('name', ''),
|
||||||
field_names=conf.get('fieldNames'),
|
field_names=conf.get('fieldNames', []),
|
||||||
function=conf.get('function'))
|
function=conf.get('function', ''))
|
||||||
|
elif conf.get('type') == 'quantile':
|
||||||
|
post_aggs[metric_name] = Quantile(
|
||||||
|
conf.get('name', ''),
|
||||||
|
conf.get('probability', ''),
|
||||||
|
)
|
||||||
|
elif conf.get('type') == 'quantiles':
|
||||||
|
post_aggs[metric_name] = Quantiles(
|
||||||
|
conf.get('name', ''),
|
||||||
|
conf.get('probabilities', ''),
|
||||||
|
)
|
||||||
|
elif conf.get('type') == 'fieldAccess':
|
||||||
|
post_aggs[metric_name] = Field(conf.get('name'), '')
|
||||||
|
elif conf.get('type') == 'constant':
|
||||||
|
post_aggs[metric_name] = Const(
|
||||||
|
conf.get('value'),
|
||||||
|
output_name=conf.get('name', '')
|
||||||
|
)
|
||||||
|
elif conf.get('type') == 'hyperUniqueCardinality':
|
||||||
|
post_aggs[metric_name] = HyperUniqueCardinality(
|
||||||
|
conf.get('name'), ''
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
post_aggs[metric_name] = Postaggregator(
|
post_aggs[metric_name] = Postaggregator(
|
||||||
conf.get('fn', "/"),
|
conf.get('fn', "/"),
|
||||||
|
Loading…
Reference in New Issue
Block a user