@@ -39,12 +39,13 @@ ClickHouse のインクリメンタルマテリアライズドビューは非常
3939``` sql
4040CREATE MATERIALIZED VIEW table_name_mv
4141REFRESH EVERY 1 MINUTE TO table_name AS
42- ...
42+ ```
4343
4444マテリアライズドビューを強制的にリフレッシュしたい場合は、` SYSTEM REFRESH VIEW ` 構文を使用できます:
4545
4646``` sql
4747SYSTEM REFRESH VIEW table_name_mv;
48+ ```
4849
4950ビューのキャンセル、停止、開始も可能です。
5051詳細については、[ refreshable materialized views の管理] ( /sql-reference/statements/system#refreshable-materialized-views ) ドキュメントを参照してください。
@@ -58,11 +59,13 @@ SELECT database, view, status,
5859 last_success_time, last_refresh_time, next_refresh_time,
5960 read_rows, written_rows
6061FROM system .view_refreshes ;
62+ ```
6163
6264``` text
6365┌─database─┬─view─────────────┬─status────┬───last_success_time─┬───last_refresh_time─┬───next_refresh_time─┬─read_rows─┬─written_rows─┐
6466│ database │ table_name_mv │ Scheduled │ 2024-11-11 12:10:00 │ 2024-11-11 12:10:00 │ 2024-11-11 12:11:00 │ 5491132 │ 817718 │
6567└──────────┴──────────────────┴───────────┴─────────────────────┴─────────────────────┴─────────────────────┴───────────┴──────────────┘
68+ ```
6669
6770## リフレッシュレートを変更するにはどうすればよいですか? {#how-can-i-change-the-refresh-rate}
6871
@@ -71,13 +74,15 @@ FROM system.view_refreshes;
7174``` sql
7275ALTER TABLE table_name_mv
7376MODIFY REFRESH EVERY 30 SECONDS;
77+ ```
7478
7579これを行った後、[ 最後にリフレッシュされたのはいつか?] ( /materialized-view/refreshable-materialized-view#when-was-a-refreshable-materialized-view-last-refreshed ) クエリを使用して、レートが更新されたことを確認できます:
7680
7781``` text
7882┌─database─┬─view─────────────┬─status────┬───last_success_time─┬───last_refresh_time─┬───next_refresh_time─┬─read_rows─┬─written_rows─┐
7983│ database │ table_name_mv │ Scheduled │ 2024-11-11 12:22:30 │ 2024-11-11 12:22:30 │ 2024-11-11 12:23:00 │ 5491132 │ 817718 │
8084└──────────┴──────────────────┴───────────┴─────────────────────┴─────────────────────┴─────────────────────┴───────────┴──────────────┘
85+ ```
8186
8287## ` APPEND ` を使用して新しい行を追加する {#using-append-to-add-new-rows}
8388
@@ -104,6 +109,7 @@ Query id: 7662bc39-aaf9-42bd-b6c7-bc94f2881036
104109│ 2008 - 08 - 06 17 :07 :19 │ 3a2 │ 495 │
105110│ 2008 - 08 - 06 17 :07 :19 │ 598 │ 238 │
106111└─────────────────────┴──────┴───────┘
112+ ```
107113
108114このデータセットには ` uuid ` 列に ` 4096 ` の値があります。最も合計カウントが多い ` uuid ` を見つけるには、以下のクエリを書くことができます:
109115
@@ -128,6 +134,7 @@ LIMIT 10
128134│ f33 │ 5653783 │
129135│ c5b │ 5649936 │
130136└──────┴─────────┘
137+ ```
131138
132139たとえば、各 ` uuid ` のカウントを10秒ごとにキャプチャして、` events_snapshot ` という新しいテーブルに保存したいとしましょう。` events_snapshot ` のスキーマは次のようになります:
133140
@@ -139,6 +146,7 @@ CREATE TABLE events_snapshot (
139146)
140147ENGINE = MergeTree
141148ORDER BY uuid;
149+ ```
142150
143151次に、このテーブルをポピュレートするためのリフレッシュ可能なマテリアライズドビューを作成できます:
144152
@@ -151,6 +159,7 @@ AS SELECT
151159 sum (count) AS count
152160FROM events
153161GROUP BY ALL;
162+ ```
154163
155164次に、特定の ` uuid ` に対する時間の経過に伴うカウントを取得するために ` events_snapshot ` をクエリすることができます:
156165
@@ -171,6 +180,7 @@ FORMAT PrettyCompactMonoBlock
171180│ 2024 - 10 - 01 16 :13 :50 │ fff │ 6203361 │
172181│ 2024 - 10 - 01 16 :14 :00 │ fff │ 6501695 │
173182└─────────────────────┴──────┴─────────┘
183+ ```
174184
175185## 例 {#examples}
176186
@@ -195,6 +205,7 @@ LEFT JOIN (
195205 FROM postlinks
196206 GROUP BY PostId
197207) AS postlinks ON posts_types_codecs_ordered .Id = postlinks .PostId ;
208+ ```
198209
199210このデータを ` posts_with_links ` テーブルに一度の挿入で行う方法も示しましたが、実際のシステムではこの操作を定期的に実行することが望ましいです。
200211
@@ -217,6 +228,7 @@ LEFT JOIN (
217228 FROM postlinks
218229 GROUP BY PostId
219230) AS postlinks ON posts_types_codecs_ordered .Id = postlinks .PostId ;
231+ ```
220232
221233このビューは、即座に、そしてその後も毎時実行され、ソーステーブルの更新が反映されることを確認します。重要なのは、クエリが再実行されたときに、結果セットが原子的かつ透明に更新されることです。
222234
@@ -252,6 +264,7 @@ FROM (
252264GROUP BY id
253265ORDER BY movies DESC
254266LIMIT 5 ;
267+ ```
255268
256269``` text
257270┌─────id─┬─name─────────┬─num_movies─┬───────────avg_rank─┬─unique_genres─┬─uniq_directors─┬──────────updated_at─┐
@@ -264,6 +277,7 @@ LIMIT 5;
264277
2652785 rows in set. Elapsed: 0.393 sec. Processed 5.45 million rows, 86.82 MB (13.87 million rows/s., 221.01 MB/s.)
266279Peak memory usage: 1.38 GiB.
280+ ```
267281
268282結果が返されるのにそれほど時間はかかりませんが、さらに迅速で計算が少ないものにしたいとします。仮に、このデータセットが定常的に更新される場合 - 映画が常にリリースされ、新たな俳優や監督も登場するわけです。
269283
@@ -282,6 +296,7 @@ CREATE TABLE imdb.actor_summary
282296)
283297ENGINE = MergeTree
284298ORDER BY num_movies
299+ ```
285300
286301そして、ビューを定義します:
287302
315330)
316331GROUP BY id
317332ORDER BY num_movies DESC ;
333+ ```
318334
319335このビューは即座に実行され、その後毎分実行され、ソーステーブルの更新が反映されることになります。俳優の概要を取得するための以前のクエリは、構文が簡素化され、かなり迅速になります!
320336
@@ -323,6 +339,7 @@ SELECT *
323339FROM imdb .actor_summary
324340ORDER BY num_movies DESC
325341LIMIT 5
342+ ```
326343
327344``` text
328345┌─────id─┬─name─────────┬─num_movies─┬──avg_rank─┬─unique_genres─┬─uniq_directors─┬──────────updated_at─┐
@@ -334,6 +351,7 @@ LIMIT 5
334351└────────┴──────────────┴────────────┴───────────┴───────────────┴────────────────┴─────────────────────┘
335352
3363535 rows in set. Elapsed: 0.007 sec.
354+ ```
337355
338356仮に新たな俳優「Clicky McClickHouse」が多くの映画に出演したとしたら、ソースデータに追加します!
339357
@@ -346,6 +364,7 @@ INSERT INTO imdb.roles SELECT
346364 now() AS created_at
347365FROM imdb .movies
348366LIMIT 10000 , 910 ;
367+ ```
349368
35036960秒も経たないうちに、ターゲットテーブルは Clicky の prolific な演技を反映するように更新されます。
351370
@@ -354,6 +373,7 @@ SELECT *
354373FROM imdb .actor_summary
355374ORDER BY num_movies DESC
356375LIMIT 5 ;
376+ ```
357377
358378``` text
359379┌─────id─┬─name────────────────┬─num_movies─┬──avg_rank─┬─unique_genres─┬─uniq_directors─┬──────────updated_at─┐
@@ -365,3 +385,4 @@ LIMIT 5;
365385└────────┴─────────────────────┴────────────┴───────────┴───────────────┴────────────────┴─────────────────────┘
366386
3673875 rows in set. Elapsed: 0.006 sec.
388+ ```
0 commit comments