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
410
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
370
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
220
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
sumikurayurie1125
0
290
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
300
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
14
8.5k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
730
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
200
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
110
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
sumikurayurie1125
0
950
Other Decks in Technology
See All in Technology
The Author Pays
hiccupps
0
110
会社説明資料_最新版
demaecan
0
32k
ライフワーク「猫でもわかるDirectConnect」
kentapapa
0
280
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.7k
基本から分かる!AWSセキュリティ運用の考え方と任せ方
cmusudakeisuke
1
450
属人化したISMS運用をGitHubとAIで仕組み化した1年間の記録
sioncojp
0
490
業務でAWSをあまり使っていない私が、AWSへのモチベを保つ方法
smt7174
0
180
IoTとは〜? 数字で見るSORACOM UG【SORACOM UG Explorer 2026】
soracom
PRO
0
320
Microsoft Entra Kerberos で実現するクラウド デバイス管理
tamaiyutaro
2
650
AI時代の組織作り:チーム開発から「個人×AI」への移行と、持続可能な「開発資本」の築き方
ham0215
2
320
An Introduction to Context Ontology Accelerator (teaching AI agents what your data means)
inariku
PRO
1
130
コードレビューをなくして見えたもの
henteko
0
140
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
HDC tutorial
michielstock
2
1k
Thoughts on Productivity
jonyablonski
76
5.5k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
630
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Testing 201, or: Great Expectations
jmmastey
46
8.4k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Producing Creativity
orderedlist
PRO
348
41k
BBQ
matthewcrist
90
10k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Tell your own story through comics
letsgokoyo
1
1.1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
570
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