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

大家午安 ~ 刚刚打开介面发文时,看到有 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 24 Big Data 5Vs – Veracity(准确性) Athena(1)

>>:  JavaScript的语法规定

电脑电源大4pin接口定义及风扇接法

大4pin针脚定义 1 - 12V 黄色线2 - 0V 黑色线3 - 0V 黑色线4 - 5V 红...

Swift纯Code之旅 Day28. 「新增闹钟功能(1) - Struct使用、取得UIDatePicker值」

前言 如果只有画面像的话,那也太弱了吧! 赶紧来实作新增闹钟的功能,做完拿去炫耀给边身边的人看! 实...

Day5 Next.js 介绍 - Production-ready 的 React.js 框架

这系列内容主要内容是在讲如何用 Next.js 取代 WordPress 前端,因此约 70% 内容...

[Day 19] tinyML开发好帮手─云端一站式平台Edge Impulse简介

自从上次在街边吃了一碗不怎麽地「杂碎面」,咖哩鱼蛋没鱼味,咖哩又不入味,失败!猪皮煮得太烂,没咬头,...

【Day28】Git 版本控制 - GitBook 简介

今天来介绍一个酷东西:GitBook 图片取自 GitBook 官网 GitBook GitBook...