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を使った更新を実施することがあれば、ブログで紹介したいと思います。




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

最新記事

すべて表示

Quick Sightの分析のクロスアカウントコピー

はじめに 今回のブログではQuick Sightで作成した分析をクロスアカウントコピーするための方法を紹介します。 開発環境で作成した分析を本番環境にコピーしたい時などにこの方法が使えるのではないかと思います。 2024/07/12追記...

Amazon Redshiftのクエリがなぜかたまに遅くなる原因

始めに 弊社では、膨大なデータの夜間バッチ処理にRedshiftを採用しています。 適材適所でサービスを選択しており、夜間以外はお役御免で停止しておき、費用面を抑えるよう工夫しています。 メンテナンスウィンドウも設けて運用していて概ね問題なく稼働しています。...

Comments


bottom of page