AWS RedshiftのデータをQuickSightで可視化してみた

データベースのデータを可視化してみたらどうかと思って、AWS RedshiftのデータをQuickSightで可視化してみました。
2021.07.18

こんにちは、クラスメソッドのキム・ジェウク(Kim Jaewook)と申します。データベースのデータを可視化してみたらどうかと思って、AWS RedshiftのデータをQuickSightで可視化してみました。

IAM Roleを作成

まず、Redshiftで、S3ファイルの読み込むためには、権限が必要なので、IAMRoleを先に作成する必要があります。

{
    "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": [
                "*"
            ]
        }
    ]
}

まず、IamRoleの「ポリシー」で上のJsonコードを入れ、ポリシーを作成します。

そして、「ポリシーをアタッチします」ボタンを押して、イメージを同じポリシーを洗濯します。

  • AWSGlueConsoleFullAccess
  • cm-kimjaewook-redshift-role(先、Jsonで作成したポリシー)

Redshiftクラスターを作成して、「IAMロールの管理」に入って先、作成したIAMロールを追加ます。 Redshiftクラスターの作成は下を参考してください。

AWS Redshiftクラスターの作成

クラスターの構成はDefaultにしました。

データベースの設定は「マスターユーザー名」と、「マスターユーザーのパスワード」を設定して「クラスター作成」を押します。

少し待ってみるとクラスターの状態がAvailableになります。

続いて、エディタでクエリエディタを押した後、「データベースに接続」ボタンを押して、上のイメージどうりに入力してください。データベースユーザーは自分が設定したユーザー名を入力します。

データベースに接続したら、状態が「Connected」になり、左にはSelect databaseに「dev」が、Select schemaには「public」が現れます。

その次、QuickSightでRedshiftデータを参照するため、セキュリティグループを設定します。 「すべてのTPC」に設定します。

Redshiftのサンプルデータ

そして、Redshiftに入れるサンプルデータを用意します。自分はコロナの感染者のデータを持ってきました。

サンプルデータをもとにテーブルを作成します。そしてRunボタンを押すと、左に「quicksight_sample」 テーブルが追加されます。

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(自動検出)を押します。

イメージどうり入力して「接続を検証」を押します。「検証済み」になったら「データソースを作成」ボタンを押します。

quicksight_sampleを選択します。

「データクエリを直接実行」を選択して「Visualize」ボタンを押したらデータセットが作成されます。

可視化テスト

自分がフィールドを選択し、グラフを作ることができます。

参考