😺
QuickSight Snapshot Export API を利用してみた
やったこと
- Snapshot Export API を使ってダッシュボードのテーブルチャートのデータをCSV DLした。
- 詳細は こちら のブログを参照
- 出力するテーブルチャート
手順
- 雛形からエクスポートに利用する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"]}]
}
}
}
- 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"
}
- S3にて出力内容を確認
デフォルトだと、シート名 + タイトル がそのままファイル名になる様子。
中身を確認してみると、パラメータの設定が反映されて出力されている。
以上
Discussion