Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
BigData JAWS #16 RDB x DMS x QuickSightでDBデータを可視化した話
Search
Masanori Yamaguchi
March 01, 2021
Technology
0
260
BigData JAWS #16 RDB x DMS x QuickSightでDBデータを可視化した話
2021/03/01 BigData-JAWS 勉強会#16 登壇時の資料です。
https://jawsug-bigdata.connpass.com/event/200841/
Masanori Yamaguchi
March 01, 2021
Tweet
Share
More Decks by Masanori Yamaguchi
See All by Masanori Yamaguchi
AWS Application Composer の VS Code拡張 を触ってみた / AWS Application Composer with VS Code Tools
kinunori
0
24
フォージビジョン AWS re:Invent 2023 recapイベント / ForgeVision, AWS re:Invent 2023 recap
kinunori
0
100
JAWS-UG初心者支部 AWS re:Invent 2023 Dr.Werner VogelsキーノートをAWS初心者向けに振り返る
kinunori
0
10
JAWS-UG初心者支部 / JAWS-UG Beginners Branch re:Invent recap
kinunori
2
480
re:Invent体験をより充実したものにする3つのキーワード / re:invent 2023 standby
kinunori
0
940
あなたの知らない 軟式バットの世界(Cloud in the Camp 勝浦) / Cloud in the Camp Katsuura
kinunori
0
190
2023/6/29 AWS re:Inforce 2023 re:Cap Seminar
kinunori
0
230
JAWS-UG千葉支部オンライン#21 -re_Inforce現地から送るライブイベント- / World's earliest re_Inforce 2023 recap
kinunori
0
30
JAWS-UG 千葉支部 #20 -AWSではじめるクラウドセキュリティ- / JAWS-UG CHIBA Cloud Security Special
kinunori
0
230
Other Decks in Technology
See All in Technology
長期運用プロジェクトでのMySQLからTiDB移行の検証
colopl
2
810
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
240
Databricks における 『MLOps』
databricksjapan
2
160
アクセス制御にまつわる改善 / Improving access control
itkq
0
470
WebアプリケーションにおけるPDOの使い方入門 / phpcon odawara 2024
meihei3
2
440
LLM とプロンプトエンジニアリング/チューターをビルドする / LLM and Prompt Engineering and Building Tutors
ks91
PRO
0
250
「スニダン」開発組織の構造に込めた意図 ~組織作りはパッションや政治ではない!~
rinchsan
3
460
2024/4/26 コンピュータ歴史博物館解説告知
toshi_atsumi
0
210
20240418_Google ColabにLLMが搭載されたようなのでPython x データ分析の勉強方法を考えてみる
doradora09
0
120
NgRx Signal Store
rainerhahnekamp
0
140
ServiceNow Knowledge Learning Rise up
manarobot
0
190
〜小さく始めて大きく育てる〜データ分析基盤の開発から活用まで
kniino
0
2.1k
Featured
See All Featured
KATA
mclloyd
14
12k
We Have a Design System, Now What?
morganepeng
42
6.7k
GraphQLとの向き合い方2022年版
quramy
31
12k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.4k
A better future with KSS
kneath
231
16k
Done Done
chrislema
178
15k
Statistics for Hackers
jakevdp
789
220k
Practical Orchestrator
shlominoach
181
9.7k
Making Projects Easy
brettharned
108
5.5k
Building an army of robots
kneath
300
41k
Debugging Ruby Performance
tmm1
70
11k
Clear Off the Table
cherdarchuk
83
310k
Transcript
1 RDB x DMS x QuickSightで 基幹DBのデータを可視化した話 - がんばれ QuickSight
- 2021/03/01 BigData-JAWS 勉強会#16 JAWS-UG 千葉⽀部 ⼭⼝正徳
2 名前:⼭⼝ 正徳 JAWS-UG千葉、Fin-JAWS コアメンバー JAWS DAYS 2021 実⾏委員⻑ 所属:フォージビジョン株式会社
2020 Japan APN Ambassador ⾃⼰紹介 好きなAWSサービス:ECS Fargate, Lambda 仕事:AWS事業管理、コンテナに関わる案件推進
3 https://aws.amazon.com/jp/builders-flash/202103/jawsdays-yamaguchi-interview/
4 1. 背景とアーキテクチャ 2. 直⾯した課題と解決⽅法 3. ここができるともっと良くなる、QuickSight︕ お話しすること
5 1.背景の説明
③将来的には、データレイク化の構想 ②BIツールアクセス先であるDB負荷の軽減 (DB⾃体のリプレイスは⾏わない) ①BIツールの刷新 1. 背景 ⇒ ユーザ端末から直接DB参照しているため スケールしない。 ⇒
BI⽤のデータリポジトリを作成 ⇒ データをS3へ蓄積し、今後他データ蓄積も視野 6 ユーザ端末内の BIツール ① ②、③ DB ミドルウェア
1. アーキテクチャ 7 z Glueジョブ リアルタイムで DBデータ差分抽出 S3 (⽣データ⽤) QuickSight
DMS S3 (分析データ⽤) DBデータ差分 をCSV出⼒ Athena SQLクエリ 分析データを 更新 差分CSVの 取り込み データ抽出 分析/可視化 データ編集 将来的には 他RDB等とも連携 DB ミドルウェア BIユーザ APIでデータセット更新 現⾏DB環境 Lambda DB負荷を最⼩限にするため、 連携テーブルは絞り込み コスト⾯を意識し、 ジョブを分けすぎない Athenaの多重度や S3負荷も意識し、 API実⾏間隔も考慮
8 2. 直⾯した課題と解決⽅法
9 2. 直⾯した課題と解決⽅法 プロジェクトを進める上で直⾯した課題と、その課題をどのように 回避したかを説明していきます。 このあたり 現⾏DB、DMS、Glueジョブと⾊々あるのですが、 なぜか普段あまり語られることが多くないQuickSight 関連に 絞ってお話しします。
10 2. 直⾯した課題と解決⽅法 ① SPICE のデータ更新間隔への挑戦 ② ⼤⼈数へのダッシュボード共有⽅法 ③ ダッシュボードのデータ更新⽇時をユーザに⾒せたい
④ ピボットのフィールドは20 列制限内での表現
11 要件︓ 『QuickSightに、1時間未満の間隔で、最新の分析データを インポートすること』 ここの話 2. SPICE のデータ更新間隔への挑戦
2. SPICE のデータ更新間隔への挑戦 ▪背景︓ ・ 今回はSPICEを利⽤ ・ 予めAthenaを介しSQLクエリで分析データを抽出し、SPICE内にインポートするつくり ・ SPICE
に取り込む場合、QuickSight上での表⽰データはSPICEへインポート時点と なるため、定期的にSPICE内のデータ最新化が必要 ※可能な限り、早いサイクルでSPICEのデータ最新化したい QuickSight Athena SQL SQL結果 をインポート SPICE S3 (分析データ⽤) ⾼速に 可視化 × 毎次SQLクエリ実⾏は 性能⾯で難 SPICEとは ・QuickSight に内蔵されたインメモリ型のデータベース ・分析データをSPICE にインポートすることで、SPICE内の インポートデータに対し分析/可視化を可能。そのため⾼速。
13 ▪解決⽅法︓ ・QuickSightの各データセットに対しCreateIngestion API(※)を発⾏することで、 任意タイミングでSPICE内データを⼿動更新できる。更に⾃動更新とも組み合わせる。 ※CreateIngestion APIとは https://docs.aws.amazon.com/ja_jp/quicksight/latest/APIReference/API_CreateIngestion.html ▪課題︓ ・QuickSight
標準機能では、SPICEのデータ⾃動更新間隔が最短1時間 (Enterprise版) 注意事項: ⼿動での SPICE 更新の実⾏回数制限について ・現状⼿動での SPICE 更新の実⾏回数には制限があり、24時間につき 32 回 まで。 ・QuickSight標準機能での⾃動更新は本回数には含まれないため、⾃動更新(最短1時間に1回)と ⼿動更新(CreateIngestion)を組み合わせることで、最⼤24 時間につき 56 回の更新が可能。 2. SPICE のデータ更新間隔への挑戦
14 要件︓ 『権限変更の運⽤作業を、カスタマイズせずに運⽤⼯数を落とすこと』 ここの話 2.⼤⼈数へのダッシュボード⼀括共有⽅法
15 ▪背景︓ • QucikSightは、ダッシュボードを共有する際に、どのユーザに公開するか範囲指定が必要 • 今回の案件では、将来的にユーザ数が300⼈以上になること、ダッシュボード数が 増加する計画があった ▪課題︓ • ダッシュボード追加、組織異動等(ユーザの権限変更)時の運⽤として、
都度コンソール画⾯でユーザ単位でダッシュボード公開範囲を変更するのは 運⽤負荷も⾼く、管理も煩雑になる可能性がある 2.⼤⼈数へのダッシュボード⼀括共有⽅法
16 ▪解決⽅法︓ • 実はQuickSightのユーザに対し、グループ設定が可能 ※ QuickSightのGUIコンソールではグループ作成画⾯は存在しない • ユーザをグループに所属させ、グループに対しダッシュボードを共有することによって、 そのユーザーグループに含まれる全てのユーザに共有可能 •
グループ⾃体の管理は、現時点ではAWS CLI(API) を使う必要があり 分類 アクション QuickSightコンソール AWS CLI ユーザ ユーザの作成、削除 ◦ ◦ ユーザ指定でダッシュボード共有 ◦ ◦ グループ グループの作成、削除 × ◦ ユーザーをグループへ追加、削除 × ◦ グループ指定でダッシュボード共有 ◦ ◦ ユーザA ユーザB ユーザC ダッシュボード1 ダッシュボード2 Group1 Group2 × 2.⼤⼈数へのダッシュボード⼀括共有⽅法
17 要件︓ 『表⽰しているQuickSight データが、いつ最新化したのかをユーザ が確認できること』 ここの話 2.ダッシュボードのデータ更新⽇時をユーザに⾒せたい
18 ▪背景︓ • SPICEを利⽤する場合、データは定期的に最新化する必要あり • ⼀般ユーザ(閲覧者権限を前提)はQuickSight ダッシュボード上でデータの 最新⽇時がわからないと業務に影響を及ぼす可能性がある ▪課題︓ •
⼀般ユーザから⾒ると、QuickSight上のデータはいつ取り込まれたデータであるかを、 明⽰的には確認できない(特に問題が発⽣し、データ鮮度が落ちた場合の懸念) ※ちなみに、作成者以上の権限である場合は、データセットへの権限を付与すれば ダッシュボード右上の「データ」にて最終更新⽇時を確認可能 2.ダッシュボードのデータ更新⽇時をユーザに⾒せたい
19 ▪解決⽅法︓ • SPICEのデータ⼿動更新処理のプログラム内で、更新⽇時をS3上にファイルとして出⼒ • ダッシュボード上でユーザが視認可能な箇所に、対象S3ファイルの中⾝を表⽰ z QuickSight S3 (分析データ⽤)
Athena SQLクエリ 分析データ 更新 API実⾏ Lambda 更新 ⽇時 分析 データ群 ⽣成 QucikSight ダッシュボード 取得した更新⽇時 を表⽰ 2.ダッシュボードのデータ更新⽇時をユーザに⾒せたい
20 要件︓ 『ピボットのフィールド数上限に負けずに、お客様の要望する ダッシュボードを表現すること︕』 ここの話 2.ピボットのフィールド20制限内での表現
21 ▪背景︓ • ピボットテーブルのフィールドには、QuickSightの仕様上、⾏/列ともに上限20の 制約がある。 ▪課題︓ • お客様が現⾏で確認されているBIをそのまま移⾏すると、⾏が21フィールド以上 となり再現できない。 2.ピボットのフィールド20制限内での表現
22 ▪解決⽅法︓ • 上限緩和はできないので、データ表⽰の⽅法を変えて対応するしかない 具体的には・・・ • ⽤途など状況を上、⼀部データをAthena側のSQLで結合してフィールド数を節約 例えば、住所3 + 住所2
+ 住所1 = 住所として結合 • 集計が必要ないデータなどは、ピボッドテーブルではなく、テーブル(⾏/列の制限なし)を 代替実装することで対応する 2.ピボットのフィールド20制限内での表現
23 3.ここができるともっと良くなる、 QuickSight︕
24 ◆機能上の制約︓ • 現時点では合計値は、ピボットテーブルでは最下部に表⽰される。 • 最上部、最下部を任意に選択できると使い勝⼿がよくなって嬉しい。 3. 「合計値をピボットテーブルの最上部に表⽰したい」 最下部までスクロールしないと 合計が確認できない。
データ量が多い場合つらい
25 ◆機能上の制約︓ • QuickSight コンソールへのアクセス元 IP アドレスからアクセスを制限は不可。 ※もし実現する場合の現状の代替︓ ①QuickSight 操作⽤のIAM
ロールを⽤意し、ロール切り替えに IP 制限 ユーザをIAMユーザとして払い出し、マネジメントコンソール経由でIAM ロール切り替えにてアクセス ②SSOの仕組みを作り、IdP 側で制御 外部 IdP による SAML 2.0 を利⽤した SSO を構築し、IdP 側で IP 制限を⾏う 3. 「アクセス元のIP制限をしたい︕」
26 ◆機能上の制約︓ • 現時点において CloudWatch メトリクス、アラームなどを⽤いて、 SPICEの空きサイズ閾値を超えた際にアラートを出せない。 • SPICE 容量を取得するために利⽤可能なAPI
、メトリクスがないため。 ※ SPICEは⾃動拡張ではなく、容量を購⼊型のため、運⽤としてSPICE空き容量の注視が必要 3. 「SPICEの容量監視をするインターフェースがほしい︕」
27 ◆機能上の制約︓ • 検索画⾯にて、“ダッシュボード”、”分析”、”データセット”を指定し、絞り込み検索ができない。 ( 横断的に検索されるため、数が多くなった場合、結果が⾒づらい場合がある) ※ 代替として、検索結果のURLを強引にentityTypeを指定し絞ることは可能。 例︓デフォルト︓ https://us-east-1.quicksight.aws.amazon.com/sn/search?keyword=XXX&entityType=ALL
変更後︓ entityType=DASHBOARD entityType=ANALYSIS entityType=DATASET 3. 「検索のGUIインターフェースに機能追加してほしい︕」
28 本編はここまで
JAWS DAYS 2021 re:Connect 2021年3⽉20⽇(⼟) 10:00〜18:00 オンラインにて開催 #jawsdays2021 #jawsug https://jawsdays2021.jaws-ug.jp/
JAWS DAYS 2021 - re:Connect - とは ・AWSユーザのエキスパートからノウハウがつまったセッション ・エンタープライズ企業からスタートアップまでのAWSユーザ事例 ・初⼼者向けセッションとハンズオン
・みんなで楽しめる参加型コンテンツ と、盛りだくさんのオンラインコミュニティイベントです。 普通の勉強会では聞けない、ここだけの話も聞けるかも︕︖
イベント開催前も楽しんじゃおう︕ JAWS DAYS 2021 - re:Connect - オリジナルグッズがもらえる 応援キャンペーン開催中︕(詳しくは jawsdays
note で検索)
申し込んだら絶対参加︕とは⾔いません。 「とりあえず申し込んでみようかな」 という軽い気持ちで⼤丈夫です。 みなさん、オンライン会場でお会いしましょう︕
JAWS DAYS 2021 re:Connect 2021年3⽉20⽇(⼟) 10:00〜18:00 オンラインにて開催 #jawsdays2021 #jawsug https://jawsdays2021.jaws-ug.jp/