AWS Redshift 데이터를 QuickSight로 시각화

데이터베이스에 저장된 데이터를 시각화해서 본다면 어떨까? 라는 생각에 Redshift 데이터를 QuickSight로 시각화를 해보았습니다.
2021.07.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드 김재욱(Kim Jaewook)이라고 합니다. 데이터베이스에 저장된 데이터를 시각화해서 본다면 어떨까? 라는 생각에 Redshift 데이터를 QuickSight로 시각화를 해보았습니다.

IAM Role을 만들자

먼저 Redshift에서 S3 파일을 불러오기 위해서는 권한이 필요하기 때문에, IAM Role을 먼저 만들 필요가 있습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::*/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:*"
            ],
            "Resource": [
                "arn:aws:glue:*:983654105819:catalog",
                "arn:aws:glue:*:983654105819:database/spectrum",
                "arn:aws:glue:*:983654105819:table/spectrum/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListAllMyBuckets",
                "s3:GetBucketAcl",
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeRouteTables",
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcAttribute",
                "iam:ListRolePolicies",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "cloudwatch:PutMetricData"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

정책 생성에 들어가서 제이슨 코드를 넣어 정책을 하나 만듭니다.

그리고 역할 만들기에서 다음과 같은 정책을 선택하고 역할을 생성합니다.

  • AWSGlueConsoleFullAccess
  • cm-kimjaewook-redshift-role(방금 만들었던 정책)

Redshift 클러스터를 생성하고, IAM 역할 관리로 들어가서 좀 전에 만들었던 역할을 추가합니다. Redshift 클러스터 생성은 바로 아래 글을 참고하면 됩니다.

AWS Redshift 클러스터 생성

클러스터 구성은 디폴트 값으로 진행 했습니다.

마스터 사용자 이름과, 마스터 사용자 암호를 설정해주고 클러스터 생성을 눌러줍니다.

조금 기다려보면 클러스터가 활성화된 것을 볼 수 있습니다.

이후, 편집기에서 쿼리편집기를 누른 다음, 데이터베이스에 연결 버튼을 누르면 위 그림과 같은 화면이 나오게 됩니다. 디폴트값으로 생성했기 때문에 데이터베이스 이름에는 dev를 넣어주고 데이터베이스 사용자에는 좀 전에 설정한 사용자 이름을 넣어주면 됩니다.

데이터베이스 연결에 성공했다면 상단에 Connected라고 뜨고, 왼쪽 리소스에는 Select database에 dev가, Select schema에는 public가 뜹니다.

그 다음, QuickSight에서 Redshift 데이터를 참고하기 위해, 보안 그룹을 설정합니다. 모든 TPC에 모든 포트를 열어줍니다.

Redshift 샘플 데이터

이제 Redshift에 넣을 샘플 데이터가 있어야 하는데, 저는 공공데이터에서 대구 북구 코로나 확진자 데이터를 가져왔습니다.

해당 공공데이터를 바탕으로 테이블을 만들어줍니다. Run 버튼을 누르면 왼쪽 하단에 테이블이 추가됩니다.

copy public.quicksight_sample(city,date,numberofconfirmedcases)
from 's3://redshift-s3file/csvfile_folder/korea_corona.csv'
iam_role 'arn:aws:iam::좀 전에 만든 롤/cm-kimjaewook-redshift-role-test'
delimiter ','
IGNOREHEADER 1;

그리고 s3에 있는 csv파일을 불러와서 데이터를 추가합니다.

QuickSight 설정

QuickSight에 들어온 다음, 왼쪽 상단의 데이터 세트를 누르고 Redshift(자동 검색됨)을 클릭합니다.

위 그림과 같이 입력하고 연결 확인을 눌러줍니다. 연결이 확인 됐다면 데이터 원본 생성 버튼을 누릅니다.

방금 생성한 테이블 하나 밖에 없기 때문에 이대로 선택을 눌러줍니다.

데이터 직접 쿼리를 누르고 Visualize 버튼을 누르면 데이터 세트가 생성됩니다.

데이터 시각화 테스트

본인이 원하는 필드를 선택하고 시각적 객체 유형에서 그래프를 선택할 수 있습니다.

참고