top of page
検索
  • 執筆者の写真toshiki nishio

QuickSightでユーザ公開中データセットの参照元テーブルに列を追加する時の手順

はじめに

 

Quicksightでユーザに公開中のデータセットの参照元テーブルに列を追加することがありました。その時の手順についてまとめたいと思います。


列追加する時の考慮事項

 
  • 更新対象のテーブルはユーザーが参照しているテーブルのため、ダウンタイムなしで項目追加後のテーブルに切り替えたい。

  • 追加する項目はテーブルの最後の項目ではなく、途中に追加したい。


イメージ図

 

初期状態

前提として、以下図のような構成を初期状態として想定しています。

実テーブルを参照するViewがあり、そのViewをQuick Sightが参照しています。


最終的な状態

最終的には実テーブル、Viewそれぞれに列を追加し、追加した列をQuicksightが参照できるようにしたい。(黄色が追加された列をイメージしていると思ってください)

列追加の手順

 

1. 実テーブルを複製し、Viewの参照先を切り替える


実テーブルを複製します。以下のようにctasを使うと楽。

create table table_bkup
as select * from table;

その後、viewの参照先を切り替え。

create or replace view table_view
as select
column_1,
(中略)
column_N
from table_bkup
with no schema binding;


2. 旧テーブルを削除し、列追加した新テーブルの作成


DROP TABLE table;
CREATE TABLE table
(列追加を行ったテーブル定義)
;

3. 新テーブルにデータを投入する


insert into table
select 
 (既存項目はそのままselect
 新規項目はnullや他テーブルと結合して値を入れるなどする)
from table_bkup
;


4. Viewを新テーブル参照に切り替え


create or replace view table_view
as select
column_1,
new_column_1,
new_column_2,
(中略)
column_N
from table
with no schema binding;

5. 複製したテーブルの削除

DROP TABLE table_bkup;

さいごに

 

今回の記事では、Quicksightでユーザに公開中のデータセットの参照元テーブルに列を追加した時の手順について紹介しました。

テーブルを複製してviewの参照先の切り替えることで、テーブルの更新中もユーザからはいつもと変わりなくデータを参照できます。


今回紹介した方法以外にも、ALTER TABLE ADD COLUMNを利用して列追加する方法もあるかと思います。

こちらの方が手順が少ないですが、テーブル更新中にユーザー影響がないかが検証できてないのとテーブルの最後に列追加されるのが嫌だったので、今回の方法を利用しました。

ALTER TABLE ADD COLUMNを使った更新を実施することがあれば、ブログで紹介したいと思います。




閲覧数:6回0件のコメント

最新記事

すべて表示

Amazon CognitoからAmazon SESを使ってメールを送信する

はじめに Amazon Cognito user poolsではユーザー登録時の招待メールやパスワードリセット時など、いくつかのタイミングでユーザーに対してメールを発出します。 このメールの送信機能は「Cognitoのデフォルト機能による送信」と「Amazon SESによる送信」のいずれかを選ぶことができます。 この2つの違いは以下のとおりです。 ※1 自分が受信できるメールアドレスであることが必

Comments


bottom of page