mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 07:31:57 +00:00
Adding examples to live view docs.
This commit is contained in:
parent
3d2788e1b5
commit
46f67fa8ac
@ -41,7 +41,6 @@ SELECT a, b, c FROM (SELECT ...)
|
|||||||
CREATE MATERIALIZED VIEW [IF NOT EXISTS] [db.]table_name [ON CLUSTER] [TO[db.]name] [ENGINE = engine] [POPULATE] AS SELECT ...
|
CREATE MATERIALIZED VIEW [IF NOT EXISTS] [db.]table_name [ON CLUSTER] [TO[db.]name] [ENGINE = engine] [POPULATE] AS SELECT ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Materialized views store data transformed by the corresponding [SELECT](../../../sql-reference/statements/select/index.md) query.
|
Materialized views store data transformed by the corresponding [SELECT](../../../sql-reference/statements/select/index.md) query.
|
||||||
|
|
||||||
When creating a materialized view without `TO [db].[table]`, you must specify `ENGINE` – the table engine for storing data.
|
When creating a materialized view without `TO [db].[table]`, you must specify `ENGINE` – the table engine for storing data.
|
||||||
@ -95,12 +94,63 @@ You can watch for changes in the live view query result using the [WATCH](../../
|
|||||||
WATCH [db.]live_view
|
WATCH [db.]live_view
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE TABLE mt (x Int8) Engine = MergeTree ORDER BY x;
|
||||||
|
CREATE LIVE VIEW lv AS SELECT sum(x) FROM mt;
|
||||||
|
```
|
||||||
|
|
||||||
|
Watch a live view while doing a parallel insert into the source table.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
WATCH lv
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
┌─sum(x)─┬─_version─┐
|
||||||
|
│ 1 │ 1 │
|
||||||
|
└────────┴──────────┘
|
||||||
|
┌─sum(x)─┬─_version─┐
|
||||||
|
│ 2 │ 2 │
|
||||||
|
└────────┴──────────┘
|
||||||
|
┌─sum(x)─┬─_version─┐
|
||||||
|
│ 6 │ 3 │
|
||||||
|
└────────┴──────────┘
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
```sql
|
||||||
|
INSERT INTO mt VALUES (1);
|
||||||
|
INSERT INTO mt VALUES (2);
|
||||||
|
INSERT INTO mt VALUES (3);
|
||||||
|
```
|
||||||
|
|
||||||
or add [EVENTS](../../../sql-reference/statements/watch.md#events-clause) clause to just get change events.
|
or add [EVENTS](../../../sql-reference/statements/watch.md#events-clause) clause to just get change events.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
WATCH [db.]live_view EVENTS
|
WATCH [db.]live_view EVENTS
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
WATCH lv EVENTS
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
┌─version─┐
|
||||||
|
│ 1 │
|
||||||
|
└─────────┘
|
||||||
|
┌─version─┐
|
||||||
|
│ 2 │
|
||||||
|
└─────────┘
|
||||||
|
┌─version─┐
|
||||||
|
│ 3 │
|
||||||
|
└─────────┘
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
You can execute [SELECT](../../../sql-reference/statements/select/index.md) query on a live view in the same way as for any regular view or a table. If the query result is cached it will return the result immediately without running the stored query on the underlying tables.
|
You can execute [SELECT](../../../sql-reference/statements/select/index.md) query on a live view in the same way as for any regular view or a table. If the query result is cached it will return the result immediately without running the stored query on the underlying tables.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
@ -121,6 +171,13 @@ CREATE LIVE VIEW [db.]table_name WITH TIMEOUT [value_in_sec] AS SELECT ...
|
|||||||
|
|
||||||
If the timeout value is not specified then the value specified by the `temporary_live_view_timeout` setting is used.
|
If the timeout value is not specified then the value specified by the `temporary_live_view_timeout` setting is used.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE TABLE mt (x Int8) Engine = MergeTree ORDER BY x;
|
||||||
|
CREATE LIVE VIEW lv WITH TIMEOUT 15 AS SELECT sum(x) FROM mt;
|
||||||
|
```
|
||||||
|
|
||||||
### With Refresh {#live-view-with-refresh}
|
### With Refresh {#live-view-with-refresh}
|
||||||
|
|
||||||
When a live view is created with a `WITH REFRESH` clause then it will be automatically refreshed after the specified number of seconds elapse since the last refresh or trigger.
|
When a live view is created with a `WITH REFRESH` clause then it will be automatically refreshed after the specified number of seconds elapse since the last refresh or trigger.
|
||||||
@ -131,11 +188,47 @@ CREATE LIVE VIEW [db.]table_name WITH REFRESH [value_in_sec] AS SELECT ...
|
|||||||
|
|
||||||
If the refresh value is not specified then the value specified by the `periodic_live_view_refresh` setting is used.
|
If the refresh value is not specified then the value specified by the `periodic_live_view_refresh` setting is used.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE LIVE VIEW lv WITH REFRESH 5 AS SELECT now();
|
||||||
|
WATCH lv
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
┌───────────────now()─┬─_version─┐
|
||||||
|
│ 2021-02-21 08:47:05 │ 1 │
|
||||||
|
└─────────────────────┴──────────┘
|
||||||
|
┌───────────────now()─┬─_version─┐
|
||||||
|
│ 2021-02-21 08:47:10 │ 2 │
|
||||||
|
└─────────────────────┴──────────┘
|
||||||
|
┌───────────────now()─┬─_version─┐
|
||||||
|
│ 2021-02-21 08:47:15 │ 3 │
|
||||||
|
└─────────────────────┴──────────┘
|
||||||
|
```
|
||||||
|
|
||||||
You can combine `WITH TIMEOUT` and `WITH REFRESH` clauses using an `AND` clause.
|
You can combine `WITH TIMEOUT` and `WITH REFRESH` clauses using an `AND` clause.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
CREATE LIVE VIEW [db.]table_name WITH TIMEOUT [value_in_sec] AND REFRESH [value_in_sec] AS SELECT ...
|
CREATE LIVE VIEW [db.]table_name WITH TIMEOUT [value_in_sec] AND REFRESH [value_in_sec] AS SELECT ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE LIVE VIEW lv WITH TIMEOUT 15 AND REFRESH 5 AS SELECT now();
|
||||||
|
```
|
||||||
|
|
||||||
|
After 15 sec the live view will be automatically dropped if there are no active `WATCH` queries.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
WATCH lv
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Code: 60. DB::Exception: Received from localhost:9000. DB::Exception: Table default.lv doesn't exist..
|
||||||
|
```
|
||||||
|
|
||||||
### Usage
|
### Usage
|
||||||
|
|
||||||
Most common uses of live view tables include:
|
Most common uses of live view tables include:
|
||||||
|
@ -25,6 +25,26 @@ WATCH [db.]live_view
|
|||||||
|
|
||||||
The virtual `_version` column in the query result indicates the current result version.
|
The virtual `_version` column in the query result indicates the current result version.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE LIVE VIEW lv WITH REFRESH 5 AS SELECT now();
|
||||||
|
WATCH lv
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
┌───────────────now()─┬─_version─┐
|
||||||
|
│ 2021-02-21 09:17:21 │ 1 │
|
||||||
|
└─────────────────────┴──────────┘
|
||||||
|
┌───────────────now()─┬─_version─┐
|
||||||
|
│ 2021-02-21 09:17:26 │ 2 │
|
||||||
|
└─────────────────────┴──────────┘
|
||||||
|
┌───────────────now()─┬─_version─┐
|
||||||
|
│ 2021-02-21 09:17:31 │ 3 │
|
||||||
|
└─────────────────────┴──────────┘
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
By default, the requested data is returned to the client, while in conjunction with [INSERT INTO](../../sql-reference/statements/insert-into.md) it can be forwarded to a different table.
|
By default, the requested data is returned to the client, while in conjunction with [INSERT INTO](../../sql-reference/statements/insert-into.md) it can be forwarded to a different table.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
@ -36,7 +56,24 @@ INSERT INTO [db.]table WATCH [db.]live_view ...
|
|||||||
The `EVENTS` clause can be used to obtain a short form of the `WATCH` query where instead of the query result you will just get the latest query result version.
|
The `EVENTS` clause can be used to obtain a short form of the `WATCH` query where instead of the query result you will just get the latest query result version.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
WATCH [db.]live_view EVENTS LIMIT 1
|
WATCH [db.]live_view EVENTS
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE LIVE VIEW lv WITH REFRESH 5 AS SELECT now();
|
||||||
|
WATCH lv EVENTS
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
┌─version─┐
|
||||||
|
│ 1 │
|
||||||
|
└─────────┘
|
||||||
|
┌─version─┐
|
||||||
|
│ 2 │
|
||||||
|
└─────────┘
|
||||||
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
## LIMIT Clause {#limit-clause}
|
## LIMIT Clause {#limit-clause}
|
||||||
@ -44,7 +81,20 @@ WATCH [db.]live_view EVENTS LIMIT 1
|
|||||||
The `LIMIT n` clause species the number of updates the `WATCH` query should wait for before terminating. By default there is no limit on the number of updates and therefore the query will not terminate. The value of `0` indicates that the `WATCH` query should not wait for any new query results and therefore will return immediately once query is evaluated.
|
The `LIMIT n` clause species the number of updates the `WATCH` query should wait for before terminating. By default there is no limit on the number of updates and therefore the query will not terminate. The value of `0` indicates that the `WATCH` query should not wait for any new query results and therefore will return immediately once query is evaluated.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
WATCH [db.]live_view LIMIT 2
|
WATCH [db.]live_view LIMIT 1
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE LIVE VIEW lv WITH REFRESH 5 AS SELECT now();
|
||||||
|
WATCH lv EVENTS LIMIT 1
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
┌─version─┐
|
||||||
|
│ 1 │
|
||||||
|
└─────────┘
|
||||||
```
|
```
|
||||||
|
|
||||||
## FORMAT Clause {#format-clause}
|
## FORMAT Clause {#format-clause}
|
||||||
|
Loading…
Reference in New Issue
Block a user