This commit is contained in:
Sergei Bocharov 2020-01-20 12:48:34 +03:00
parent a2e8e8ec0a
commit 0ea906baca
6 changed files with 35 additions and 40 deletions

View File

@ -382,7 +382,7 @@ See also:
- [Join table engine](../table_engines/join.md)
- [join_default_strictness](#settings-join_default_strictness)
## join_use_nulls {#settings-join_use_nulls}
## join_use_nulls {#join_use_nulls}
Sets the type of [JOIN](../../query_language/select.md) behavior. When merging tables, empty cells may appear. ClickHouse fills them differently based on this setting.

View File

@ -2,7 +2,7 @@
Prepared data structure for using in [JOIN](../../query_language/select.md#select-join) operations.
## Creating a Table
## Creating a Table {#creating-a-table}
```sql
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]

View File

@ -863,9 +863,9 @@ So, result of function depends on partition of data to blocks and on order of da
## joinGet {#joinget}
The function lets you extract data from the table the same way as from a [dictionary](https://clickhouse.yandex/docs/en/query_language/dicts/).
The function lets you extract data from the table the same way as from a [dictionary](../dicts/index.md).
Gets data from [Join](../../join/#creating-a-table) tables using the specified join key.
Gets data from [Join](../../operations/table_engines/join.md#creating-a-table) tables using the specified join key.
Only supports tables created with the `ENGINE = Join(ANY, LEFT, <join_keys>)` statement.
@ -877,10 +877,9 @@ joinGet(join_storage_table_name, `value_column`, join_keys)
**Parameters**
- `join_storage_table_name` — [Identifier](../../syntax/#syntax-identifiers) indicates where search is performed. In most cases, this is the name of the database and/or table.
Firstly, identifier is searched in the default database (see parameter `default_database` in the config), and then in other databases. To override the default database, use the `USE db_name` command.
- Specify only the table name for tables with a unique name.
- Specify the database and then the table for non-unique tables. Use a dot as the separator.
- `join_storage_table_name` — [Identifier](../../syntax/#syntax-identifiers) indicates where search is performed. In most cases, this is the name of the database and/or table. Firstly, identifier is searched in the default database (see parameter `default_database` in the config file), and then in other databases. To override the default database, use the `USE db_name` command.
- Specify only the table name for tables with a unique name.
- Specify the database and then the table for non-unique tables. Use a dot as the separator.
- `value_column` — name of the column of the table that contains required data.
- `join_keys` — list of keys.
@ -888,16 +887,16 @@ Firstly, identifier is searched in the default database (see parameter `default_
Returns list of values corresponded to list of keys.
If certain doesn't exist in source table then `0` or `null` will be returned based on [join_use_nulls](../../settings/#settings-join_use_nulls) setting.
Type: [all Data Types](https://clickhouse.yandex/docs/en/data_types/).
If certain doesn't exist in source table then `0` or `null` will be returned based on [join_use_nulls](../../operations/settings/settings.md#join_use_nulls) setting.
**Example**
Input table:
```sql
CREATE TABLE id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id)
INSERT INTO id_val VALUES (1,11)(2,12)(4,13)
CREATE DATABASE db_test
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id)
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13)
```
```text
@ -911,18 +910,18 @@ INSERT INTO id_val VALUES (1,11)(2,12)(4,13)
Query:
```sql
SELECT joinGet(dbtest.id_val,'val',toUInt32(number)) from numbers(4)
SELECT joinGet(db_test.id_val,'val',toUInt32(number)) from numbers(4)
```
Result:
```text
┌─joinGet(dbtest.id_val, 'val', toUInt32(number))─┐
│ 0 │
│ 11 │
│ 12 │
│ 0 │
└─────────────────────────────────────────────────┘
┌─joinGet(db_test.id_val, 'val', toUInt32(number))─┐
0 │
11 │
12 │
0 │
└─────────────────────────────────────────────────
```
## modelEvaluate(model_name, ...) {#function-modelevaluate}

View File

@ -366,7 +366,7 @@ Ok.
- [Движок таблиц Join](../table_engines/join.md)
- [join_default_strictness](#settings-join_default_strictness)
## join_use_nulls {#settings-join_use_nulls}
## join_use_nulls {#join_use_nulls}
Устанавливает тип поведения [JOIN](../../query_language/select.md). При объединении таблиц могут появиться пустые ячейки. ClickHouse заполняет их по-разному в зависимости от настроек.

View File

@ -2,7 +2,7 @@
Подготовленная структура данных для использования в операциях [JOIN](../../query_language/select.md#select-join).
## Создание таблицы
## Создание таблицы {#creating-a-table}
```sql
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]

View File

@ -846,9 +846,9 @@ SELECT filesystemAvailable() AS "Free space", toTypeName(filesystemAvailable())
## joinGet {#joinget}
Функция позволяет извлекать данные из таблицы таким же образом как из [словаря](https://clickhouse.yandex/docs/ru/query_language/dicts/).
Функция позволяет извлекать данные из таблицы таким же образом как из [словаря](../dicts/index.md).
Получает данные из таблиц [Join](https://clickhouse.yandex/docs/ru/operations/table_engines/join/) по ключу.
Получает данные из таблиц [Join](../../operations/table_engines/join.md#creating-a-table) по ключу.
Поддерживаются только таблицы, созданные с `ENGINE = Join(ANY, LEFT, <join_keys>)`.
@ -860,8 +860,7 @@ joinGet(join_storage_table_name, `value_column`, join_keys)
**Параметры**
- `join_storage_name` — [идентификатор](../../syntax/#syntax-identifiers), который указывает, откуда производится выборка данных. Чаще всего это имя базы данных и/или таблица.
Поиск по идентификатору осуществляется сначала в базе данных по умолчанию (в конфигурации `default_database`), а затем по всем базам данных. Чтобы переопределить базу данных по умолчанию, используйте команду `USE db_name`.
- `join_storage_name` — [идентификатор](../../syntax/#syntax-identifiers), который указывает, откуда производится выборка данных. Чаще всего это имя базы данных и/или таблица. Поиск по идентификатору осуществляется сначала в базе данных по умолчанию (см. конфигурацию `default_database`), а затем по всем базам данных. Чтобы переопределить базу данных по умолчанию, используйте команду `USE db_name`.
- Для таблиц с уникальным названием достататочно указать только имя таблицы.
- Для неуникальных таблиц укажите базу данных, а затем таблицу. В качестве разделителя используйте точку.
- `value_column` — столбец, из которого нужно произвести выборку данных.
@ -871,19 +870,16 @@ joinGet(join_storage_table_name, `value_column`, join_keys)
Возвращает значение по списку ключей.
Если значения не существует в исходной таблице, вернется `0` или `null` в соответствии с настройками [join_use_nulls](https://clickhouse.yandex/docs/ru/operations/settings/settings/#settings-join_use_nulls).
Тип: [все Типы Данных](https://clickhouse.yandex/docs/ru/data_types/).
Если значения не существует в исходной таблице, вернется `0` или `null` в соответствии с настройками [join_use_nulls](../../operations/settings/settings.md#join_use_nulls).
**Пример**
Входная таблица:
```sql
CREATE TABLE id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id)
INSERT INTO id_val VALUES (1,11)(2,12)(4,13)
CREATE DATABASE db_test
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id)
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13)
```
```text
@ -897,18 +893,18 @@ INSERT INTO id_val VALUES (1,11)(2,12)(4,13)
Запрос:
```sql
SELECT joinGet(dbtest.id_val,'val',toUInt32(number)) from numbers(4)
SELECT joinGet(db_test.id_val,'val',toUInt32(number)) from numbers(4)
```
Результат:
```text
┌─joinGet(dbtest.id_val, 'val', toUInt32(number))─┐
│ 0 │
│ 11 │
│ 12 │
│ 0 │
└─────────────────────────────────────────────────┘
┌─joinGet(db_test.id_val, 'val', toUInt32(number))─┐
0 │
11 │
12 │
0 │
└─────────────────────────────────────────────────
```
## modelEvaluate(model_name, ...) {#function-modelevaluate}