Repeating Sections機能を使用した店舗別売上レポート作成

# はじめに
こんにちは。ジールの@mi_g8です。
2024年 7月、Amazon QuickSightの「ピクセルパーフェクトレポート」に新機能「**Repeating Sections**」が追加されました。
今回はQuickSightでピクセルパーフェクトレポートの新機能「Repeating Sections」を使用した、店舗別の売上レポートを作成してみようと思います。

# ピクセルパーフェクトレポートの概要
まずは以下のAWSサイトを参考に、ピクセルパーフェクトレポートについて簡単に概要を説明します。

https://aws.amazon.com/jp/quicksight/pixel-perfect-reports/

ピクセルパーフェクトレポートでは、レポートとデータエクスポートの作成、スケジュール設定、および共有ができます。

ユースケースとしては、
**金融 - 損益計算書、貸借対照表**
**製造 - 在庫、出荷状況、設備**
**小売 - 運転資本、純利益率、ベンダーへの支払い**
**倉庫 - 運用コスト、時間通りの出荷、総出荷**
が挙げられています。

ユースケースとして挙げられているものの特徴は、データが大量かつ、データを確認するだけでなく**資料としてまとめる必要のあるもの**である印象です。
ピクセルパーフェクトレポートは資料としてまとめる必要のあるケースに適しているということです。



※ピクセルパーフェクトレポートは、QuickSightの中のオプションとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/7fcdbdbc-50ff-be95-da43-bdc122d5802d.png)


管理ボタンを押下すると以下の画面のようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/f5652e25-3180-0e11-c76b-3b3bc9d00d98.png)



# Repeating Sectionsの概要
次に以下のAWSサイトを参考に、**Repeating Sections**について簡単に概要を説明します。

https://aws.amazon.com/jp/about-aws/whats-new/2024/06/amazon-quicksight-building-pixel-perfect-reports-repeating-sections/#:~:text=%E6%9C%AC%E6%97%A5%E3%80%81Amazon%20QuickSight%20%E3%81%AF%E3%80%81%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AA%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AB%20Repeating%20Sections,%E6%A9%9F%E8%83%BD%E3%81%8C%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%81%9F%E3%81%93%E3%81%A8%E3%82%92%E7%99%BA%E8%A1%A8%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%20%E3%81%93%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81QuickSight%20%E4%BD%9C%E6%88%90%E8%80%85%E3%81%AF%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF%E5%86%85%E3%81%AE%201%20%E3%81%A4%E4%BB%A5%E4%B8%8A%E3%81%AE%E3%83%87%E3%82%A3%E3%83%A1%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%80%A4%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%99%E3%82%88%E3%81%86%E3%81%AB%E6%A7%8B%E6%88%90%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82

Repeating Sections 機能とはデータ内の1つ以上のディメンション(項目)の値に基づいてレポートセクションを自動的に繰り返すよう構成できる機能です。

例えば、グラフとテキストを持つある1つのセクションを**地方**ごとに繰り返すとします。
すると、北海道、東北、関東...と**セクション内にあるグラフとテキストを地方ごとに生成**できます。
セクションを繰り返すことで、最小限の労力で、さまざまなグループやカテゴリにわたるデータのカスタムビューを簡単かつ自動的に生成できます。





# ビジネスシーンでの使用例

実際にRepeating Sections機能を使って、レポートを作成します。
Repeating Sections機能がどのように役立つか、手順と共に検証できればと思います。

今回想定するユースケースは以下の通りです。
・データ：全国に展開するドラッグストアの売上データ
・要件：店舗別の日報レポートを全店舗へ一斉送信

今回使用するテストデータは下記になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/dfec7693-19c3-6d53-4d78-182513aba1b4.png)


### ①ピクセルパーフェクトレポートの作成

新規シート作成時に、ピクセルパーフェクトレポートを選択します。
縦向きか横向きかを選ぶことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/cb1a543a-3755-7a74-9f23-abb6a5a51089.png)


好きな用紙サイズを選択することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/793ac76e-982f-d564-238f-aba9acb6462b.png)



### ②セクションの作成

ピクセルパーフェクトレポートシート作成後の初期画面は以下のようになっています。
※新たにセクションを追加する際は、赤枠部分を押すとセクションの追加をすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/460f66d4-ac6b-062a-aa21-d0f5b3bf62e3.png)


セクションにビジュアルを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/c2096e88-5e82-ed7d-d34d-6c95e3553108.png)


