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
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデー...
Search
Y.Sumikura
January 17, 2023
Technology
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
Y.Sumikura
January 17, 2023
More Decks by Y.Sumikura
See All by Y.Sumikura
第103回 雲勉【オンライン】インフラエンジニアにおける ChatGPT の便利な使い方と注意点
sumikurayurie1125
1
320
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
190
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
sumikurayurie1125
0
260
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
270
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
13
4.9k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
680
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
190
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
82
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
sumikurayurie1125
0
930
Other Decks in Technology
See All in Technology
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
1
270
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
8
1.9k
2026TECHFRESH畢業分享會 - Lightning Talk - 資料也要 CI/CD? 用 Airbyte 自動化資料同步
line_developers_tw
PRO
0
1.3k
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
140
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
1
2.5k
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
120
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
140
あなたの知らないPDFのアクセシビリティ
lycorptech_jp
PRO
0
220
ロボティクスの技術 / Robotics Technology
ks91
PRO
0
110
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
230
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.6k
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
170
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
320
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
530
Building AI with AI
inesmontani
PRO
1
1.1k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
170
Documentation Writing (for coders)
carmenintech
77
5.4k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
590
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
210
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Transcript
第8回 雲勉LT【オンライン︓中級者向け】 AthenaでS3上のデータとDynamoDBのデータを結合する
⾃⼰紹介 2 • 野崎 ⾼弘(のざき たかひろ) • アイレット株式会社 クラウドインテグレーション事業部 プロジェクト企画推進セクション
インフラ技術 • インフラ構築・保守やSOCセキュリティアナリストをやってました • 現在は技術検証やドキュメント作業が主 • 趣味︓資格取得、⽝の散歩、ドラクエ、巨⼈ファン、ドラマ鑑賞 • 現在、AWSは10冠、GCPは4冠 3
本LTの⽬的 3 AthenaのFederated Query機能を利⽤してDynamoDBのデータをAthenaからクエリできるようにし、それ をS3のテーブルと結合して、QuickSightで可視化します。 様々なデータソースから、Athenaがそれらを結び付け、可視化までの橋渡しができるようになります︕
本LTの⽬的 4 ユースケースとして架空の販売情報から粗利を算出します。それぞれ別のデータソースに格納されているト ランザクションテーブルとマスターテーブルをAthenaで結合することで、粗利を算出するのが⽬的です。 1. AthenaのFederated QueryでDynamoDBのデータをクエリする 2. S3上のCSVデータをクエリする 3.
1.のDynamoDBのデータと、2.のS3上のCSVデータとを結合する 4. (時間があればQuickSightでじっくり可視化したかった) 本LTの対象者︓データ分析のことはなんとなく知っているが、まだ実際にAthenaをそれほど触ったことがな い初⼼〜中級者。AWS Certified Data Analytics – Specialty試験向け (参考元ハンズオンURL)https://aws.amazon.com/jp/blogs/news/athena-federated-query- dynamodb-quicksight/
全体像 5
Athena とは︖ 6 標準的なSQLを使ってS3のデータを直接クエリするサービス • インタラクティブなクエリを投げてデータの分析を⾏うことができるサーバレスサービス • JDBC / ODBC
/ API経由でBIツールやシステムと連携 • オープンソースのTrinoおよびPrestoエンジン、Apache Sparkフレームワーク上に構築 • ⼤規模データに対しても⾼速なクエリ • SQLクエリまたはPythonでMLモデルを使⽤して、 異常検出、顧客コホート分析、売上予測などの 複雑なタスクを簡素化 https://d1.awsstatic.com/products/athena/product-page-diagram_Amazon-Athena-Connectors%402x.867e3023b0e6b33862d65aa8e786cce46b88cb61.png
Athena フェデレーテッドクエリとは︖ 7 S3上のデータ以外に、多数のデータソースに保存されているデータをまたがるSQLを実⾏する機能 • リレーショナル、⾮リレーショナル、オブジェクト、およびカスタムデータソースに保存されているデー タの全体でSQLクエリを実⾏できる • データソースコネクタ(ターゲットデータソースと Athena間での変換を実⾏できるコード)を使⽤する
• アクセス⽤のLambda関数を準備することで、多様な データソースへのクエリを可能 • カスタムコネクタを作成することで、独⾃のデータソース にも対応可能 IUUQTCMPHHHFODPKQFOUSZHPPHMFBQJQSJWBUFTFSWJDFDPOOFDUFYQMBJOFE
作業の流れ 8 1. Athenaワークグループを作成 2. AthenaのDynamoDBのデータソースへのコネクタを作成 3. 2.で作成したLambda関数ddbcatalogを指定してデータソースを作成 4. Glueクローラーの作成
(Demo) 5. Glueクローラーの実⾏ 6. DynamoDBのデータ(transaction)をAthenaからクエリする 7. S3のデータ(master)をAthenaからクエリする 8. S3上のデータとDynamoDBの表を結合して表⽰する 9. QuickSightで利益の時系列推移を折れ線グラフで表⽰
事前準備 9 • transaction表の⽤意(DynamoDB) DynamoDBに、transactionテーブル(売り上げトランザクションを⼀意に指すTransaction ID毎に Item ID(売れたアイテム) 、Region, Country(販売した地域)や、Sales
Channel(販売チャンネル)、オーダーと出 荷⽇時、units sold(アイテムの販売個数)等が格納されている販売記録)を配置。アイテムの詳細はmaster表 にあり、transactionにはありません。 • master表の⽤意(S3) S3のathena-ws-532152701269-ap-northeast-1バケットのmasterフォルダに、master.csvファイル(各 アイテムID毎にItem Type(アイテム種名)、Unit Price(販売単価)とUnit Cost(単体コスト)が格納されている 商品マスタ表)を配置
作業⼿順 10 1. Athenaのワークグループを作成 エンジンタイプや エンジンバージョン(最新はバージョン3) を指定 クエリ結果を保存するS3の場所も指定
作業⼿順 11 2. AthenaのDynamoDBのデータソースへのコネクタを作成 AthenaDynamoDBConnectorというLambdaアプリケーション を作成します。 Spillバケット︓フェデレーテッドクエリのLambda関数の中の メモリやストレージにデータが⼊りきらなかった場合に、 ⼀時的なデータ置き場として利⽤されるバケット Athenaカタログ名︓Athenaでこのカタログに付ける名前。関数名
としても使⽤されます。
作業⼿順 12 3. 2.で作成したLambda関数ddbcatalogを 指定して、データソースを作成
作業⼿順 13 ・Glueクローラーでカタログ登録する AthenaでS3上のファイルにクエリする場合、その情報をGlueカタログに登録する必要があります。 Athenaは、テーブルや列の名前などのメタデータを保存するために、Glueデータカタログを使⽤して、S3 に保存されたデータに接続します。 (Athenaがデフォルトで利⽤している”AwsDataCatalog”はGlueデータカタログ機能を参照しています。) Glueクローラーを使って、指定したデータソースを調べて、データカタログに登録します。
作業⼿順 14 4. Glueクローラーの作成 データソースの追加 出⼒とスケジューリング
デモ 15 ここからデモも交えて実際の動きを⾒ながら説明します。 (bigint型は、RDBを操作するSQLに⽤意されたデータ型の⼀つで、8バイトの整数を格納する)
確認 16 最後に、DynamoDB上のtransaction表とS3上のmaster表をジョイン(結合)しました。 これは、2つの表を結合し、transaction表にあるUnits Sold(販売個数)を、master表のUnit Price(販売単価) やUnit Cost(単体コスト)と掛け算することで、 トランザクション当たりのトータルの売り上げ(Total Revenue=Units
Sold×Unit Price) かかったコスト(Total Cost=Units Sold×Unit Cost) その差分である粗利(Total Profit=Total RevenueTotal Cost) を算出するクエリです。 SQLの最後に LIMIT 10 とあり、結果のうち10⾏までが返るようになっています。
None