はじめに
フラッタンテーブルのリフレッシュ(非正規列に対するデータ更新)方法についてご紹介します。
基本的なフラッタンテーブルの紹介や作成方法については以下の記事をご参照ください。
フラッタンテーブルとは
https://www.ashisuto.co.jp/cm/analytics-database/flattened-table1.html
フラッタンテーブルへのリフレッシュ方法
フラッタンテーブルへのリフレッシュ方法は以下の3つがあります。
①DEFAULT
②SET USING
③DEFAULT USING
リフレッシュ方法はフラッタンテーブルの作成(CREATE TABLE)時のデータ定義で指定します。
どのリフレッシュ方法を採用するかは、データの更新量やマスタテーブルの更新有無等を考慮し検討します。
各リフレッシュ方法の特徴について、以下で説明していきます。
DEFAULTの特徴
・フラッタンテーブルへデータがロードされると、自動的に非正規化列もデータが更新される
・SET USINGと比較すると、非正規化列へのデータ更新が高速
・非正規化列のデータを更新するタイミングは制御できない
・マスタテーブルを更新した場合は、手動でフラッタンテーブルを更新する必要がある
SET USINGの特徴
・フラッタンテーブルへデータがロードされても、非正規列のデータは更新されない
・REFRESH_COLUMNS関数により任意のタイミングで非正規化列のデータを更新できる
・DEFAULTと比較すると、非正規化列へのデータ更新が遅くなる
・マスタテーブルを更新した場合、REFRESH_COLUMNS関数により自動で非正規化列のデータが更新される
DEFAULT USINGの特徴
・DEFAULTとSET USINGの組み合わせ方式
・フラッタンテーブルへデータがロードされると、自動的に非正規化列もデータが更新される
・REFRESH_COLUMNS関数により任意のタイミングで非正規化列のデータを更新できる
REFRESH_COLUMNS関数
SET USINGもしくはDEFAULT USINGにて構成された非正規化列のデータはREFRESH_COLUMNS関数を使って手動することができます。
構文
REFRESH_COLUMNS ( ‘table‑list’, ‘[column‑list]’
[, ‘[refresh‑mode ]’ [, min‑partition‑key, max‑partition‑key] ])
パラメータ | 説明 |
|---|---|
table‑list | リフレッシュ対象のテーブルを指定します。 |
column‑list | リフレッシュ対象の列名を指定します。 |
refresh‑mode | リフレッシュの方式を指定します。 |
min‑partition‑key | リフレッシュ対象のパーティションを指定します。 |
実行例
以下を条件として、REFRESH_COLUMNS関数を実行します。
・対象テーブル:ssbm.lineorder_p
・対象パーティション:「199801」から「199808」
・リフレッシュ対象の非正規化列:lo_region列およびlo_category列
・リフレッシュのモード:REBUILD
dbadmin=> SELECT REFRESH_COLUMNS(
dbadmin(> 'ssbm.lineorder_p',
dbadmin(> 'lo_region,lo_category',
dbadmin(> 'REBUILD',
dbadmin(> '199801', '199808'
dbadmin(> );
REFRESH_COLUMNS
---------------------------
refresh_columns completed
(1 row)参考情報
フラッタンテーブルとは
https://www.ashisuto.co.jp/cm/analytics-database/flattened-table1.html
フラッタンテーブルの検索性能(Vertica 8.1新機能)
https://www.ashisuto.co.jp/cm/analytics-database/flattened-table-query.html
検証バージョンについて
この記事の内容はVertica 9.2で確認しています。
更新履歴
2020/1/10 本記事を公開