セクションから「繰り返しセクションを編集」を押下します。
こちらの設定が今回追加された**Repeating Sections**機能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/9cf16bcc-0b8f-63d8-7e85-0e751158f3f5.png)


レポートの右側に設定画面が出てます。「ディメンションを追加」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/eda504c1-282b-2455-2b4c-2de63cf94fbe.png)


ディメンションが出てきます。ここで繰り返しセクションをどの項目別にするかを選択します。
今回は「店舗名」を選択することで、先程セクション内に作成したビジュアルのままに「店舗別」日報レポートを生成することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/798de8a3-cd0b-0a57-e4fd-88801b0af308.png)


店舗別にページを分けるために、右側設定画面の「各インスタンスの後の改ページ」を有効化します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/c715837c-6d31-8195-7fe1-18cb242a4645.png)


**備考 ～「各インスタンスの後の改ページ」について～**
後ほどレポートをPDF化し送付します。
その際に「各インスタンスの後の改ページ」を有効化していない場合、以下の通り川崎店の日別売上(ページ上部)と横浜店の日別売上(ページ下部)が1ページに混ざってしまいました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/a9be71c3-9efd-14d7-56c0-00f9e9ae6763.png)

2ページ目には横浜店の日別売上はなく、横浜店の日次推移から始まっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/ae2874c5-fc4c-fe25-6a45-7c27ddf49ecb.png)


今回のように店舗別のレポートとして見る場合見づらくなってしまいます。
このような状態を防ぐために、「各インスタンスの後の改ページ」を有効化します。

※その他Repeating Sectionsの詳細な機能は下記記事に説明がありますので割愛します。

https://dev.classmethod.jp/articles/quicksight-reports-repeating-sections/

### ③送付用コンテンツの設定
レポートの作成が完了したので、ダッシュボードとして公開をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/c68ada46-c317-de5f-c8a1-0a4c82fe3c75.png)


ダッシュボード化をすると以下のような画面となります。ここでPDFを生成してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/ba6bda48-97f0-827d-923b-96c995629de0.png)


PDF出力は以下の通り店舗別にページを分けることができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/f4a331a5-8a00-4535-de22-1597a85834f9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/7f809ca7-3cfe-9b05-b262-c5dcc2a7035e.png)





### ④レポート送付の設定


ダッシュボード画面から、スケジュールを追加を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/ce5b3c74-1995-771a-d7bf-d392d1855f42.png)


右側に設定画面が出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/1f089683-3166-353a-3b2d-9dca120f89ad.png)


スケジュール名、説明、ダッシュボードビューの設定をし、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/6f4a5edf-a447-c07e-959b-5f2fe61e638e.png)


コンテンツはPDFに設定します。
※CSVは、Repeating Sections未対応となっていました。(グラフ等があるためと思われます)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/0f23d9af-5753-6e12-71a7-fe6b3226d7d3.png)


日別・週別・月別等どの頻度でレポートを生成して、いつ送信するかを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/64c21c14-6100-5a3c-350a-dd60da1b738c.png)


Eメールの件名や受信者、ヘッダーテキストや本文をあらかじめ設定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/04e2ce2d-41a3-c845-bd95-b5f954b018ed.png)


受信者については、「アクセス権を持つすべてのユーザーに送信」を押下することで、対象ユーザーがドロップダウンで表示されるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/2f0712e0-36b4-a9f0-4667-39a87e93b934.png)


送信します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/c23a5e5d-5f78-b036-51ab-ae1aced6b09d.png)


Eメール受信側の表示は以下のようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/d29c33bb-f33f-f2b3-2c7d-1125b7b93bd4.png)


PDFは以下のようになっていました。各店舗に毎日全店舗分のレポートが届くようにできました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/c6d3cff7-d83d-c6a5-3e2a-f3340db99aab.png)



### ⑤追加検証

先程の検証で、送信先に全店舗分のレポートが届くことは無事確認ができました。
追加検証として、特定の店舗のレポート(例えば自分の所属する店舗分)だけを送信する設定にできないかを調査します。

QuickSightには「行レベルセキュリティ」という設定があり、特定のデータセットに対するアクセス制限を行うことができます。詳細は下記をご参考ください。

https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/restrict-access-to-a-data-set-using-row-level-security.html

まず、行レベルセキュリティ(RLS)を設定するためのCSVファイルを作成・アップロードし、各ユーザーに紐づく店舗データを確認できるかを検証しました。
※CSVファイルにはUserName, GroupName, 店舗名を記載しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/93299fec-dd29-ef4b-b97e-d084d2c8d4aa.png)

