iT邦幫忙

2021 iThome 鐵人賽

DAY 22
1
AI & Data

Data on AWS - 實作建立 Data Analytics Pipeline系列 第 22

【Day 22】 實作 - 如何在 AWS Quicksight Join 不同資料源

  • 分享至 

  • xImage
  •  

大家午安 ~ 剛剛打開介面發文時,看到有 iThome 邦友訂閱文章,真的是無比開心 Q
感謝大家的不嫌棄 /images/emoticon/emoticon02.gif /images/emoticon/emoticon02.gif /images/emoticon/emoticon02.gif


昨天我們已經『啟用 CloudFront 日誌』,今天我們則要來討論『如何在 AWS Quicksight Join 不同資料源』,在要進行實作以前,要先建立 CloudFront 日誌的資料表,故大家可以參考『Day 18』~『Day 19』文章將 CloudFront Log 轉換成 Parquet 格式、調整 Partition 以及自動建立資料表
或者我們也可以於 Athena 手動執行 SQL 語法建立資料表 [1]

CREATE EXTERNAL TABLE IF NOT EXISTS default.cloudfront_logs (
  `date` DATE,
  time STRING,
  location STRING,
  bytes BIGINT,
  request_ip STRING,
  method STRING,
  host STRING,
  uri STRING,
  status INT,
  referrer STRING,
  user_agent STRING,
  query_string STRING,
  cookie STRING,
  result_type STRING,
  request_id STRING,
  host_header STRING,
  request_protocol STRING,
  request_bytes BIGINT,
  time_taken FLOAT,
  xforwarded_for STRING,
  ssl_protocol STRING,
  ssl_cipher STRING,
  response_result_type STRING,
  http_version STRING,
  fle_status STRING,
  fle_encrypted_fields INT,
  c_port INT,
  time_to_first_byte FLOAT,
  x_edge_detailed_result_type STRING,
  sc_content_type STRING,
  sc_content_len BIGINT,
  sc_range_start BIGINT,
  sc_range_end BIGINT
)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t'
LOCATION 's3://<<存放CloudFront的S3 bucket名稱>>/cloudfront/'
TBLPROPERTIES ( 'skip.header.line.count'='2' )

完成了資料表的建立後~ 我們就可以開始實作 - 『如何在 AWS Quicksight 進行 Join 不同資料源』
那我們就開始吧 GOGO


步驟一、搜尋 Quicksight 服務,點選 New dataset、來源選擇 Athena

https://ithelp.ithome.com.tw/upload/images/20211006/20131073i262OqmFsx.jpg


步驟二、建立一個資料來源( data source )

https://ithelp.ithome.com.tw/upload/images/20211006/20131073OTFEa7ksS6.png


步驟三、接著點擊 x 離開視窗,回到原 VPC Log 的 Dataset 進行編輯

https://ithelp.ithome.com.tw/upload/images/20211006/20131073L8KqJbac5Z.jpg


步驟四、點選 Add data 並選擇 data source 選項後,選擇剛剛創建的 data source 名稱

https://ithelp.ithome.com.tw/upload/images/20211006/20131073NTF5LY3cXF.png


步驟五、點選 Use custom SQL 並輸入以下內容後按 Apply

https://ithelp.ithome.com.tw/upload/images/20211006/20131073ajxJeMCI2Z.png


步驟六、這時候你會看到有兩個資料來源,點選紅色圈圈

https://ithelp.ithome.com.tw/upload/images/20211006/20131073IBn8HZoNN9.png


步驟七、設定 Join 不同資料源

這邊就是用來設定我們要如何合併資料源的方法以及用哪些欄位進行 Join
下方為 Join clauses,就是設定若當 vpc log 的 xx欄位與 cloudfront log xx欄位內容相同時,我們要進行Join
而 Join Type 則是 Join 的類型,分成 Inner、Left、Right、Full
舉個例子:
這是產品列表,裡面有兩個欄位(ID、Product Name),並存放兩筆紀錄

ID Product Name
Product001 洗碗精
Product002 洗衣精

這是產品訂單的資料表,裡面有兩個欄位(Client Name、ID),並存放兩筆紀錄

Client Name ID
Dorothy Product001
Kurama Product003

今天我想知道每個客戶購買的產品名稱,故我透過 ID 將兩個資料表合併以得到 Product Name

  • 若採用 Inner Join,那麼結果會是這樣:
Client Name ID Product Name
Dorothy Product001 洗碗精

  • 若採用 Left Join (以產品訂單為主),那麼結果會是這樣:
Client Name ID Product Name
Dorothy Product001 洗碗精
Kurama Product003

  • 若採用 Right Join (以產品訂單為主),那麼結果會是這樣:
Client Name ID Product Name
Dorothy Product001 洗碗精
Product002 洗衣精

  • 若採用 Full Join (以產品訂單為主),那麼結果會是這樣:
Client Name ID Product Name
Dorothy Product001 洗碗精
Kurama Product003
Product002 洗衣精

Join 的方法就依據每個人的需求來選擇,這邊我就選擇 Inner Join
https://ithelp.ithome.com.tw/upload/images/20211006/20131073Dxdnj2YObV.png


選擇完後按儲存,你就可以看到兩個資料源已成功 Join 起來
https://ithelp.ithome.com.tw/upload/images/20211006/20131073N63JnsRzYh.png

那接下來就是可以依據大家的需求開始進行儀表板的建置啦~
https://ithelp.ithome.com.tw/upload/images/20211006/2013107302NnKKwwyg.png


今天就先這樣,明天我們就會來討論『如何啟用 WAF 日誌』,明天見囉 : D ~

如果有任何指點與建議,也歡迎留言交流,一起漫步在 Data on AWS 中。

參考&相關來源:
[1] 為 CloudFront 日誌建立資料表
https://docs.aws.amazon.com/zh_tw/athena/latest/ug/cloudfront-logs.html


上一篇
【Day 21】 實作 - 啟用 AWS CloudFront 日誌
下一篇
【Day 23】 AWS Kinesis - Data Streams vs Data Firehose 兩者差異
系列文
Data on AWS - 實作建立 Data Analytics Pipeline30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言