😺

QuickSight Snapshot Export API を利用してみた

2024/01/19に公開

やったこと

  • Snapshot Export API を使ってダッシュボードのテーブルチャートのデータをCSV DLした。
  • 詳細は こちら のブログを参照
  • 出力するテーブルチャート

手順

  1. 雛形からエクスポートに利用するJSONファイルを作成する。

雛形

{
  "AwsAccountId": "<<aws-account-id>>",
  "DashboardId": "<<dashboard-id>>",
  "SnapshotJobId": "IncomeStatement-<<Year>>-<<Region>>",
  "UserConfiguration":{
        "AnonymousUsers":[{}]
    },
  "SnapshotConfiguration":{
        "FileGroups":[
                {
                    "Files":[
                        {
                            "SheetSelections":[
                                    {
                                        "SheetId":"<<dashboard-id>>_<<Sheet-id>>",
                                        "SelectionScope":"ALL_VISUALS"
                                    }
                            ],
                            "FormatType":"PDF"
                        }
                    ]
                }
            ],
        "DestinationConfiguration":{
            "S3Destinations":[
                                {
                                "BucketConfiguration": { "BucketName" : "qs-paginated-rpt-results" , "BucketPrefix" : "IncomeStatement/<<Year>>" , "BucketRegion" : "<<bucket-region>>" } 
                                }
                              ]
        },
        "Parameters": {
            "StringParameters":[{"Name":"pRegion","Values":["West"]}],
            "IntegerParameters":[{"Name":"pClosingMonth","Values":[2023]}]
        }
    }
}

実際に使ったテンプレート
今回は対象のダッシュボードで Region と Industry のパラメータが設定されており、フィルタと連動するようになっている。テンプレートでは、パラメータも設定の上、意図通りにフィルタされて出力されるか確認する。

{
  "AwsAccountId": "123456789012",
  "DashboardId": "1d924fe4-fef9-43b6-ba31-c160c419a00a",
  "SnapshotJobId": "SaaS-Sales-Order-History",
  "UserConfiguration":{
        "AnonymousUsers":[{}]
    },
  "SnapshotConfiguration":{
        "FileGroups":[
                {
                    "Files":[
                        {
                            "SheetSelections":[
                                    {
                                        "SheetId":"1d924fe4-fef9-43b6-ba31-c160c419a00a_8ba7ead3-d1f8-4808-9675-b585f03e3bd7",
                                        "SelectionScope":"SELECTED_VISUALS",
                                        "VisualIds": [
                                            "1d924fe4-fef9-43b6-ba31-c160c419a00a_ef4ebf7a-828b-4b14-8131-dd0e12a5d476"
                                        ]
                                    }
                            ],
                            "FormatType":"CSV"
                        }
                    ]
                }
            ],
        "DestinationConfiguration":{
            "S3Destinations":[
                                {
                                "BucketConfiguration": { "BucketName" : "sample" , "BucketPrefix" : "tmp/qs-snapshot-api" , "BucketRegion" : "us-east-1" } 
                                }
                              ]
        },
        "Parameters": {
            "StringParameters":[{"Name":"industry","Values":["Finance"]},{"Name":"region","Values":["APJ"]}]
        }
    }
}
  1. CLIから Export API 実行
    ※ ちなみに24時間以内に再実行する場合はJob ID は重複していはいけない。
aws quicksight start-dashboard-snapshot-job --region us-east-1  --cli-input-json file://qs-snapshot-api-test.json 

なので、テスト等で何度も実行・確認したい場合は、以下のようにJob IDを引数にすると良い。

aws quicksight start-dashboard-snapshot-job --region us-east-1 --snapshot-job-id SaaS-Sales-Order-History1  --cli-input-json file://qs-snapshot-api-test.json

結果

{
    "Status": 200,
    "Arn": "arn:aws:quicksight:us-east-1:123456789012:dashboard/1d924fe4-fef9-43b6-ba31-c160c419a00a/snapshot-job/SaaS-Sales-Order-History",
    "SnapshotJobId": "SaaS-Sales-Order-History",
    "RequestId": "2173a144-75c5-48e2-8583-949d6c076832"
}

非同期の為、ステータス確認APIが別途用意されている。