再度メールで送信してみると、エラーとなってしまいました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/2d522e38-875b-af4c-bc9d-d0b92aaf1b17.png)

分析画面上では行レベルセキュリティが問題なく動作していましたが、メールでPDF配信するとエラーになりました。
※行レベルセキュリティ(RLS)で設定したアドレスと、配信を行うアドレスは同一のものを使用しています。

上記結果から現時点では、Repeating Sections機能を使ったダッシュボードをPDF配信する際に、QuickSightの行レベルセキュリティ制御は利用できない(対応していない)と想定できます。
店舗ごとにそれぞれレポートを送りたいという要望は起こりえると思いますので今後のアップデートに期待したいです。

次に、今回の更新であるRepeating Sectionsを使った方法ではありませんが、ダッシュボード上にコントロールを配置し、店舗名を制御した状態でスケジュールを保存する方法をとりました。


コントロールで店舗名を制御します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/88aaa7cc-7995-3b9f-8fd5-5bfefc57fec1.png)


店舗ごとにスケジュールを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/48f59146-49f5-fe4b-87d6-1fdfce909d1e.png)


今回は横浜店と川崎店の2店舗で検証します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/5f8b9369-bfdf-8a9d-9f8b-82772044f080.png)


問題なくそれぞれにレポートが配信出来ていることを確認できました。
▽川崎店 (受信者A)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/782eb556-3128-68aa-aaa8-a92b34e89686.png)

▽横浜店 (受信者B)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878530/4128ea02-05f7-3395-f24e-d5b079d10b5d.png)


こちらの方法であれば自分の店舗だけでレポート配信することが可能です。





# おわりに
QuickSightで新機能「Repeating Sections」を使用した、店舗別の売上レポートを作ってみました。

今回想定したケースの「店舗別の日報レポートを**全店舗へ一斉送信**」といった内容、つまり「項目別に分かれたものを資料として1つにまとめる」という内容では新機能「Repeating Sections」は活躍できる機能という所感です。

もしもRepeating Sections機能を使わず同じようなものを作る場合、今回した作業よりも作業数は増えると思います。
従来は追加検証で行ったようなパラメータを設定してグラフの1つ1つを設定し、コントロールでグラフを切り替える必要がありました。
[Repeating Sectionsの概要](https://qiita.com/drafts/5f6eeeb580c9493a8f3d/edit#repeating-sections%E3%81%AE%E6%A6%82%E8%A6%81)で説明されていた、
**セクションを繰り返すことで、最小限の労力で、さまざまなグループやカテゴリにわたるデータのカスタムビューを簡単かつ自動的に生成できます。**
という文は、頷ける機能であると思います。


しかし今回の検証の中では、行レベルセキュリティを設定した送信はうまくいきませんでした。
「店舗別の日報レポートを**店舗別に一斉送信**」といったケースがあった場合には、Repeating Sectionsと行レベルセキュリティと合わせればより簡単にできると思うため、こちらは今後アップデートに期待したいです。


最後に、参考にさせていただいた記事をまとめてご紹介します。





# 参考
https://aws.amazon.com/jp/quicksight/pixel-perfect-reports/

https://aws.amazon.com/jp/about-aws/whats-new/2024/06/amazon-quicksight-building-pixel-perfect-reports-repeating-sections/#:~:text=%E6%9C%AC%E6%97%A5%E3%80%81Amazon%20QuickSight%20%E3%81%AF%E3%80%81%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AA%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AB%20Repeating%20Sections,%E6%A9%9F%E8%83%BD%E3%81%8C%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%81%9F%E3%81%93%E3%81%A8%E3%82%92%E7%99%BA%E8%A1%A8%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%20%E3%81%93%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81QuickSight%20%E4%BD%9C%E6%88%90%E8%80%85%E3%81%AF%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF%E5%86%85%E3%81%AE%201%20%E3%81%A4%E4%BB%A5%E4%B8%8A%E3%81%AE%E3%83%87%E3%82%A3%E3%83%A1%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%80%A4%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%99%E3%82%88%E3%81%86%E3%81%AB%E6%A7%8B%E6%88%90%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82

https://dev.classmethod.jp/articles/quicksight-reports-repeating-sections/

https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/restrict-access-to-a-data-set-using-row-level-security.html

- - -
株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください：

https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area