mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 07:31:57 +00:00
Done
This commit is contained in:
parent
ea2a647724
commit
4fbd332bf1
@ -20,7 +20,7 @@ Subquery is another `SELECT` query that may be specified in parenthesis inside `
|
|||||||
|
|
||||||
When `FINAL` is specified, ClickHouse fully merges the data before returning the result and thus performs all data transformations that happen during merges for the given table engine.
|
When `FINAL` is specified, ClickHouse fully merges the data before returning the result and thus performs all data transformations that happen during merges for the given table engine.
|
||||||
|
|
||||||
It is applicable when selecting data from tables that use the [MergeTree](../../../engines/table-engines/mergetree-family/mergetree.md)-engine family (except `GraphiteMergeTree`). Also supported for:
|
It is applicable when selecting data from tables that use the [MergeTree](../../../engines/table-engines/mergetree-family/mergetree.md)-engine family. Also supported for:
|
||||||
|
|
||||||
- [Replicated](../../../engines/table-engines/mergetree-family/replication.md) versions of `MergeTree` engines.
|
- [Replicated](../../../engines/table-engines/mergetree-family/replication.md) versions of `MergeTree` engines.
|
||||||
- [View](../../../engines/table-engines/special/view.md), [Buffer](../../../engines/table-engines/special/buffer.md), [Distributed](../../../engines/table-engines/special/distributed.md), and [MaterializedView](../../../engines/table-engines/special/materializedview.md) engines that operate over other engines, provided they were created over `MergeTree`-engine tables.
|
- [View](../../../engines/table-engines/special/view.md), [Buffer](../../../engines/table-engines/special/buffer.md), [Distributed](../../../engines/table-engines/special/distributed.md), and [MaterializedView](../../../engines/table-engines/special/materializedview.md) engines that operate over other engines, provided they were created over `MergeTree`-engine tables.
|
||||||
|
@ -20,7 +20,7 @@ toc_title: FROM
|
|||||||
|
|
||||||
Если в запросе используется модификатор `FINAL`, то ClickHouse полностью мёржит данные перед выдачей результата, таким образом выполняя все преобразования данных, которые производятся движком таблиц при мёржах.
|
Если в запросе используется модификатор `FINAL`, то ClickHouse полностью мёржит данные перед выдачей результата, таким образом выполняя все преобразования данных, которые производятся движком таблиц при мёржах.
|
||||||
|
|
||||||
Он применим при выборе данных из таблиц, использующих [MergeTree](../../../engines/table-engines/mergetree-family/mergetree.md)- семейство движков (кроме `GraphiteMergeTree`). Также поддерживается для:
|
Он применим при выборе данных из таблиц, использующих [MergeTree](../../../engines/table-engines/mergetree-family/mergetree.md)- семейство движков. Также поддерживается для:
|
||||||
|
|
||||||
- [Replicated](../../../engines/table-engines/mergetree-family/replication.md) варианты исполнения `MergeTree` движков.
|
- [Replicated](../../../engines/table-engines/mergetree-family/replication.md) варианты исполнения `MergeTree` движков.
|
||||||
- [View](../../../engines/table-engines/special/view.md), [Buffer](../../../engines/table-engines/special/buffer.md), [Distributed](../../../engines/table-engines/special/distributed.md), и [MaterializedView](../../../engines/table-engines/special/materializedview.md), которые работают поверх других движков, если они созданы для таблиц с движками семейства `MergeTree`.
|
- [View](../../../engines/table-engines/special/view.md), [Buffer](../../../engines/table-engines/special/buffer.md), [Distributed](../../../engines/table-engines/special/distributed.md), и [MaterializedView](../../../engines/table-engines/special/materializedview.md), которые работают поверх других движков, если они созданы для таблиц с движками семейства `MergeTree`.
|
||||||
|
@ -20,7 +20,7 @@ toc_title: FROM
|
|||||||
|
|
||||||
当 `FINAL` 被指定,ClickHouse会在返回结果之前完全合并数据,从而执行给定表引擎合并期间发生的所有数据转换。
|
当 `FINAL` 被指定,ClickHouse会在返回结果之前完全合并数据,从而执行给定表引擎合并期间发生的所有数据转换。
|
||||||
|
|
||||||
它适用于从使用 [MergeTree](../../../engines/table-engines/mergetree-family/mergetree.md)-引擎族(除了 `GraphiteMergeTree`). 还支持:
|
它适用于从使用 [MergeTree](../../../engines/table-engines/mergetree-family/mergetree.md)-引擎族. 还支持:
|
||||||
|
|
||||||
- [Replicated](../../../engines/table-engines/mergetree-family/replication.md) 版本 `MergeTree` 引擎
|
- [Replicated](../../../engines/table-engines/mergetree-family/replication.md) 版本 `MergeTree` 引擎
|
||||||
- [View](../../../engines/table-engines/special/view.md), [Buffer](../../../engines/table-engines/special/buffer.md), [Distributed](../../../engines/table-engines/special/distributed.md),和 [MaterializedView](../../../engines/table-engines/special/materializedview.md) 在其他引擎上运行的引擎,只要是它们底层是 `MergeTree`-引擎表即可。
|
- [View](../../../engines/table-engines/special/view.md), [Buffer](../../../engines/table-engines/special/buffer.md), [Distributed](../../../engines/table-engines/special/distributed.md),和 [MaterializedView](../../../engines/table-engines/special/materializedview.md) 在其他引擎上运行的引擎,只要是它们底层是 `MergeTree`-引擎表即可。
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <Processors/Sources/NullSource.h>
|
#include <Processors/Sources/NullSource.h>
|
||||||
#include <Processors/Merges/AggregatingSortedTransform.h>
|
#include <Processors/Merges/AggregatingSortedTransform.h>
|
||||||
#include <Processors/Merges/CollapsingSortedTransform.h>
|
#include <Processors/Merges/CollapsingSortedTransform.h>
|
||||||
|
#include <Processors/Merges/GraphiteRollupSortedTransform.h>
|
||||||
#include <Processors/Merges/MergingSortedTransform.h>
|
#include <Processors/Merges/MergingSortedTransform.h>
|
||||||
#include <Processors/Merges/ReplacingSortedTransform.h>
|
#include <Processors/Merges/ReplacingSortedTransform.h>
|
||||||
#include <Processors/Merges/SummingSortedTransform.h>
|
#include <Processors/Merges/SummingSortedTransform.h>
|
||||||
@ -506,38 +507,39 @@ static void addMergingFinal(
|
|||||||
const auto & header = pipe.getHeader();
|
const auto & header = pipe.getHeader();
|
||||||
size_t num_outputs = pipe.numOutputPorts();
|
size_t num_outputs = pipe.numOutputPorts();
|
||||||
|
|
||||||
|
auto now = time(nullptr);
|
||||||
|
|
||||||
auto get_merging_processor = [&]() -> MergingTransformPtr
|
auto get_merging_processor = [&]() -> MergingTransformPtr
|
||||||
{
|
{
|
||||||
switch (merging_params.mode)
|
switch (merging_params.mode)
|
||||||
{
|
{
|
||||||
case MergeTreeData::MergingParams::Ordinary:
|
case MergeTreeData::MergingParams::Ordinary:
|
||||||
{
|
|
||||||
return std::make_shared<MergingSortedTransform>(header, num_outputs,
|
return std::make_shared<MergingSortedTransform>(header, num_outputs,
|
||||||
sort_description, max_block_size);
|
sort_description, max_block_size);
|
||||||
}
|
|
||||||
|
|
||||||
case MergeTreeData::MergingParams::Collapsing:
|
case MergeTreeData::MergingParams::Collapsing:
|
||||||
return std::make_shared<CollapsingSortedTransform>(header, num_outputs,
|
return std::make_shared<CollapsingSortedTransform>(header, num_outputs,
|
||||||
sort_description, merging_params.sign_column, true, max_block_size);
|
sort_description, merging_params.sign_column, true, max_block_size);
|
||||||
|
|
||||||
case MergeTreeData::MergingParams::Summing:
|
case MergeTreeData::MergingParams::Summing:
|
||||||
return std::make_shared<SummingSortedTransform>(header, num_outputs,
|
return std::make_shared<SummingSortedTransform>(header, num_outputs,
|
||||||
sort_description, merging_params.columns_to_sum, partition_key_columns, max_block_size);
|
sort_description, merging_params.columns_to_sum, partition_key_columns, max_block_size);
|
||||||
|
|
||||||
case MergeTreeData::MergingParams::Aggregating:
|
case MergeTreeData::MergingParams::Aggregating:
|
||||||
return std::make_shared<AggregatingSortedTransform>(header, num_outputs,
|
return std::make_shared<AggregatingSortedTransform>(header, num_outputs,
|
||||||
sort_description, max_block_size);
|
sort_description, max_block_size);
|
||||||
|
|
||||||
case MergeTreeData::MergingParams::Replacing:
|
case MergeTreeData::MergingParams::Replacing:
|
||||||
return std::make_shared<ReplacingSortedTransform>(header, num_outputs,
|
return std::make_shared<ReplacingSortedTransform>(header, num_outputs,
|
||||||
sort_description, merging_params.version_column, max_block_size);
|
sort_description, merging_params.version_column, max_block_size);
|
||||||
|
|
||||||
case MergeTreeData::MergingParams::VersionedCollapsing:
|
case MergeTreeData::MergingParams::VersionedCollapsing:
|
||||||
return std::make_shared<VersionedCollapsingTransform>(header, num_outputs,
|
return std::make_shared<VersionedCollapsingTransform>(header, num_outputs,
|
||||||
sort_description, merging_params.sign_column, max_block_size);
|
sort_description, merging_params.sign_column, max_block_size);
|
||||||
|
|
||||||
case MergeTreeData::MergingParams::Graphite:
|
case MergeTreeData::MergingParams::Graphite:
|
||||||
throw Exception("GraphiteMergeTree doesn't support FINAL", ErrorCodes::LOGICAL_ERROR);
|
return std::make_shared<GraphiteRollupSortedTransform>(header, num_outputs,
|
||||||
|
sort_description, max_block_size, merging_params.graphite_params, now);
|
||||||
}
|
}
|
||||||
|
|
||||||
__builtin_unreachable();
|
__builtin_unreachable();
|
||||||
|
@ -402,11 +402,7 @@ public:
|
|||||||
|
|
||||||
bool supportsFinal() const override
|
bool supportsFinal() const override
|
||||||
{
|
{
|
||||||
return merging_params.mode == MergingParams::Collapsing
|
return merging_params.mode != MergingParams::Ordinary;
|
||||||
|| merging_params.mode == MergingParams::Summing
|
|
||||||
|| merging_params.mode == MergingParams::Aggregating
|
|
||||||
|| merging_params.mode == MergingParams::Replacing
|
|
||||||
|| merging_params.mode == MergingParams::VersionedCollapsing;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool supportsSubcolumns() const override { return true; }
|
bool supportsSubcolumns() const override { return true; }
|
||||||
|
@ -32,8 +32,6 @@ WITH dates AS
|
|||||||
select 1, 'max_2', older_date - number * 60 - 30, number, 1, number from dates, numbers(1200) union all
|
select 1, 'max_2', older_date - number * 60 - 30, number, 1, number from dates, numbers(1200) union all
|
||||||
select 2, 'max_2', older_date - number * 60 - 30, number, 1, number from dates, numbers(1200);
|
select 2, 'max_2', older_date - number * 60 - 30, number, 1, number from dates, numbers(1200);
|
||||||
|
|
||||||
optimize table test_graphite final;
|
select key, Path, Value, Version, col from test_graphite order by key, Path, Time desc final;
|
||||||
|
|
||||||
select key, Path, Value, Version, col from test_graphite order by key, Path, Time desc;
|
|
||||||
|
|
||||||
drop table test_graphite;
|
drop table test_graphite;
|
||||||
|
Loading…
Reference in New Issue
Block a user