mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 15:42:02 +00:00
DOCAPI-7984: EN review, RU translation. ASOF JOIN ON docs (#7035)
* Typo fix. * Update select.md (#41) * DOCAPI-7984: RU translation
This commit is contained in:
parent
1143eefda6
commit
317e57bbc0
@ -563,7 +563,7 @@ You can use the following types of syntax:
|
||||
ON equi_cond AND closest_match_cond
|
||||
```
|
||||
|
||||
You can use any number of equality conditions and exactly one closest match condition. For example, `SELECT count() FROM A ASOF LEFT JOIN B ON A.a == B.b AND B.t <= A.t`. There is just `table_2.some_col <= table_1.some_col` and `table_1.some_col >= table2.some_col` types of conditions are available. You cannot apply other conditions like `>` or `!=`.
|
||||
You can use any number of equality conditions and exactly one closest match condition. For example, `SELECT count() FROM A ASOF LEFT JOIN B ON A.a == B.b AND B.t <= A.t`. Only `table_2.some_col <= table_1.some_col` and `table_1.some_col >= table2.some_col` condition types are available. You can't apply other conditions like `>` or `!=`.
|
||||
|
||||
- `ASOF JOIN ... USING`
|
||||
|
||||
@ -590,7 +590,7 @@ event_1_2 | 13:00 | 42 event_2_3 | 13:00 | 42
|
||||
... ...
|
||||
```
|
||||
|
||||
`ASOF JOIN` can take the timestamp of a user event from `table_1` and find an event in `table_2` where the timestamp is closest (equal or less) to the timestamp of the event from `table_1`. Herewith the `user_id` column can be used for joining on equality and the `ev_time` column can be used for joining on the closest match. In our example, `event_1_1` can be joined with `event_2_1`, `event_1_2` can be joined with `event_2_3`, but `event_2_2` cannot be joined.
|
||||
`ASOF JOIN` can take the timestamp of a user event from `table_1` and find an event in `table_2` where the timestamp is closest (equal to or less) to the timestamp of the event from `table_1`. Here, the `user_id` column can be used for joining on equality and the `ev_time` column can be used for joining on the closest match. In our example, `event_1_1` can be joined with `event_2_1` and `event_1_2` can be joined with `event_2_3`, but `event_2_2` can't be joined.
|
||||
|
||||
|
||||
!!! note "Note"
|
||||
|
@ -555,18 +555,34 @@ ClickHouse не поддерживает синтаксис с запятыми
|
||||
|
||||
Таблицы для `ASOF JOIN` должны иметь столбец с отсортированной последовательностью. Этот столбец не может быть единственным в таблице и должен быть одного из типов: `UInt32`, `UInt64`, `Float32`, `Float64`, `Date` и `DateTime`.
|
||||
|
||||
Синтаксис `ASOF JOIN`:
|
||||
Можно использовать следующие типы синтаксиса:
|
||||
|
||||
```sql
|
||||
SELECT expression_list FROM table_1 ASOF JOIN table_2 USING(equi_column1, ... equi_columnN, asof_column)
|
||||
```
|
||||
- `ASOF JOIN ... ON`
|
||||
|
||||
`ASOF JOIN` использует `equi_columnX` для объединения по равенству и `asof_column` для объединения по ближайшему совпадению.
|
||||
```sql
|
||||
SELECT expressions_list
|
||||
FROM table_1
|
||||
ASOF LEFT JOIN table_2
|
||||
ON equi_cond AND closest_match_cond
|
||||
```
|
||||
|
||||
Можно использовать произвольное количество условий равенства и одно условие на ближайшее совпадение. Например, `SELECT count() FROM A ASOF LEFT JOIN B ON A.a == B.b AND B.t <= A.t`. Можно использовать только условия `table_2.some_col <= table_1.some_col` и `table_1.some_col >= table2.some_col`. Условия типа `>` или `!=` не поддерживаются.
|
||||
|
||||
- `ASOF JOIN ... USING`
|
||||
|
||||
```sql
|
||||
SELECT expressions_list
|
||||
FROM table_1
|
||||
ASOF JOIN table_2
|
||||
USING (equi_column1, ... equi_columnN, asof_column)
|
||||
```
|
||||
|
||||
Для слияния по равенству `ASOF JOIN` использует `equi_columnX`, а для слияния по ближайшему совпадению использует `asof_column` с условием `table_1.asof_column >= table2.asof_column`. Столбец `asof_column` должен быть последним в секции `USING`.
|
||||
|
||||
Например, рассмотрим следующие таблицы:
|
||||
|
||||
```text
|
||||
table_1 table_2
|
||||
```
|
||||
table_1 table_2
|
||||
event | ev_time | user_id event | ev_time | user_id
|
||||
----------|---------|---------- ----------|---------|----------
|
||||
... ...
|
||||
@ -578,10 +594,8 @@ event_1_2 | 13:00 | 42 event_2_3 | 13:00 | 42
|
||||
|
||||
`ASOF JOIN` принимает метку времени пользовательского события из `table_1` и находит такое событие в `table_2` метка времени которого наиболее близка (равна или меньше) к метке времени события из `table_1`. При этом столбец `user_id` используется для объединения по равенству, а столбец `ev_time` для объединения по ближайшему совпадению. В нашем примере `event_1_1` может быть объединено с `event_2_1`, `event_1_2` может быть объединено с `event_2_3`, а `event_2_2` не объединяется.
|
||||
|
||||
Детали реализации:
|
||||
|
||||
- `asof_column` должен быть последним в секции `USING`.
|
||||
- `ASOF JOIN` не поддержан для движка таблиц [Join](../operations/table_engines/join.md).
|
||||
!!! note "Примечание"
|
||||
`ASOF JOIN` не поддержан для движка таблиц [Join](../operations/table_engines/join.md).
|
||||
|
||||
Чтобы задать значение строгости по умолчанию, используйте сессионный параметр [join_default_strictness](../operations/settings/settings.md#settings-join_default_strictness).
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user