aws quicksight describe-dashboard-snapshot-job --aws-account-id 123456789012 --region us-east-1 --dashboard-id 1d924fe4-fef9-43b6-ba31-c160c419a00a --snapshot-job-id SaaS-Sales-Order-History
{
    "AwsAccountId": "123456789012",
    "DashboardId": "1d924fe4-fef9-43b6-ba31-c160c419a00a",
    "SnapshotJobId": "SaaS-Sales-Order-History",
    "UserConfiguration": {
        "AnonymousUsers": [
            {
                "RowLevelPermissionTagKeys": []
            }
        ]
    },
    "SnapshotConfiguration": {
        "FileGroups": [
            {
                "Files": [
                    {
                        "SheetSelections": [
                            {
                                "SheetId": "1d924fe4-fef9-43b6-ba31-c160c419a00a_8ba7ead3-d1f8-4808-9675-b585f03e3bd7",
                                "SelectionScope": "SELECTED_VISUALS",
                                "VisualIds": [
                                    "1d924fe4-fef9-43b6-ba31-c160c419a00a_ef4ebf7a-828b-4b14-8131-dd0e12a5d476"
                                ]
                            }
                        ],
                        "FormatType": "CSV"
                    }
                ]
            }
        ],
        "DestinationConfiguration": {
            "S3Destinations": [
                {
                    "BucketConfiguration": {
                        "BucketName": "lf-data-lake-926381664530",
                        "BucketPrefix": "tmp/qs-snapshot-api",
                        "BucketRegion": "us-east-1"
                    }
                }
            ]
        },
        "Parameters": {
            "StringParameters": [
                {
                    "Name": "region",
                    "Values": [
                        "APJ"
                    ]
                }
            ],
            "IntegerParameters": [],
            "DecimalParameters": [],
            "DateTimeParameters": []
        }
    },
    "Arn": "arn:aws:quicksight:us-east-1:123456789012:dashboard/1d924fe4-fef9-43b6-ba31-c160c419a00a/snapshot-job/SaaS-Sales-Order-History",
    "JobStatus": "COMPLETED",
    "CreatedTime": "2023-08-10T13:05:25.384000+00:00",
    "LastUpdatedTime": "2023-08-10T13:06:42.345000+00:00",
    "RequestId": "6ac0ea13-e90f-4985-9c7d-e73d574a2318",
    "Status": 200
}

最終結果確認用のAPIも別途用意されている。

aws quicksight describe-dashboard-snapshot-job-result --aws-account-id 123456789012 --region us-east-1 --dashboard-id 1d924fe4-fef9-43b6-ba31-c160c419a00a --snapshot-job-id SaaS-Sales-Order-History
{
    "Status": 200,
    "Arn": "arn:aws:quicksight:us-east-1:123456789012:dashboard/1d924fe4-fef9-43b6-ba31-c160c419a00a/snapshot-job/SaaS-Sales-Order-History",
    "JobStatus": "COMPLETED",
    "CreatedTime": "2023-08-10T13:05:25.384000+00:00",
    "LastUpdatedTime": "2023-08-10T13:06:42.345000+00:00",
    "Result": {
        "AnonymousUsers": [
            {
                "FileGroups": [
                    {
                        "Files": [
                            {
                                "SheetSelections": [
                                    {
                                        "SheetId": "1d924fe4-fef9-43b6-ba31-c160c419a00a_8ba7ead3-d1f8-4808-9675-b585f03e3bd7",
                                        "SelectionScope": "SELECTED_VISUALS",
                                        "VisualIds": [
                                            "1d924fe4-fef9-43b6-ba31-c160c419a00a_ef4ebf7a-828b-4b14-8131-dd0e12a5d476"
                                        ]
                                    }
                                ],
                                "FormatType": "CSV"
                            }
                        ],
                        "S3Results": [
                            {
                                "S3DestinationConfiguration": {
                                    "BucketConfiguration": {
                                        "BucketName": "lf-data-lake-926381664530",
                                        "BucketPrefix": "tmp/qs-snapshot-api",
                                        "BucketRegion": "us-east-1"
                                    }
                                },
                                "S3Uri": "s3://sample/tmp/qs-snapshot-api/Details_Order history※ Regional Details から対象の Region をクリックして表示。_zjD1aZHBxG_2023_08_10_13_06_39_GMT.csv"
                            }
                        ]
                    }
                ]
            }
        ]
    },
    "RequestId": "e1459178-5330-4c42-801d-d55de5a28f4b"
}
  1. S3にて出力内容を確認
    デフォルトだと、シート名 + タイトル がそのままファイル名になる様子。

中身を確認してみると、パラメータの設定が反映されて出力されている。

以上

Discussion