mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 16:50:48 +00:00
Add NameQuantileBFloat16Weighted to GatherFunctionQuantileVisitor
This commit is contained in:
parent
431a4718ae
commit
eb1053d931
@ -14,18 +14,19 @@ namespace ErrorCodes
|
||||
/// Mapping from quantile functions for single value to plural
|
||||
static const std::unordered_map<String, String> quantile_fuse_name_mapping = {
|
||||
{NameQuantile::name, NameQuantiles::name},
|
||||
{NameQuantileBFloat16::name, NameQuantilesBFloat16::name},
|
||||
{NameQuantileBFloat16Weighted::name, NameQuantilesBFloat16Weighted::name},
|
||||
{NameQuantileDeterministic::name, NameQuantilesDeterministic::name},
|
||||
{NameQuantileExact::name, NameQuantilesExact::name},
|
||||
{NameQuantileExactLow::name, NameQuantilesExactLow::name},
|
||||
{NameQuantileExactHigh::name, NameQuantilesExactHigh::name},
|
||||
{NameQuantileExactExclusive::name, NameQuantilesExactExclusive::name},
|
||||
{NameQuantileExactHigh::name, NameQuantilesExactHigh::name},
|
||||
{NameQuantileExactInclusive::name, NameQuantilesExactInclusive::name},
|
||||
{NameQuantileExactLow::name, NameQuantilesExactLow::name},
|
||||
{NameQuantileExactWeighted::name, NameQuantilesExactWeighted::name},
|
||||
{NameQuantileTiming::name, NameQuantilesTiming::name},
|
||||
{NameQuantileTimingWeighted::name, NameQuantilesTimingWeighted::name},
|
||||
{NameQuantileTDigest::name, NameQuantilesTDigest::name},
|
||||
{NameQuantileTDigestWeighted::name, NameQuantilesTDigestWeighted::name},
|
||||
{NameQuantileBFloat16::name, NameQuantilesBFloat16::name}
|
||||
{NameQuantileTiming::name, NameQuantilesTiming::name},
|
||||
{NameQuantileTimingWeighted::name, NameQuantilesTimingWeighted::name},
|
||||
};
|
||||
|
||||
String GatherFunctionQuantileData::getFusedName(const String & func_name)
|
||||
@ -54,7 +55,8 @@ void GatherFunctionQuantileData::FuseQuantileAggregatesData::addFuncNode(ASTPtr
|
||||
bool need_two_args = func->name == NameQuantileDeterministic::name
|
||||
|| func->name == NameQuantileExactWeighted::name
|
||||
|| func->name == NameQuantileTimingWeighted::name
|
||||
|| func->name == NameQuantileTDigestWeighted::name;
|
||||
|| func->name == NameQuantileTDigestWeighted::name
|
||||
|| func->name == NameQuantileBFloat16Weighted::name;
|
||||
if (arguments.size() != (need_two_args ? 2 : 1))
|
||||
return;
|
||||
|
||||
|
@ -68,6 +68,13 @@ SELECT
|
||||
quantileBFloat16(0.4)(d + 1)
|
||||
FROM datetime
|
||||
2016-04-02 17:23:12 2016-04-02 17:23:12 2016-04-02 17:23:12
|
||||
quantileBFloat16Weighted:
|
||||
SELECT
|
||||
quantilesBFloat16Weighted(0.2, 0.3)(d, 1)[1],
|
||||
quantilesBFloat16Weighted(0.2, 0.3)(d, 1)[2],
|
||||
quantileBFloat16Weighted(0.2)(d, 2)
|
||||
FROM datetime
|
||||
2016-04-02 17:23:12 2016-04-02 17:23:12 2016-04-02 17:23:12
|
||||
SELECT
|
||||
quantiles(0.2, 0.3, 0.2)(d)[1] AS k,
|
||||
quantiles(0.2, 0.3, 0.2)(d)[2]
|
||||
|
@ -2,6 +2,8 @@ DROP TABLE IF EXISTS datetime;
|
||||
CREATE TABLE datetime (d DateTime('UTC')) ENGINE = Memory;
|
||||
INSERT INTO datetime(d) VALUES(toDateTime('2016-06-15 23:00:00', 'UTC'))
|
||||
|
||||
SET optimize_syntax_fuse_functions = true;
|
||||
|
||||
SELECT quantile(0.2)(d), quantile(0.3)(d) FROM datetime;
|
||||
SELECT quantileDeterministic(0.2)(d, 1), quantileDeterministic(0.5)(d, 1) FROM datetime;
|
||||
SELECT quantileExact(0.2)(d), quantileExact(0.5)(d) FROM datetime;
|
||||
@ -14,7 +16,6 @@ SELECT quantileBFloat16(0.2)(d), quantileBFloat16(0.3)(d), quantileBFloat16(0.4)
|
||||
|
||||
|
||||
SELECT '---------After fuse result-----------';
|
||||
SET optimize_syntax_fuse_functions = true;
|
||||
SELECT 'quantile:';
|
||||
EXPLAIN SYNTAX SELECT quantile(0.2)(d), quantile(0.3)(d) FROM datetime;
|
||||
SELECT quantile(0.2)(d), quantile(0.3)(d) FROM datetime;
|
||||
@ -51,6 +52,10 @@ SELECT 'quantileBFloat16:';
|
||||
EXPLAIN SYNTAX SELECT quantileBFloat16(0.2)(d), quantileBFloat16(0.3)(d), quantileBFloat16(0.4)(d + 1) FROM datetime;
|
||||
SELECT quantileBFloat16(0.2)(d), quantileBFloat16(0.3)(d), quantileBFloat16(0.4)(d + 1) FROM datetime;
|
||||
|
||||
SELECT 'quantileBFloat16Weighted:';
|
||||
EXPLAIN SYNTAX SELECT quantileBFloat16Weighted(0.2)(d, 1), quantileBFloat16Weighted(0.3)(d, 1), quantileBFloat16Weighted(0.2)(d, 2) FROM datetime;
|
||||
SELECT quantileBFloat16Weighted(0.2)(d, 1), quantileBFloat16Weighted(0.3)(d, 1), quantileBFloat16Weighted(0.2)(d, 2) FROM datetime;
|
||||
|
||||
EXPLAIN SYNTAX SELECT quantile(0.2)(d) as k, quantile(0.3)(d) FROM datetime order by quantile(0.2)(d);
|
||||
|
||||
SELECT b, quantile(0.5)(x) as a, quantile(0.9)(x) as y, quantile(0.95)(x) FROM (select number as x, number % 2 as b from numbers(10)) group by b;
|
||||
|
Loading…
Reference in New Issue
Block a user