Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデー...
Search
Y.Sumikura
January 17, 2023
Technology
400
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
360
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
210
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
sumikurayurie1125
0
290
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
290
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
13
7.1k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
710
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
200
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
91
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
sumikurayurie1125
0
950
Other Decks in Technology
See All in Technology
専門領域のAIをどう評価するか
bengo4com
2
310
Rust で関数型ドメインモデリング
takonda
0
170
Metadata - Section 1: HTML Basics
mohab1
0
130
僕のハーネスを紹介します
watany
3
120
フロントエンドカンファレンス関西2026 - 速すぎるUIに、待ち時間を
teamlab
PRO
0
190
WasmをRustにする
sansantech
PRO
0
290
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
120
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
210
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
170
DGX Spark でどこまでハッキングができるのか?
kash1064
3
1.4k
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
120
大型犬好きによるPugの紹介
yamanoku
1
160
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Music & Morning Musume
bryan
48
7.4k
Docker and Python
trallard
47
4.2k
Designing for Timeless Needs
cassininazir
1
530
Tell your own story through comics
letsgokoyo
1
1.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Google's AI Overviews - The New Search
badams
0
1.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
Ruling the World: When Life Gets Gamed
codingconduct
0
400
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
440
Product Roadmaps are Hard
iamctodd
55
13k
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