From 442f9cf59046c2f494278047111d5fff53a726d3 Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Sun, 20 Dec 2020 15:25:14 +0300 Subject: [PATCH] Update settings.md and union-all.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Выполнил перевод на русский язык. --- docs/en/operations/settings/settings.md | 18 ------ docs/ru/operations/settings/settings.md | 59 +++++++++++++++++++ .../statements/select/union-all.md | 8 +-- 3 files changed, 63 insertions(+), 22 deletions(-) diff --git a/docs/en/operations/settings/settings.md b/docs/en/operations/settings/settings.md index 2caf4a6f370..98ccdab0c2e 100644 --- a/docs/en/operations/settings/settings.md +++ b/docs/en/operations/settings/settings.md @@ -2519,22 +2519,4 @@ Result: └───┘ ``` -**Example of using an empty string as a setting value** - -Query: - -```sql -SET union_default_mode = ''; -SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 2; -``` - -Result: - -```text -Query id: 8f3755e8-ef76-4d1a-bdb2-7f6fc8a669ec - -Received exception from server (version 20.11.1): -Code: 2005. DB::Exception: Received from localhost:9000. DB::Exception: Expected ALL or DISTINCT in SelectWithUnion query, because setting (union_default_mode) is empty. -``` - [Original article](https://clickhouse.tech/docs/en/operations/settings/settings/) diff --git a/docs/ru/operations/settings/settings.md b/docs/ru/operations/settings/settings.md index 1b688a528d3..d94f7ddfae8 100644 --- a/docs/ru/operations/settings/settings.md +++ b/docs/ru/operations/settings/settings.md @@ -2326,4 +2326,63 @@ SELECT number FROM numbers(3) FORMAT JSONEachRow; ## union_default_mode {#union-default-mode} +Устанавливает особый режим объединения результатов `SELECT` запросов, используя выражение [UNION](../../sql-reference/statements/select/union-all.md). + +Возможные значения: + +- `'DISTINCT'` — ClickHouse выводит строки в результате объединения результатов запросов, удаляя повторяющиеся строки. +- `'ALL'` — ClickHouse выводит все строки в результате объединения результатов запросов, включая повторяющиеся строки. +- `''` — Clickhouse генерирует исключение при использовании с `UNION`. + +Значение по умолчанию: `'DISTINCT'`. + +**Пример использования 'DISTINCT' в качестве значения настройки** + +Запрос: + +```sql +SET union_default_mode = 'DISTINCT'; +SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 2; +``` + +Результат: + +```text +┌─1─┐ +│ 1 │ +└───┘ +┌─1─┐ +│ 2 │ +└───┘ +┌─1─┐ +│ 3 │ +└───┘ +``` + +**Пример использования 'ALL' в качестве значения настройки** + +Запрос: + +```sql +SET union_default_mode = 'ALL'; +SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 2; +``` + +Результат: + +```text +┌─1─┐ +│ 1 │ +└───┘ +┌─1─┐ +│ 2 │ +└───┘ +┌─1─┐ +│ 2 │ +└───┘ +┌─1─┐ +│ 3 │ +└───┘ +``` + [Оригинальная статья](https://clickhouse.tech/docs/ru/operations/settings/settings/) diff --git a/docs/ru/sql-reference/statements/select/union-all.md b/docs/ru/sql-reference/statements/select/union-all.md index 86bcf6a53cc..72fc7299b30 100644 --- a/docs/ru/sql-reference/statements/select/union-all.md +++ b/docs/ru/sql-reference/statements/select/union-all.md @@ -25,16 +25,16 @@ SELECT CounterID, 2 AS table, sum(Sign) AS c Запросы, которые являются частью `UNION ALL` не могут быть заключен в круглые скобки. [ORDER BY](order-by.md) и [LIMIT](limit.md) применяются к отдельным запросам, а не к конечному результату. Если вам нужно применить преобразование к конечному результату, вы можете разместить все объединенные с помощью `UNION ALL` запросы в подзапрос в секции [FROM](from.md). -## Ограничения {#limitations} +# Секция UNION DISTINCT {#union-distinct-clause} -Поддерживается только `UNION ALL`. Обычный `UNION` (`UNION DISTINCT`) не поддерживается. Если вам это нужно `UNION DISTINCT`, вы можете написать `SELECT DISTINCT` из подзапроса, содержащего `UNION ALL`. +Разница между `UNION ALL` и `UNION DISTINCT` в том, что `UNION DISTINCT` выполняет явное преобразование для результата объединения. Это равнозначно выражению `SELECT DISTINCT` из подзапроса, содержащего `UNION ALL`. # Секция UNION {#union-clause} -По умолчанию, `UNION` ведет себя так же, как и `UNION DISTINCT`. Но вы можете указать режим объединения с помощью настройки [union_default_mode](../../../operations/settings/settings.md#union-default-mode), значениями которой могут быть `ALL`, `DISTINCT` или пустая строка. Однако, если вы используете `UNION` с настройкой `union_default_mode`, значением которой является пустая строка, то сгенерируется исключение. +По умолчанию, `UNION` ведет себя так же, как и `UNION DISTINCT`. Но вы можете указать особый режим объединения с помощью настройки [union_default_mode](../../../operations/settings/settings.md#union-default-mode), значениями которой могут быть `ALL`, `DISTINCT` или пустая строка. Однако если вы используете `UNION` с настройкой `union_default_mode`, значением которой является пустая строка, то будет сгенерировано исключение. ## Детали реализации {#implementation-details} -Запросы, которые являются частью `UNION ALL` выполняются параллельно, и их результаты могут быть смешаны вместе. +Запросы, которые являются частью `UNION ALL`, выполняются параллельно, и их результаты могут быть смешаны вместе. [Оригинальная статья](https://clickhouse.tech/docs/ru/sql-reference/statements/select/union-all/)